Hallo ich habe mich mal an die Programmierung eines Timers gewagt. Bin noch blutiger Anfänger. Habe einen Atmega16 und ein STK500 board auf dem ich nach dem Überlauf des Timers zwei Leds leuchten sollen. Beim Start des Programms soll eine Led leuchten. Die Start Led leuchtet nur der Timer zählt wohl nicht da ich nie 2 Leds am leuchten haben. Vielleicht kann mir jemand sagen was ich falsch gemacht habe. Hier mein Programm: #include <avr/interrupt.h> #include <avr/io.h> ISR (TIMER0_OVF_vect) { TCNT0 = 0x64; //reload counter value (50Hz) DDRC=0x03; } void init_timer1(void) { //timer0-Initialisierung für 50Hz TCCR0 = 0x00; //stop //ASSR = 0x00; //set async mode TCNT0 = 0x64; //set count zählerstart bei 100 (zählt immer bis 255) TCCR0 = 0x05; //start timer (Systemtakt / 1024 ) PORTC =0x00; sei(); } int main(void) { init_timer1(); TIMSK |=(1<<TOIE0); while(1) { DDRC=0x01; } }
Hi Kann es sein, das du Probleme mit den Funktion von DDRC und PortC hast? MfG Spess
also bislang habe ich immer mit DDRC und PortC gearbeitet wenn ich einzelne LEDS leuchten lassen will. Egal ob per Tastendruck oder per delay bis lang hat das immer funktioniert. Wenn ich DDRB und PORTB nehmen funktioniert das obere Programm auch nicht.
Tim schrieb: > da ich nie 2 Leds am leuchten haben Nun ja, überleg mal, wie lange die 2. LED leuchten wird - dein Hauptprogramm läuft ja schliesslich auch weiter... Dann solltst du dir angewöhnen, Control-Register immer mit sowas wie 1 << CS00 zu beschreiben, nicht mit reinen hexwerten. Dann siehst du auch besser, ob und wo du Fehler bei der Initialisierung gemacht hast. Ansonsten wendest du das PORT- und das DDR-Register "vertauscht" an. Das macht in diese einfachen Fall zwar nichts, aber das Tutorialkapitel zu dem Thema solltes du dir nochmals ansehen. Oliver
Hi >also bislang habe ich immer mit DDRC und PortC gearbeitet wenn ich >einzelne LEDS leuchten lassen will. Ist ja prinzipiell richtig. Aber DDR bestimmt die Datenrichtung (Eingang/Ausgang) und Port bei Ausgängen den Pegel an den Pins. MfG Spess
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.