Gast
#12087
Hallo! Habe beim Programmieren des PIC 16C74 ein Problem mit der Interruptroutine. Die Parameter des PICs sind so eingestellt, dass die ISR bei einer Änderung an Port B durchlaufen wird. Ich habe nun ein 10Hz Signal an PIN_B1 angehängt. Mein Problem ist nun, das die ISR nicht nicht durchlaufen wird und fdd immer 0 ist. Das 10 Hz Rechtecksignal an PIN_B1 habe ich mit dem Oszi überprüft und hat die Zustände 0.1V und 4.8V. Kann mir jemand weiterhelfen? Kurt Programm(Im PCW PIC C Compiler geschrieben): //globale Variablen, damit die ISR auch zugreifen kann unsigned int fa=0, fb=0, fc=0, faa=0, fbb=0, fcc=0, fdd=0, br=0, xa=0, xb=0, xc=0, xd=0, xaa=0, xbb=0, xcc=0, xdd=0; #include <INTERRU2.H> #int_rb rb_isr() { xa=input( PIN_B2 ); xb=input( PIN_B3 ); xc=input( PIN_B5 ); xd=input( PIN_B1 ); br=input( PIN_B6 ); if(xd!=xdd) { xdd=xd; fdd++; } } main() { setup_counters(RTCC_INTERNAL,RTCC_DIV_2); setup_port_a(ALL_ANALOG); setup_adc(ADC_CLOCK_INTERNAL); port_b_pullups(0); enable_interrupts(RB_CHANGE); enable_interrupts(GLOBAL); while(1) { delay_ms(250); //..Ausgabe von fdd über das Display.. } }