Software UART på Atmel ATTiny15 mikroprocessor

Hej

Jeg har fornylig erhvervet mig et Atmel STK500 udviklingssæt til AVR-mikroprocessorerne.

Jeg har forsøgt at få Atmels Application Note AVR305 (Half Duplex Compact Software UART) til at virke på en ATTiny15:

formatting link

For at få den til at virke på ATTiny15 har jeg

- ændret includefilen til "tn15def.inc"

- ændret alle referencer fra PORTD til PORTB (jeg bruger stadig bit 0 og bit 1 til at modtage hhv sende)

- prøvet forskellige "b"-værdier udregnet v.hj.a. formlen i noten. Jeg har f.eks. prøvet 2400 bps og 9600 bps og jeg har sat min terminal op til samme indstillinger.

Jeg kan sagtens få det til at virke på en AT90S8515 blot ved at initialisere dens stack pointer!

Men på ATTiny15 duer det ikke... Når mikroprocessoren burde echo'e tegn sendt fra terminalen, kommer der enten garbage eller ingenting tilbage til terminalen.

ATTiny15 har en indbygget 1,6MHz clock implementeret med en RC-tidskonstant. Kan mine problemer skyldes, at clock'en kører langt ved siden af de 1,6MHz?

Jeg håber I kan hjælpe!

mvh Nils Emil P. Larsen

--------------------------- My reply-address is valid. Min svar-adresse er gyldig.

Reply to
Nils Emil P. Larsen
Loading thread data ...

Så lang tid du husker at programmere kalibreringsfaktoren er den indbyggede oscillator nøjagtig nok.

Jeg har lavet mit eget sæt serial rutiner der kører 9600 baud og 8 bit på en ATtiny15 og de virker fint også selvom jeg lægger MPU'en i fryseren.

Reply to
HKJ

Hej HKJ

Aha! Så jeg skal altså bare skrive den korrekte værdi til OSCCAL-registeret, fx.

ldi r16, ?? out OSCCAL, r16

hvor '??' er den værdi jeg kan aflæse som "read oscillator calibration byte" i AVR Studio? Eller kan det gøres smartere, så der ikke skal være forskillige programmer til forskellige ATTiny15?

Hvad sker der, hvis der ikke skrives noget til OSCCAL?

Mange tak for hjælpen!

mvh Nils Emil P. Larsen

PS. Jeg kan først afprøve det på tirsdag.

--------------------------- My reply-address is valid. Min svar-adresse er gyldig.

Reply to
Nils Emil P. Larsen

Korrekt.

Men jeg glemte at skrive en ting: Du skal have en stabil 5 volt forsyning for at kalibreringsfaktoren virker korrekt.

Hvis du gemmer værdien på en memory lokation (istedet for i en instruktion), så kan AVR studio selv udskifte værdien, med den korrekte.

Den kører på en default værdi og på ATtiny15 er det "bare" en fast værdi, på de helt nye MPU'er er default værdien den korrekte kalibreringsværdi.

Reply to
HKJ

Hej

Det er forhåbentlig ikke noget problem på nuværende trin (stadig i STK500).

Men det virker perfekt nu, efter jeg tilføjede de to linjer med OSCCAL!

Tusind tak.

mvh Nils Emil P. Larsen

Reply to
Nils Emil P. Larsen

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.