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.
Taster Lock Bits zaključava memorije pod uslovima zadatim postavljanjem Lock Bitova. Da bi proverio kako radi programer može se napraviti eksperimentalno kolo (prilog) na pr. na pinove p0.0 i p0.1postavite LED

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.

Program Blast8252

 

*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
AT89C2051 uvod 
Programiranje Atmelovog mikrokontrolera AT89C2051 
Mikrokontrolerski regulator brzine i smera DC motora 
Programator Atmel mikrokontrolera 

C o p y r i g h t  1998 mikroElektronika. All Right Reserved. Za sva pitanja obratite se redakciji