Forum: Mikrocontroller und Digitale Elektronik Problem mit Timer2 und Uhrequarz


von Ralf (Gast)


Lesenswert?

Hallo!
Mein C Code schaut so aus: ( Verwendet wird ein ATMega8L8 )

#include <avr/io.h>
#include <avr/signal.h>
#include <avr/interrupt.h>

uint8_t foo;

SIGNAL (SIG_OUTPUT_COMPARE2A)
{
        foo++;
        if ( foo == 255 )
               {PORTB--;foo=0;}
        if ( PORTB == 0 )
               PORTB = 0xff;
}

int main(void){
        ASSR  |= (1<<AS2);
        TCCR2 |= (1<<CS22);
        TIMSK |= (1<<OCIE2);
        TIFR  |= (1<<OCF2);
        OCR2 = 230;
        TCNT2  = 0x00;
        DDRB=0xff;
        PORTB=0xff;
        foo=0;
        sei();

}

An TOSC1/2 hängt ein 0,032768MhZ Uhrenquarz und CKLOPT Fuse ist
aktiviert. Bewirken soll der Code, dass von PORTB nach einer gewissen
Zeit immer 1 abgezogen wird. Das Uhrenquarz ist wie in Fig11 im atmega
8 Datenblatt angeschlossen. Als System Clock verwende ich den
Calibrated Internal RC Oscillator mit 4MhZ. Geb ich der Schaltung strom
funktioniert auch alles, aber es funktioniert auch, wenn das Uhrenquarz
nicht angeschlossen ist :-) . Deshalb denk ich, dass die Timer/Couter
Clock Source des Timer2 nicht das Uhrenquarz ist. Ich hab schon im
Datenblatt nachgeschaut ob ich irgendwelche Register falsch gesetzt
habe, habe aber nichts gefunden.

Danke im Voraus!

Ralf

von mthomas (Gast)


Lesenswert?

Bei ATmega8 und "Uhrenquarz" auch das Errata am Ende des Datenblatts
beachten. Weiterhin ist die Initialsierung nicht ganz ok. Ist im
Datenblatt als "Checkliste" beschrieben. Vielleicht hilft der Code
von http://www.siwawi.arubi.uni-kl.de/avr_projects/lcdclock/index.html
etwas weiter, ist zwar fuer ATmega16 aber zeigt hoffentlich "die
Idee".
Martin

von Ralf (Gast)


Lesenswert?

Danke erst mal für die schnelle Antwort!

Ich geh mal deinen Code durch und versuch aus diesen schlau zu werden.

Ralf

von Ralf (Gast)


Lesenswert?

Ich hab anscheinend deinen Code richtig interpretiert. Es scheint jetzt
richtig zu funktionieren. Ich hab mal den µc 10 Minuten mitgemessen und
es gibt "keine" Abweichungen.

Danke!

Ralf

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.