|
|
|
|
| Autor: Goran Igić,dipl.ing. | |
|
|
Atmel AT89S252
Atmelov mikrokontroler AT89C8252 je
pin-to--pin i software-ski kompatibilan sa Intelovim MCS'51 familijom
mikrokontrolera (8052).
|
|||||||||||||||||||||
|
Atmelov mikrokontroler AT89S8252 je pin-to-pin i software-ski kompatibilan sa intelovom MCS'51 familijom mikrokontrolera (8052). To je komponenta sa malom potrošnjom struje, sa 8 K bytes Flash memorije (CMOS PEROM) za programe, 2 K bytes EEPROM-a za podatke, i serijskim periferijalnim interfejsom (SPI). FLASH I EEPROM se mogu reprogramirati u sistemu preko SPI-porta. |
![]() |
Komponenta poseduje i "watch dog" sa nezavisnim oscilatorem za sprečavanje tzv. "dead lock" tj. zaglavljivanja, kao i "power off flag" koji omogućuje topli i hladni start. Kod pisan za intel 8052 radi i u ovom mikrokontroleru. U pločama se direktno mogu zameniti 8052 sa AT89S8252. Posebna pogodnost ovog čipa je sto se dodatne funkcije mogu programirati i sa klasičnim assembler-ima za MCS51 što je dato u sledećem primeru. Ovaj kontroler pored toga što se može programirati preko spi porta može se programirati i klasičnim paralelnim programerima koji rade sa Vpp= 12 Vdc, standardnim algoritmom.
Korišćenje SPI porta za programiranje mikrokontrolera u samom kolu
SPI (Serial Periferial
Interface),
Obezbedjuje komponentama )koje imaju ovaj port) da komuniciraju velikim
brzinama korišćenjem sinhronizacionih magistrala. Komponente na
magistrali mogu biti MASTER ili SLAVE komponente, u jednom vremenskom
trenutku mogu komunicirati samo jedna MASTER i jedna SLAVE komponenta.
Početak prenosa započinje MASTER komponenta, posle toga podaci putuju
izmedju komponenata naizmenično.
SPI komponente imaju četiri pina koji se označavaju SCK, MOSI, MISO i
SS. Sve komponenete koje komuniciraju moraju imati SCK, MOSI, MISO.
Podaci putuju MASTERtoSLAVE linijom MOSI (Master Out Slave In). Podaci
putuju SLAVEtoMASTER linijom MISO (Master IN Slave OUT). Prenos podataka
se sinhronizuje taktom generisanim od strane MASTER komponente i prenosi
se preko SCK pina. SCK pin kod SLAVE komponente prima takt. SS je Slave
Select pin. Logička nula na ovom pinu selektuje SLAVE komponentu. SPI
se može koristiti za serijski prenos informacija izmedju dva ili više
procesora, ili procesora i neke druge periferije na primer eeproma , ad
konvertora.
SPI je ovde iskorišćen
za punjenje Flash-a i EEProm-a.
Šema je relativno jednostavna i može se iskoristiti u vašim
uredjajima za punjenje obe vrste memorija. Autor šeme je Jakub Jiriček
(mailto:jakub.jiricek@ontime.cz).
Programer se povezuje na LPT1 paralelni port računara. Savetujem da
ukoliko se koristi na bržim računarima dužina paralelnog kabla ne
bude veća od 20 cm.
Da bi bio in circuit programer funkcionisao pored programera potreban je
i software za rad sa ovim programerom. U prilogu su date dve verzije
ovog programa Jakubova pisana u paskalu , i njen sors i ona koja radi
pod Windowsom koju je napisao kolega iz Južne Afrike mailto:fdup@pobox.com.
|
|
Tasteri iz grupe Code
pune programsku FLASH, a tasteri iz grupe Data EEPROM memoriju podataka.
Tasteri Write i Verify otvaraju dialog prozor OPEN gde vi birate
datoteku sa binarnim kodom programa koji upisujete odnosno verifikujete.
|
Tasterom Read otvara se dialog SAVE AS, gde vi birate pod kojim imenom i gde ćete snimiti datoteku. Potrebno je da datoteke imate prevedene u binarni kod. |
|
![]() |
To se može obaviti
sa programom hex2bin (prilog). Nije neophodnop brisati čip pre
upisa! Chip erase briše čip. |
|
Kod je napisan da proveri i kako radi EEPROM i Watch dog. U slučaju ispravnog rada led flash-uje u ritmu sekundare. U slučaju greške upisa u eeprom gori samo LED p0.0. Ova ploča može se koristiti i kao programer za ovaj mikrokontroler u slučaju da ne želite da koristite ISP mogućnosti u vašoj aplikaciji. Program iskompajliran i preveden u bin kod dat je u prilogu. |
|
*Ovaj program radi dobro na sporim računarima
386-33MHz, na bržim treba promeniti timing.
**Ovaj program najbolje radi pod Windows 95 PEE, nije potrebno menjati
timing.
| Program 1: Program za ispitivanje SPI |
| ;program
za ispitivanje SPI wmcon equ 96h ;SFR za WATCHDOG i EEPROM wdten equ 00000001b ;data za dozvolu rada watchdoga wdtrst equ 00000010b ;data za reset watchdoga ps0 equ 00100000b ;bit za odredjivanje max vremena trajanja ps1 equ 01000000b ; " ps2 equ 10000000b ; " eemen equ 00001000b ; bit dozvole pristupa eemwe equ 00010000b ; bit dozvole upisa podatak equ 03h ;promenljiva podatak ; ;glavni deo programa ; start_module: lcall watch_dog orl wmcon,#wdtrst ;reset watchdog mov a,#00h lcall write ;upis u eeprom, provera funkcije upisa mov a,#00h lcall read ;čitanje iz eeproma, provera funkcije čitanja mov r1,a ;u r1 informacija o broju perioda lcall tau ;kasnjene 1 S orl wmcon,#wdtrst ; reset watchdog lab1: mov p0,#00h ;ugasi LED lcall tau ;kasni 1S orl wmcon,#wdtrst ; reset watchdog mov p0,#03h ;upali LED lcall tau ;kasni 1 S orl wmcon,#wdtrst ; reset watchdog djnz r1,lab1 petlja: mov p0,#00h ;zaglavi procesor provera rada watchdog-a ljmp petlja ;end ;========================================= ;postavljanje parametara watchdoga na max vreme trajanja 2 S watch_dog: orl wmcon,#ps0 orl wmcon,#ps1 orl wmcon,#ps2 orl wmcon,#wdten ;uključi watchdog ret ;========================================= ;pp kasnjenje 0.1 sec pp1: clr tr1 clr tf1 anl tmod,#0fh orl tmod,#10h mov th1,#39h mov tl1,#00h setb tr1 lab2: jnb tf1,lab2 clr tr1 clr tf1 ret ;pp kasnjenje 1 sec tau: push 00h mov r0,#03h lab3: lcall pp1 djnz r0,lab3 pop 00h ret ;========================================= ;eeprom read: orl wmcon,#eemen ;dozvola pristupa mov dph,#00h ;adresa viši bajt mov dpl,#01h ;adresa niži bajt movx a,@dptr ;u akumulator prebaci podatak iz eeprom-a xrl wmcon,#eemen ;zabrana pristupa ret ; write: orl wmcon,#eemen ;dozvola pristupa orl wmcon,#eemwe ;dozvola upisa mov dph,#00h ;adresa viši bajt mov dpl,#01h ;adresa niži bajt ;u akumulator stavi podatak koji treba da upišeš u eeprom mov a,#podatak movx @dptr,a ;u eeprom upiši podatak iy akumulatora lcall delay_10_ms ;kašnjenje 10 mS movx a,@dptr ;u akumulator podatak iy eeproma cjne a,#podatak,error ;verifikacija tačnosti upisa xrl wmcon,#eemwe ;zabrana upisa xrl wmcon,#eemen ;zabrana pristupa ret ;obrada greške error: mov p0,#02h ;upali samo LED p0.1 ljmp error ;zaglavi procesor ;kašnjenje 10 mS delay_10_ms: mov r4,#0c8h ; labb: lcall delay_100_us djnz r4,labb ret ;kašnjenje 100 mS delay_100_us: mov r5,#0fh labc: nop djnz r5,labc ret |
| Pročitajte više o ovoj temi | ||||||||
|
|
C o p y r i g h t 1998 mikroElektronika. All Right Reserved. Za sva pitanja obratite se redakciji |