PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit 16F887 und Timer0



sky2
24.08.2010, 18:01
Hi zusammen,

Wollte letzte Woche mein eigen zusammengebasteltes PIC16F887 Board testen.
Leider will der uC nicht so recht. Zuerst hab ich einfach mal alle Ausgänge gesetzt und die Leds geprüft, das passt auch.
Als nächstes war dann ein Lauflicht dran, was einfach nicht funktionieren will. Das Programm ist ein altes Beispiel für den
PIC16F690 (da funktionierts), daran hab ich nichts geändert, da ich keine Unterschiede im Datenblatt fand.

Die Led an PORTC 0 leuchtet und manchmal geht sie mal ne Sekunde aus
oder auch länger, manchmal blizt sie auch etwas auf. Kurz, sie macht was sie will. Die anderen Leds sind immer aus.


Hier noch der Code:


#include <pic.h>

void delay10( char n);

void main( void)
{
TRISC = 0;

while(1)
{
PORTC = 1;
delay10(100);
PORTC = 2;
delay10(100);
PORTC = 4;
delay10(100);
PORTC = 8;
delay10(100);
}
}

void delay10( char n)

{
char i;

OPTION = 7;
do {
i = TMR0 + 39; /* 256 microsec * 39 = 10 ms */
while ( i != TMR0)
;
} while ( --n > 0);
}

Config1 11 1111 1111 0101 -> interner Takt
Config2 111


Könnte der uC eventuell auch defekt sein?

Ach ja, ich progge mit Windows7, Mplab 8.56 und PicKit2

Vielen Dank schon mal

RoboHolIC
24.08.2010, 21:47
Bei Microchip gibt es eine Application Note zur Migration 16F87X nach 16F88X:

http://ww1.microchip.com/downloads/en/DeviceDoc/41305A.pdf

Hier geht es um die Unterschiede des !designierten Nachfolgers! zu seinem Vorgänger; selbst die sind schon erheblich - auch bei der Port-Konfiguration!

sky2
26.08.2010, 18:21
Hab noch ANSEL im Code hinzugefügt:


#include <pic.h>

void delay10( char n);

void main( void)
{ ANSEL = 0;
ANSELH = 0;
TRISC = 0;

while(1)
{
PORTC = 1;
delay10(10);
PORTC = 2;
delay10(10);
PORTC = 4;
delay10(10);
PORTC = 8;
delay10(10);
}
}

void delay10( char n)

{
char i;

OPTION = 7;
do {
TMR0 = 0; /* 256 microsec * 39 = 10 ms */
while ( TMR0 != 39)
;
} while ( --n > 0);
}


Hat aber nichts gebracht, die erste LED flackert nur ganz schwach. :(