Forum: Mikrocontroller und Digitale Elektronik mikroc pro for avr interrupt & DCF77


von Bruce G. (bruce)


Lesenswert?

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

von Elmar F. (elmar-faber)


Lesenswert?

Hallo,

in Mikropascal wird der globale Interrupt so eingeschaltet:

SREG_I_bit := 1;  // Interrupt enable

Grüße

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.