Forum: Mikrocontroller und Digitale Elektronik Atmega88 Timer2 mit externem Takt


von Gregor (Gast)


Lesenswert?

Hallo,
das Programm soll am PB0 ein Rechtecksignal ausgeben, Der Takt dazu wird 
mit einem Frequenzgenerator auf PB6 eingespeist. Ich habe keine Ahnung 
wo mein Fehler liegt. Ich benutze AVR Studio 4, der build läuft ohne 
Warnungen durch. Kann jemand helfen?
1
#include <avr/io.h>
2
#include <avr/interrupt.h>
3
#include <avr/sleep.h>
4
5
#define F_CPU 1000000
6
7
int main (void)                   //Benutzt Timer2, hat 8Bit
8
{ 
9
   DDRB |= (1 << PB0);                // LED an Pin12
10
  DDRB |= (0<<PB6);                // PB6 Eingang
11
   TCCR2B |= (1 << WGM12);               // Timer 2 in CTC mode
12
   ASSR |= (1<<AS2);                 // Ext. Taktquelle an TOSC1
13
   TIMSK2 |= (1 << OCIE1A);             // Enable CTC interrupt
14
   sei();                       // Enable global interrupts
15
  TCCR2B |= ((0<<CS20)|(0<<CS21)|(1<<CS22));    // Prescaler  31,2Hz
16
  OCR2A   = 64;                   // Vergleichswert
17
for (;;) 
18
   {
19
           set_sleep_mode(SLEEP_MODE_PWR_SAVE);
20
        sleep_mode();                         // in den Schlafmodus wechseln
21
    }
22
    }
23
24
ISR(TIMER2_COMPA_vect) 
25
{ 
26
   PORTB ^= (1 << 0);                 // Toggle Pin12
27
}

von Philipp B. (philipp_burch)


Lesenswert?

Gregor schrieb:
> Hallo,
> das Programm soll am PB0 ein Rechtecksignal ausgeben, Der Takt dazu wird
> mit einem Frequenzgenerator auf PB6 eingespeist. Ich habe keine Ahnung
> wo mein Fehler liegt. Ich benutze AVR Studio 4, der build läuft ohne
> Warnungen durch. Kann jemand helfen?

Und dein Problem lautet wie?

>
1
//[...]
2
>

Könnte es sein, dass der Watchdog läuft?
Was passiert, wenn du den Schlafmodus weglässt?

von Hc Z. (mizch)


Lesenswert?

Ein Problem ist jedenfalls, dass Du EXCLK in ASSR nicht setzst.  Du 
stellst also auf Timer-Oszillator statt auf externen Takt.  EXCLK muss 
übrigens gesetzt werden, bevor AS2 aktiviert wird.

von Gregor W. (gregor78)


Lesenswert?

Danke,
mit Watchdog und EXCLK läuft das Programm sowohl mit als auch ohne 
Schlafmodus.

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.