Hallo Forum,
ich habe begonnen, mich in die Verwendung von PIC-Mikrocontrollern
einzuarbeiten. Mein verwendeter Controller ist der PIC16F887. Zum
Programmieren nutze ich MPLAB X IDE v3.20 unter Linux und zum Flashen
das PICkit3. Als Taktquelle soll der interne Oszillator dienen. Ich habe
zum Test ein kleines Programm geschrieben, welches an Port D1 eine LED
blinkend ansteuern soll. Soweit läuft das Programm, allerdings beobachte
ich eine Eigenart, welche ich mir nicht erklären kann. Die LED blinkt 2x
im vorgegebenen Abstand von 500ms, die darauf folgende pause ist aber
(ca.) 1000 ms lang. Ich kann mir auf dieses Verhalten keinen Reim
machen.
In etwa so sieht das Blinken der LED aus:
____|''''|_____|''''|__________|''''|_____|''''|__________
Hier der Quellcode:
1 | #include <htc.h>
|
2 | #include <pic16f887.h>
|
3 | #pragma config FOSC=INTRC_NOCLKOUT
|
4 | #define _XTAL_FREQ 4000000
|
5 | #use delay(clock=4000000)
|
6 |
|
7 | void main(void) {
|
8 |
|
9 | TRISD=0x00;
|
10 |
|
11 | do{
|
12 |
|
13 | __delay_ms(500);
|
14 | PORTD = 0b00000010;
|
15 | __delay_ms(500);
|
16 | PORTD = 0b00000000;
|
17 |
|
18 | }while(1);
|
19 |
|
20 | }
|