so, nach längerer abstinenz in diesem thread mache ich mich meinen rp6 nun mit einem ir kollissionssensor ausgestattet.
siehe hier:
Externes Bild anzeigen
empfänger und sender sind die selben wie bei der RP6 Base.
die 36 KHz möchte ich über den freien Timer 1 auf der M32 mittels CTC modus erzeugen.
dazu hab ich die controllib.c folgendermaßen abgeändert:
mein programmcode dazu sieht bisher so aus:Code:TCCR1B = (0 << ICNC1) | (0 << ICES1) | (0 << WGM13) | (1 << WGM12) | (0 << CS12) | (0 << CS11) | (1 << CS10); OCR1A = 221; // Timer 2 - used for beeper: TCCR2 = 0; OCR2 = 0xFF; // Enable timer interrupts: TIMSK = (1 << OCIE0)|(1<<OCIE1A); sei();
obwohl ich mittlerweile das datenblatt der M32 genau seziert habe, löst mein timer 1 immer noch keinen interrupt aus. die einstellungen hab ich genauestens überprüft.Code:#include "RP6ControlLib.h" uint8_t a; ISR(TIMER1_COMPA_vect) { PORTD ^= PD5; writeString_P("\Interrupt Timer1 Compare"); } void infrarotempfang(void) {if (PINC & PC3) { a++;} if (a >100) {writeString_P("\Infrarot empfangen"); startStopwatch1();} if (getStopwatch1() >1000) {setStopwatch1(0);} } int main(void) {initRP6Control(); DDRD |= PD5; //PD5 als Ausgang DDRC &=~ PC3; //PC3 als Eingang while(true) { infrarotempfang(); } return 0; }
kann es sein, dass der interrupt irgendwo an anderer stelle in der controllib blockiert wird?
gruß







Zitieren

Lesezeichen