Interrupt handling LPC für Goobay 95173
Verfasst: 2. Mai 2017, 13:53
Hallo,
ich bin neu hier im Forum und versuche mich aktuell daran die neue Version des Goobay 95173 Bewegungsmeldung auf Basis des TS-DIL Moduls mit LPC922 ans laufen zu bekommen. In einem anderen Beitrag hier im Forum wird recht detailliert auf die Unterschiede eingegangen. Peterk hat dort auch eine Lösung mit ARM Modul gepostet.
Wichtigster Unterschied scheint zu sein, dass ein 50Hz Signal erzeugt werden muss.
Ich habe nun auf Basis der in8 Sourcecodes versucht ein Signal auf einem der Output Pins zu geben. Dafür habe ich folgenden Code eingefügt:
void restart_app(void) // Alle Applikations-Parameter zurücksetzen
{
...
ifdef o50hz
P0_7=0;
TMOD&=0xf0; //register für Timer 0 löschen
TMOD|=0x02; // Timer 0 als reload, Timer 1 nicht ändern !
TAMOD&=0xf0;
TH0 = 0xff;
AUXR1&=~0x10; // toggled whenever Timer0 overflows ausschalten
ET0=1; // Interrupt für Timer 0 freigeben
TR0=1; // Timer 0 starten
#endif
...
}
#ifdef o50hz
void tr0_int(void) __interrupt 1
{
TL0=0x09; // timer mit H=0xf9 L=0x09 2KHz = 0,5ms
TH0=0xf9;
P0_7^=1;
}
#endif
Leider ohne Erfolg bisher. Timer 0 ohne Interrupt funktioniert, wenn ich den Output Pin in restart_app() laufen lassen. Mit Interrupt bleibt Pin 0.7 auf 0.
Vielleicht kann mir hier jemand weiterhelfen. Für Tipps wäre ich sehr dankbar!
Gruß
Frank
ich bin neu hier im Forum und versuche mich aktuell daran die neue Version des Goobay 95173 Bewegungsmeldung auf Basis des TS-DIL Moduls mit LPC922 ans laufen zu bekommen. In einem anderen Beitrag hier im Forum wird recht detailliert auf die Unterschiede eingegangen. Peterk hat dort auch eine Lösung mit ARM Modul gepostet.
Wichtigster Unterschied scheint zu sein, dass ein 50Hz Signal erzeugt werden muss.
Ich habe nun auf Basis der in8 Sourcecodes versucht ein Signal auf einem der Output Pins zu geben. Dafür habe ich folgenden Code eingefügt:
void restart_app(void) // Alle Applikations-Parameter zurücksetzen
{
...
ifdef o50hz
P0_7=0;
TMOD&=0xf0; //register für Timer 0 löschen
TMOD|=0x02; // Timer 0 als reload, Timer 1 nicht ändern !
TAMOD&=0xf0;
TH0 = 0xff;
AUXR1&=~0x10; // toggled whenever Timer0 overflows ausschalten
ET0=1; // Interrupt für Timer 0 freigeben
TR0=1; // Timer 0 starten
#endif
...
}
#ifdef o50hz
void tr0_int(void) __interrupt 1
{
TL0=0x09; // timer mit H=0xf9 L=0x09 2KHz = 0,5ms
TH0=0xf9;
P0_7^=1;
}
#endif
Leider ohne Erfolg bisher. Timer 0 ohne Interrupt funktioniert, wenn ich den Output Pin in restart_app() laufen lassen. Mit Interrupt bleibt Pin 0.7 auf 0.
Vielleicht kann mir hier jemand weiterhelfen. Für Tipps wäre ich sehr dankbar!
Gruß
Frank