Vizitator alpopa Postat Mai 23, 2006 Partajează Postat Mai 23, 2006 Salut, am un AT89S52 pe care am "reushit" sa-l programez (cu schema shi programul lui nenea Asim Khan, sau cam asha ceva). De ce zic ca am "reushit" ?! Pentru ca scriu hex-ul, iar apoi, dupa ce shterg bufferul, citesc de pe controler. Hex-ul meu cu cel citit sunt identice. De aici am dedus ca microcontrolerul a fost programat.Problema e ca atunci cand il pun pe o placutza de test, foarte simpla (cu 2 leduri legate la 2 ieshiri), NU IMI FACE NIMIC. Nu intzeleg ce poate fi. Ma gandesc pe de o parte ca probabil hex-ul nu e bun (deshi am incercat programare in Batronix shi in Keil), iar pe de alta parte ca e ceva cu quartz-ul. Intrebarea mea este : DACA AM PROGRAMAT CU UN QUARTZ DE 4 Mhz ARE CEVA DACA PE SCHEMA DE TEST FOLOSESC ALT QUARTZ (unul de 3,57) ?Ce parere avetzi ?!PS: daca avetzi alte compilatoare trimitetzi-mi shi mie un hex ptr AT89S52 care sa faca o chestie simpla (gen sa puna 1 pe o ieshire shi 0 pe celelalte), sa pot verifica daca hex-urile mele sunt dubioase... Link spre comentariu
nosferatu Postat Iunie 29, 2006 Partajează Postat Iunie 29, 2006 Salutare.Exact aceasi lucru mi s-a intamplat mie acum. Eu cred ca softu' nu programeaza bine.Bafta! Link spre comentariu
one Postat Iunie 29, 2006 Partajează Postat Iunie 29, 2006 Cred ca merge si cu cuart de 3.57. Link spre comentariu
Laci Postat Iunie 29, 2006 Partajează Postat Iunie 29, 2006 Incearca programatorul asta, http://www.hpinfotech.ro./html/cbavr.htm Are si o versiune de evaluare. Link spre comentariu
nosferatu Postat Iunie 29, 2006 Partajează Postat Iunie 29, 2006 Multumesc mult! Raman dator!;) Link spre comentariu
nosferatu Postat Iulie 1, 2006 Partajează Postat Iulie 1, 2006 Am un AT89S52 care efectiv nu vrea sa porneasca sub nici o forma..Am scris tot felul de programele care sa clipeasca led-uri dar nimic..absolut nimic. Am conectat la uC alimentarea(5V), masa, cristalul si am legat EA/VPP-ul la 5V. Am scris programul(oricare dintre ele), am deconectat uC de la alimentare, am scos mufa ISP si l-am reconectat. Toate aceste operatii le-am facut cu toate programele downloadate sau facute de mine.Unul dintre ele este urmatorul: jmp begindelay: mov b, #200 strt: mov a,#200 st_del: dec a jnz st_del dec b mov a, b jnz strt jz exit exit:ret begin: clr a clr p1.0 clr p1.1 mov p1,#1 call delay call delay mov p1,#2 call delay jmp begin endVa rog sa ma ajutati ca am ajuns sa-mi creasca peri albi.Multumesc! Link spre comentariu
Laci Postat Iulie 1, 2006 Partajează Postat Iulie 1, 2006 Din pacate nu sunt familiarizat cu AT89S52, am citit din PDF-ul de la Atmel, dar nu scrie multe...Poate iti spun ceva ce stii deja, dar here it goes:) : Ai initializat stack pointerul la sfarsitul de ram?Eu am ceva experienta cu AVR Risc-uri, si este o eroare tipica sa uti sa initializezi stack-ul si controlerul se reseteaza incontinuu. Link spre comentariu
nosferatu Postat Iulie 1, 2006 Partajează Postat Iulie 1, 2006 Iti dai seama ca experienta mea e aproape nula cu ATMEL si nu am idee cum si de ce se initializeaza stiva. Poti sa-mi dai un exemplu?Eu am citit cateva exemple(pe care le-am si scris in uC) si tot nimic.Multumesc. Link spre comentariu
Laci Postat Iulie 1, 2006 Partajează Postat Iulie 1, 2006 Eu am facut asa pt. atmel.include "m8def.inc".....DEF temp =r17 ;General use temporary register.....CSEG.ORG 0 rjmp RESET ; Reset rjmp START ; External Interrupt 0 rjmp SYNC ; External Interrupt 1 reti ; Timer2Comp reti ; Timer2Ovf reti ; Timer1Capt reti ; Timer1CompA reti ; Timer1CompB reti ; Timer1Ovf rjmp PWM_UPDATE ; Timer0Ovf reti ; SpiStc reti ; UsartRxc reti ; UsartUdre reti ; UsartTxc reti ; Adc reti ; Ee_Rdy reti ; Ana_Comp reti ; Twi reti ; Spm_RdyRESET: cli ; Disable all Interrupts ;-------Stack Init----->; Stack Pointer Initialization ldi temp,high(RAMEND) out SPH,temp ldi temp,low(RAMEND) out SPL,temp ; Stack setup(End of RAM);-------Stack Init-----<....seiRAMEND este definit in m8def.incce si vezi inainte de RESET: este interrupt vector-ulprobabil ca instructiunile nu sunt compatibile...Deocamdata versiune de AVRStudio pe care il am nu stie pe:AT89S52 :)daca resusec sa fac rost de o veriune mai noua ,incerc si eu o seqventa de cod... Link spre comentariu
nosferatu Postat Iulie 1, 2006 Partajează Postat Iulie 1, 2006 A..adica org 0x00..Am scris si instructiunea asta dar in exemplu pe care l-am dat, am scos-o de teama ca sa nu fie tocmai ea problema.. :rolleyes: Link spre comentariu
Laci Postat Iulie 1, 2006 Partajează Postat Iulie 1, 2006 .ORG nu este instructiunecu ala specifici de unde incepe programul tau din Flash, poate din default se incarca de la 0x00, nu stiu sigur Link spre comentariu
mitescu Postat Iulie 2, 2006 Partajează Postat Iulie 2, 2006 Vedeti ca faceti o confuzie, AT89S52 NU este AVR. El are configuratia MCS51, unde stiva este initializata de sistem (nu trebuie sa te ocupi de ea) la adrressa 7. Ea (stiva ) se incrementeaza , spre deosebire de AVR-uri. Pornind de la aceasta confuzie , s-ar putea ca "defectul" sa fie de la reset, care este invers decat la avr. rezistenta la masa si C-ul la VCC. Configuratia MCS51 nu are resetul negat cum il au la AVR.Daca in urma programarii , verificarea este OK, asta (reset) ar fi o explicatie. Link spre comentariu
Laci Postat Iulie 2, 2006 Partajează Postat Iulie 2, 2006 Am si zis ca poate este diferit...N-am stiut ca la MCS51 nu trebuie initializat stiva, acum stiu:) Link spre comentariu
one Postat Iulie 2, 2006 Partajează Postat Iulie 2, 2006 N-am stiut ca la MCS51 nu trebuie initializat stiva, acum stiu:)Nu e obligatoriu sa o initializezi, dar daca vrei ca prima adresa sa fie alta, o poti modifica. Important este sa ai grija sa lasi un numar suficient de mare de octeti la dispozitie, pentru stiva. Link spre comentariu
nosferatu Postat Iulie 2, 2006 Partajează Postat Iulie 2, 2006 Nu e obligatoriu sa o initializezi, dar daca vrei ca prima adresa sa fie alta, o poti modifica. Important este sa ai grija sa lasi un numar suficient de mare de octeti la dispozitie, pentru stiva.Pana la detaliile "amanuntite" cu stiva, problema este ca nu pot nici macar sa aprind un LED pe oricare port ar fi..La PIC am scris programul si a mers din prima..aici sunt in ceata pentru ca nu ma plang ca nu merge un program cu n functii ci nu merge nici macar 2-3 instructiuni. Microprocesorul e bun ca l-am testat punand EA/VPP-ul la masa si a intrat in starea de citire din memoria externa de pe porturile 0 si 2. Acolo am pus in loc de memorie, un led si se aprinde intermitent si haotic. Link spre comentariu
Postări Recomandate
Creează un cont sau autentifică-te pentru a adăuga comentariu
Trebuie să fi un membru pentru a putea lăsa un comentariu.
Creează un cont
Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!
Înregistrează un nou contAutentificare
Ai deja un cont? Autentifică-te aici.
Autentifică-te acum