nickrvl Posted December 27, 2008 Share Posted December 27, 2008 Am vreo doua zile de cind ma chinui sa fac un program pe care sa-l incarc in Proteus intr-o simulare.Asta ar fi schema in care presupun ca acel AT90S2313 ar fi compatibil cu Attiny2313.[attachment=1]Clipboard01.jpg[/attachment]Problema e ca nu stiu sa fac un program, dupa ce am citit pe net si pe acest forum am ales sa folosesc AVR Studio dar nu-mi iese nimic, i-mi da erori peste erori, asa ca m-am lasat pagubas si apelez la voi, deci ajutati-ma sa urnesc ledurile alea cumva nu conteaza ce sa faca, sa licare sa clipoceasca sa faca ceva...Deci am AVR Studio deschis cu un nou Project in derulare si mai departe?[attachment=0]Clipboard02.jpg[/attachment] Link to comment
nickrvl Posted December 28, 2008 Author Share Posted December 28, 2008 Chiar nu vrea nimeni sa-mi zica cum urnesc iesirile alea? Am AVR Studio dar nu-mi iese de nici o culoare, comenzile le gasesc in Datasheet la Attiny2313 dar nu inteleg cum sa le folosesc.De exemplu am asta:;A simple AVR example to illustrate output to a port. ;Designed to be executed in a simulator under debug control;This program counts from 0 to 255 (and repeats) outputting;the current counter value to PORTB..cseg ;select current segment as code.org 0 ;begin assembling at address 0.def count = r16 ;Reg 16 will hold counter value.def temp = r17 ;used as a temporary register.equ PORTB = 0x18 ;Port B's output register .equ DDRB = 0x17 ;Port B's Data Direction Register ldi temp,0xFF ;configure PORTB as output out DDRB,temp ldi count,0x00 ;Initialize count at 0lp: out PORTB,count ;Put counter value on PORT B inc count ;increment counter rjmp lp ;repeat (forever)dar in simulare(Proteus) licare ledul si atit, hai sa zicem ca vreau ca ledul sa se aprinda respectiv stinga dupa un anumit timp adica secventa aprins/stins la infinit.Am modificat schema asa:[attachment=0]Clipboard01.jpg[/attachment] Link to comment
Guest Posted December 28, 2008 Share Posted December 28, 2008 Programul pe care il dai ca exemplu ar trebui sa functioneze si anume sa faca LED-ul sa clipeasca la nesfarsit. Simulat cu AVR Studio merge cu oricare uC (microcontroller). Daca vrei sa faci montajul fizic trebuie sa ai grija cum programezi fuse bits - adica niste biti care specifica tipul oscilatorului, daca folosesti pinul de reset, etc. Cu Proteus nu am lucrat asa ca nu stiu daca tine cont sau nu de fuse bits. Nu se intelege ce vrei: -sa vezi daca cele 2 uC sunt compatibile? -sa inveti asamblare? -sa inveti Proteus? -sa faci un montaj (real nu simulat) cu un uC si un LED care sa clipeasca? sau ce vrei de fapt? Link to comment
nickrvl Posted December 28, 2008 Author Share Posted December 28, 2008 Programul pe care il dai ca exemplu ar trebui sa functioneze si anume sa faca LED-ul sa clipeasca la nesfarsit. Simulat cu AVR Studio merge cu oricare uC (microcontroller). Daca vrei sa faci montajul fizic trebuie sa ai grija cum programezi fuse bits - adica niste biti care specifica tipul oscilatorului, daca folosesti pinul de reset, etc. Cu Proteus nu am lucrat asa ca nu stiu daca tine cont sau nu de fuse bits. Nu se intelege ce vrei: -sa vezi daca cele 2 uC sunt compatibile? -sa inveti asamblare? -sa inveti Proteus? -sa faci un montaj (real nu simulat) cu un uC si un LED care sa clipeasca? sau ce vrei de fapt? Am scris in primul post "Problema e ca nu stiu sa fac un program..." sau hai sa lasam Proteus la o parte si ne concentram asupra programului care trebuie facut cu AVR Studio. Intradevar acum ledul clipeste la nesfirsit insa cum il fac sa stea aprins 1 secunda, stins 1 secunda si tot asa la infinit. Cum umblu la timp? Asta ar fi o problema dar cel mai mult m-ar interesa cum fac ca atunci cind primesc un impuls/5V la pinul 2(PD0) sa scoata la pinii 12(PB0), 13(PB1), 14(PB2), 15(PB3) 5V pe rind si in ordinea pe care am dat-o ca sa pot roti un steeper. Link to comment
Guest Posted December 28, 2008 Share Posted December 28, 2008 Exista 2 moduri de a face temporizari:- temporizari software- temporizari hardwareLa prima metoda ideea este ca fiecare instructiune de program dureaza un anumit timp pana este executata, durata exacta depinde de tipul instructiunii si de ceasul uC. In program exista posibilitatea sa repeti de un anumit numar de ori o instructiune sau un grup de instructiuni, adica sa faci o bucla de program. In felul asta obtii o temporizare.La a doua metoda folosesti timer-ele din interiorul uC. Astea sunt niste numaratoare implementate hardware (cu bistabile, nu software din program) care se afla in uC. Timer-ele pot fi pornite/oprite/citite/scrise din program. In felul asta folosind intreruperi sau citind periodic timer-ul poti obtine temporizari.Ai mai scris pana acum vreun program, pentru uC sau calculator?Ai mai lucrat cu uC?Ai inteles exemplul de program pe care l-ai folosit?In final vrei sa comanzi un motor pas cu pas sau asta este doar un pretext ca sa inveti uC? Te intreb ca sa stiu cam cat de amanuntit sa explic. Link to comment
nickrvl Posted December 28, 2008 Author Share Posted December 28, 2008 Exista 2 moduri de a face temporizari:- temporizari software- temporizari hardwareLa prima metoda ideea este ca fiecare instructiune de program dureaza un anumit timp pana este executata, durata exacta depinde de tipul instructiunii si de ceasul uC. In program exista posibilitatea sa repeti de un anumit numar de ori o instructiune sau un grup de instructiuni, adica sa faci o bucla de program. In felul asta obtii o temporizare.La a doua metoda folosesti timer-ele din interiorul uC. Astea sunt niste numaratoare implementate hardware (cu bistabile, nu software din program) care se afla in uC. Timer-ele pot fi pornite/oprite/citite/scrise din program. In felul asta folosind intreruperi sau citind periodic timer-ul poti obtine temporizari.Ai mai scris pana acum vreun program, pentru uC sau calculator?Ai mai lucrat cu uC?Ai inteles exemplul de program pe care l-ai folosit?In final vrei sa comanzi un motor pas cu pas sau asta este doar un pretext ca sa inveti uC? Te intreb ca sa stiu cam cat de amanuntit sa explic. Singurul limbaj de programare cu care am avut de a face a fost Visual Basic, cu ajutorul caruia am reusit sa fac ceva pe portul paralel. Cu Mc nu am lucrat nici odata, ce am invatat despre ele a fost in zilele astea libere de craciun asa ca sint mai mult decit novice. Prin sertare am citeva Attiny2313 poate poate reusesc sa fac ceva cu ele vreodata dar deocamdata ma rezum la partea de soft pe care sper sa o pot simula in Proteus. Link to comment
Guest Posted December 28, 2008 Share Posted December 28, 2008 In cazul asta ti-as recomanda BASCOM-AVR. Este un compilator de Basic pentru uC de tip AVR. Ambele uC despre care vorbeai sunt din familia AVR. Basic seamana destul de bine cu VB cu care spui ca ai mai lucrat. BASCOM are si varianta gratuita (demo) care este complet functionala dar pentru programe mai mici de 4K. Pentru tine asta nu este o problema, Attiny2313 are doar 2K. Il poti download-a de aici, vezi in josul paginii asteia: http://www.mcselec.com/index.php?option ... &Itemid=54 Dupa parerea mea BASCOM este cel mai bun pentru incepatori si deosebit de productiv. Instaleaza-l si uita-te prin help-uri. Deschide cateva exemple (are incluse multe exemple de programe gata facute) incearca sa intelegi cam ce face fiecare si apoi modifica-le dupa nevoile tale. Incepe cu lucruri cat mai simple, de exemplu cum sa aprinzi/stingi un LED. Printre multe altele are si functii de temporizare. De exemplu in BASCOM o temporizare de 1 secunda se face foarte simplu cu urmatoarea instructiune: Waitms 1000 adica asteapta 1000 de milisecunde Link to comment
danzup Posted December 29, 2008 Share Posted December 29, 2008 In cazul asta ti-as recomanda BASCOM-AVR. Este un compilator de Basic pentru uC de tip AVR. Ambele uC despre care vorbeai sunt din familia AVR. Basic seamana destul de bine cu VB cu care spui ca ai mai lucrat. BASCOM are si varianta gratuita (demo) care este complet functionala dar pentru programe mai mici de 4K. Pentru tine asta nu este o problema, Attiny2313 are doar 2K. Il poti download-a de aici, vezi in josul paginii asteia: http://www.mcselec.com/index.php?option ... &Itemid=54 Dupa parerea mea BASCOM este cel mai bun pentru incepatori si deosebit de productiv. Instaleaza-l si uita-te prin help-uri. Deschide cateva exemple (are incluse multe exemple de programe gata facute) incearca sa intelegi cam ce face fiecare si apoi modifica-le dupa nevoile tale. Incepe cu lucruri cat mai simple, de exemplu cum sa aprinzi/stingi un LED. Printre multe altele are si functii de temporizare. De exemplu in BASCOM o temporizare de 1 secunda se face foarte simplu cu urmatoarea instructiune: Waitms 1000 adica asteapta 1000 de milisecunde Exact acelasi sfat vroiam sa-ti dau si eu !Fa asa cum a zis RoGeorge ... Cu Bascom poti face exact aceleasi lucruri ca si in assembler sau in C !!!! Concentreaza-te pe un singur limbaj pe care sa-l inveti perfect : nu conteaza pe unde mergi , important este sa ajungi la capat ! Programul in bascom este simplu: '--------------------------------------------------------------------------- Configure Portb.0 = output 'sau mai larg definit tot portul ca output : Configure Portb = output Do Set Portb.0 'Ai facut 1 logic pinul PB0 Waitms 1000 ' Astepti 1000 ms Reset Portb.0 'Ai facut 0 logic pinul PB0 Waitms 1000 ' Astepti 1000 ms Loop End '----------------------------------------------------------------------------- Link to comment
nickrvl Posted December 29, 2008 Author Share Posted December 29, 2008 Ok baieti, in primul rind multumesc la amindoi pentru ajutor, credeam ca inebunesc, de dinainte de craciun de cind strig dupa ajutor pe doua forumuri si nu raspunde nimeni, probabil ca a plecat toata lumea in concediu, o sa descarc Bascom sa vedem daca ma descurc cu el, teoretic ar trebui.Probabil ca stie sa transforme si in *.hex, nu? Link to comment
Administratori Badman Posted December 29, 2008 Administratori Share Posted December 29, 2008 Stie sa transforme in HEX, eu sunt habarnist total si in Bascom am reusit sa fac cate una alta. E cel mai bun dupa parerea mea pentru incepatori. Link to comment
nickrvl Posted December 29, 2008 Author Share Posted December 29, 2008 Slava cerului, chiar merge, in doi timpi si trei miscari am facut asta care i-mi clipoceste doua leduri si pe care l-am si simulat in Proteus care deasemenea merge:$regfile = "ATtiny2313.DAT"$crystal = 1000000Config Portb = OutputReset Portb.0Reset Portb.1DelaySet Portb.0Waitms 500DoToggle Portb.1Toggle Portb.0Waitms 500LoopEndSint constient ca problemele in lumea Mc-urilor deabea incep pentru mine, insa e un pas inainte totusi ca am reusit sa misc unul.Multumesc inca o data la toata lumea. Cu stima... Link to comment
nana Posted December 30, 2008 Share Posted December 30, 2008 Salut Proteusul recunoaste doar Hex-ul MCU-lui nu tine cont de fuse biti... singuru lucru de care tine cont sunt pull-up si pull-down rezistori. Frecventa de lucru a MCu-lui se seteaza din tab-ul de configurare al dispozitivului. nu conteaza ce cristal pui la exterior. in rest vezi sa folosesti dispozitive care sunt animate(adica au in biblioteci incluse partea de model SIM) degeaba pui o piesa care doar are numele, pini si pad-ul ca biblioteca ca ea nu iti va oferi nici un raspun in comportarea electrica. Iti urez bafta si imi place topicul tau pt ca si eu am inceput sa invatz MCu-uri in aceasta maniera si pot spune ca am reusit insa ca mediu de programare folosesc CODE VISION AVR. dupa mine e cel mai user frendly. Link to comment
nickrvl Posted December 30, 2008 Author Share Posted December 30, 2008 Salut Proteusul recunoaste doar Hex-ul MCU-lui nu tine cont de fuse biti... singuru lucru de care tine cont sunt pull-up si pull-down rezistori. Frecventa de lucru a MCu-lui se seteaza din tab-ul de configurare al dispozitivului. nu conteaza ce cristal pui la exterior. in rest vezi sa folosesti dispozitive care sunt animate(adica au in biblioteci incluse partea de model SIM) degeaba pui o piesa care doar are numele, pini si pad-ul ca biblioteca ca ea nu iti va oferi nici un raspun in comportarea electrica. Iti urez bafta si imi place topicul tau pt ca si eu am inceput sa invatz MCu-uri in aceasta maniera si pot spune ca am reusit insa ca mediu de programare folosesc CODE VISION AVR. dupa mine e cel mai user frendly.Salut,Proteusul recunoaste doar Hex-ul MCU-lui nu tine cont de fuse biti... e bine de stiut numai ca eu nu prea stiu inca ce e aia "fuse biti" trebuie sa fac rost de timp si sa mai citesc cite ceva despre Mc-uri. In cea ce priveste frecventa, asa este, se seteaza din Proteus, apropos la ce foloseste frecventa la Mc, este vorba de numar de operatii/sec? Pun intrebari timpite nu? Am observat "chestia" cu animatia dupa multe ore pierdute cu el(Proteus). O sa ma uit un pic si la CODE VISION AVR, cred ca o sa fie la fel ca la programele de proiectare PCB o sa trec prin toate si o sa-mi dau seama ca nici unul nu e perfect, deocamdata cred ca o sa fie BASCOMAVR pentru ca-l inteleg cit de cit. Multam de sfaturi. Link to comment
nickrvl Posted December 31, 2008 Author Share Posted December 31, 2008 Si, au inceput problemele.Vreau ca atunci cind aplic o tensiune (3-5V) la pinul PORTD.0 pinul PORTB.0 sa se deschida.Ce e gresit aici?$regfile = "ATtiny2313.DAT"$crystal = 1000000Config Portb = OutputConfig Portd = InputDo If Portd.0 = 1 Then Set Portb.0Loop Link to comment
Guest Posted December 31, 2008 Share Posted December 31, 2008 Merge, dar odata aprins nu se mai stinge niciodata! Link to comment
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now