Sari la conținut
ELFORUM - Forumul electronistilor

AT89S52 - probleme la test


Vizitator alpopa

Postări Recomandate

Vizitator alpopa

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
  • 1 lună mai târziu...
  • Răspunsuri 16
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

  • nosferatu

    7

  • Laci

    5

  • one

    2

  • mitescu

    1

Top autori în acest subiect

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 end

Va rog sa ma ajutati ca am ajuns sa-mi creasca peri albi.Multumesc!
Link spre comentariu

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

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

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

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

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

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

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

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 cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum



×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări