AVR znovu - pomoc

Jozef Maslík jozefmaslik
Středa Březen 17 14:30:02 CET 2004


Zdravim !

Ak sa Vam nahodou podarilo naprogramovat RSTDISBL tak pomoze len
vysokonapetove programovanie.

Ak ste naprogramovali externe hodiny (RC clanok, kristal,...), je
potrebne aby boli aplikovane (zapojene) aj pocas programovania.

Ste si isty ze ste nadsavili fuse bity v ponyprogu spravne? PonyProg je
zmetok (moj nazor ;-) ). Aplikuje bity tak, ze zaskrtnute znamena
programovat a to znamena ze tam zapise 0. Cize ak chcete pouzit interny
oscillator napr. startovaci cas 6CK, je to CKSEL3..1 0100 - v ponyprogu
zaskrtnete CKSEL3, CKSEL1, CKSEL0, cize nezaskrtnute ostane CKSEL2.
Teda aj RSTDISBL musi byt nezaskrtnute, inak si pripravte vysokonapatovy
programator.

Ak sa Vam podarilo len zle nadstavit CKSEL, pomoze mu vnutit hodiny do
pinu PB3 (XTAL1) (pocas programovania ;-) ). Exzistuju bezne volne
dostupne programatory na paralelny port ktore maju aj vystup pre hodiny.

S RC oscilatorom mam dobre skusenosti, len je dobre sa pohrat s R a C
hodnotami, vdaka toleranciam hodnot tabulka udana v datasheete nesedi.
Je mozne aj "pretaktovanie".

K programu:
Nevadi ze ste na zaciatku neosetrili prerusenia, je mozne hned zacat
program ale nesmiete pouzivat prerusenia, cize povolit prerusenia - flag
I - global interrupt enable. Standardne je v nule - zakazane prerusenie
- inak nadstavuje sa sei a nuluje cli - avsak nie je potrebne pouzit
cli, ako som uz napisal standardne (po resete) je nulova.
Bolo tu spomenute aj vypinanie napajania pre komparator (sbi ACSR, ACD -
vypnutie napajania) aby nedoslo k preruseniu, to je vsak nezmysel (nema
vyznam) pretoze v danom registry (ACSR) je bit pre povolenie prerusenia
a ten je standardne v nule - zakazane prerusenie. Ak by aj bol povoleny,
nic to neznamena pokym nenadstavite flag I (sei) - nenastane ziadne
prerusenie.
Ak sledujete diodu na pine len vizualne, tak ju neuvidite blikat - treba
pouzit osciloskop alebo vsunut nejaky ten oneskorovaci ciklus medzi cbi
PORTB, PB0 a sbi  PORTB, PB0.
Napr:

.def tmp = r20

start:
 ldi	tmp,(1<<PB1)|(1<<PB0)
 out	DDRB,tmp

loop:
 sbi  PORTB, PB0


;vytvorenie oneskorenia - pri clk 1MHz viac ako 255us
 ser tmp
delay1:
 dec tmp
 brne delay1

 cbi  PORTB, PB0

;vytvorenie oneskorenia - pri clk 1MHz viac ako 255us
 ser tmp
delay2:
 dec tmp
 brne delay2

 rjmp loop

S pozdravom Jozef Maslik.

-----P?vodn? zpr?va-----
Od: owner-hw-news@list.gin.cz [mailto:owner-hw-news@list.gin.cz] za
u?ivatele Ing. Locker Martin
Odesl?no: 20. febru?ra 2002 16:44
Komu: hw-news@list.gin.cz
P?edm?t: AVR znovu - pomoc

Tak po dvou dnech marneho snazeni se mi podarilo uvest AVR ATtiny12
dostavu,kdy ji odmita programator.
Nedarilo se mi ji rozjet s internim oscilatorem, tak jsem chtel 
zkusit externi RC clanek a po naprogramovani fuse bitu jiz 
nekomunikuje. Nevite co se mohlo stat (nemohl se omylem naprogramovat 
bit RSTDISBL)?
Uz mam podezreni, ze problem je v PonyProgu. Mam ho cerstve 
postaveny a zdalo se, ze funguje bez problemu. Write i read fungoval.
Nevite co byl tam mohlo byt spatne, kdyz se to tvari pri programovani 
dobre, ale vysledek zadny?

			Dekuji za jakoukoli pomoc

Martin Locker
VOS a SPS Rychnov nad Kneznou
e-mail: locker@vosrk.cz





Další informace o konferenci Hw-list