Gast
#1915436
Hallo Zusammen, ich beginne gerade mit der µP Programmierung und habe mir für den Anfang ein PIC24 Starterkit mit einem PIC24FJ256GB106 kontroller gekauft. Auch was die Programmiersprache C angeht habe ich noch kein Vorwissen. Ich habe es mir zur Aufgabe gemacht eine LED auf dem Developmentboard im Sekundentakt blinken zu lassen. Hierzu möchte ich einen Timer1 einsetzen der sekündliche einen Interrupt auslöst und dabei den Zustand der LEDs wechselt. Den Timer möchte ich mit einem externen 32kHz Oszillator ansteuern. Ich vermute, dass das Oszillator Enable Bit (SOSCEN) nicht eingeschaltet ist. Doch jedes Mal wenn ich das entsprechede Register OSCCON konfiguriere ist zu sehen, dass sich das Register wie von Zauberhand selber umkonfiguriert. Nachfolgend der Quellcode meines Programmes. Hat jemand eine Idee was ich falsch mache? Vielen Dank. Gruß Carsten #include <p24FJ256GB106.h> int R = 0; int GB =0; void __attribute__((_interrupt_, _shadow_)) _T1Interrupt(void) { GB^=0x1111; R^=0x1111; IFS0bits.T1IF = 0; //Reset Timer1 interrupt flag and Return from ISR } int main() { T1CON = 0x00; //Stops the Timer1 and reset control reg. TMR1 = 0x00; //Clear contents of the timer register PR1 = 32700; //Load the Period register with the value 0x8CFF IPC0bits.T1IP = 0x01; //Setup Timer1 interrupt for desired priority level // (this example assigns level 1 priority) IFS0bits.T1IF = 0; //Clear the Timer1 interrupt status flag IEC0bits.T1IE = 1; //Enable Timer1 interrupts T1CON = 0x8002; //Start Timer1 with prescaler settings at 1:1 and //clock source set to the external clock in the //asynchronous mode OSCCON =0x0402; PORTG=GB; PORTB=R; TRISG=0b1111110000111111; TRISF=0b1111111111001111; while (1) { PORTG=GB; PORTF=R; }; }
