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); }
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).
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.
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? EDIT: Ich irre mich nicht. PC7 und 6 sollten eigentlich keine Probleme bereiten...
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.
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ß
Wolf4124 wrote: > Messen mit dem Oszy. Ich hab deswegen nachgefragt, weil zwischen PC7 und PC6 ein enormer Frequenzunterschied besteht. Habe gerade dein Pgm, so wie es ist, in einen Mega16 gebrannt. Die LED an PC6 blinkt definitiv.
Hallo zusammen, ich habs gefunden. Ich habe auch noch den falschen Controllertyp unter Optionen ausgewählt gehabt. Danke für eure Unterstützung. Gruß Wolf4124
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.