Hallo, erst mal ein kleinen Überblick über meine Software und Hardware. Programmieren tue ich mit Mikroc pro for AVR Als Mikrocontroller habe ich ein Entwicklungsboard von Mikroelektronika "Ready for AVR" mit einem Atmega 16 8Mhz. Mit dem Mikrocontroller Steuere ich einen GLCD, DS1820, RTC und den DCF77 an. Der RTC und der DS1820 sind fertig programmiert die Ausgabe über den GLCD klappt auch ganz gut zwar noch nicht wie gewünscht aber für den Anfang reicht es. Mein Problem ist das ich mit den Timern und den Interrupts Probleme hab. Das Programm für den DCF77 soweit fertig, was mein Problem ist, das ich den Timer0 nicht eingestellt bekomme das er mir meine Variable hoch zählt. Wollte den Timer0 so einstellen das ich bei counter>=170 && counter <=190 der sync anfängt. (10ms) Für die einstellung hab ich ein tool von Mikroelektronika genutzt nennt sich "TimerCalculator" Das tool gibt mir den code aus für die einstellungen: //Timer0 Prescaler = 64; Preload = 124; Actual Interrupt Time = 1 ms //Place/Copy this part in declaration section void InitTimer0(){ SREG_I_bit = 1; OCR0 = 124; TCCR0 = 0x28; TCCR0 |= 0x03; OCIE0_bit = 1; } void Timer0Overflow_ISR() org IVT_ADDR_TIMER0_COMP { //Enter your code here } Leider klappt das nicht, ich weiß auch nicht wie ich die Globalen Interrupts aktiviere mit dem Programm. Bei Atmel Studio hab ich gesehen das es mit der Funktion sei(); funktioniert. Also meine frage ist kann mir jemand sagen wie ich den Timer0 so einstelle das er mit meine Variable "counter" alle 10ms oder von mir aus 100ms hochzählt? Und mit welchem Befehl ich bei Mikroc pro for AVR alle Glaobel Interrupts aktiviere? Danke
Hallo, in Mikropascal wird der globale Interrupt so eingeschaltet: SREG_I_bit := 1; // Interrupt enable Grüße
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.