Timer1 beim ATMega 16

Gast #715715
Lesenswert?

Hallo

Ich bekomme meinen Timer nicht zum laufen.
Vielleicht habe ich einen Denkfehler.
Habe schon mit diversen Beispielen verglichen aber nichts gefunden.
Kann mir jemand drüberschauen.
ATMega 16 mit interner Taktgeber 1MHz.
Ich bekomme keine einzige Flanke auf PIN 6
PIN 7 hat ein Signal.



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


int main (void) {

   DDRA  = 0x00;    //Port A als Input schalten
  DDRB  = 0x00;    //Port B als Input schalten
     DDRC  = 0xff;               //Port C auf Output schalten
  DDRD  = 0xff;               //Port D auf Output schalten


     PORTC = 0x00;         //Port C löschen
  PORTD = 0x00;    //Port D löschen

//Timer
TCNT1H = 0xFC;
TCNT1L = 0x18;
TCCR1B |=(0<<CS12);           //Einstellung des Vorteiler
TCCR1B |=(1<<CS11);
TCCR1B |=(0<<CS10);
TIMSK |=(1<<TOIE1);    // Timer1 Interupt freigeben

sei();        //Globale Interrups zulassen


   while(1)
   {
      PORTC ^= (1<<PB7);
   }

   return 0;
}



SIGNAL (SIG_OVERFLOW1)    //Interuptvektor für Timer0
{
cli ();        /Gloale interupt deaktivieren
TCNT1H = 0xFC;
TCNT1L = 0x18;
sei();


PORTC ^= (1<<PB6);
}
#715722
Lesenswert?

Wolf4124 wrote:
> PORTC ^= (1<<PB6);
Auch wenn es an der Funktion nichts ändert: Schreib rechts entweder 
"PC6" oder einfach nur "6" hin. Gibt sonst nur Verwirrung!

Das cli() und sei() im Interrupt Handler gehört da gar nicht hin, das 
macht der Controller automatisch.

> TCCR1B |=(0<<CS12);
Und diese Anweisung macht gar nichts. Ein ODER mit einer Null hat 
keinerlei Effekt. Wenn Du das Bit löschen willst, musst Du eine andere 
Verknüpfung benutzen (siehe AVR-GCC-Tutorial und 
Bitmanipulation).

SIGNAL wird zwar aktuell von WINAVR noch unterstützt, ist aber veraltet 
und sollte nicht mehr verwendet werden (siehe AVR-GCC-Tutorial).
Gast #715736
Lesenswert?

Du kannst low und highbyte auf einmal laden, um die zerlegung kümmert 
sich der compiler.

und lade mal nicht den zähler. wenn du auf ein overflowinterrupt wartest 
dann lasse ihn zählen. für das was du machen möchtest gibt es andere 
interrupts beim zähler, gucke dir mal das kapitel die genaue uhr. im 
tutorial auf dieser seite an.
#715902
Lesenswert?

Johannes M. wrote:
> Karl heinz Buchegger wrote:
>> Bei Problemen am C-Port drängt sich sofort die Frage auf:
>> JTAG Interface abgeschaltet?
> Naja, JTAG ist an PC5..2, oder irre ich mich da?

Kann sein. Ich schalte das Ding immer ab.

@Wolfxxxx
Mal was anderes: Wie misst du?

Laut AVR Studio funktioniert dein Pgm. Du solltes an
PC6 eine Frequenz von ca. 62 Hz erhalten.
Gast #715932
Lesenswert?

Mahlzeit.

Ich habe an den Ausgängen eine Pullup-Widerstand.
An PC7 habe ich einen Rechteckimpuls.
An PC6 leider nicht.
Habe auch schon mal die Pins getauscht. Das gleiche Problem.
Messen mit dem Oszy.

Gruß

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren