Forum: Mikrocontroller und Digitale Elektronik PIC16F870 startet nicht


von Matthias P. (matze_p)


Angehängte Dateien:

Lesenswert?

Moin!

Ich versuche gerade meinen PIC16F870 zu laufen zu kriegen.

Das ist mein erstes Projekt, und als erstes möchte ich mal eine LED auf 
RC3 blinken lassen - nur um zu sehen, ob's generell geht...

Programmieren möchte ich in C. Ich habe folgendes Programm:

#include  <htc.h>

__CONFIG(BOREN_ON & CP_OFF & WDTE_OFF & PWRTE_ON & FOSC_HS);

#ifndef _XTAL_FREQ
#define _XTAL_FREQ 16000000
#endif

main(void)
{
    TRISC = 0;
    ADCON1 = 7;
    for(;;)
    {
        PORTC = 0xff;
        _delay(100);
        //__delay_ms(500);
        PORTC = 0x00;
        _delay(100);
        //__delay_ms(500);
    }
}


Das ganz wird kompiliert mit dem Hitech PICC:

picc --chip=16f870 --mode=lite -m led.c

Das HEX-File lade ich dann mit dem Microchip-Tool mittels PicKit 2 hoch. 
Das scheint auch zu funktionieren. Nur leider läuft die PIC nicht los.

Ich habe es auch mit einem Arbeitskollegen probiert, der mal schnell ein 
Programm in Assembler gebaut hat, welches auch auf einem anderen 
PIC-Modell lief - auf meinem jedoch nicht.

Ist mein PIC kaputt? Dann würde er sich doch wohl aber gar nicht 
programmieren lassen, oder?

Was mache ich falsch?

von Martin S. (drunkenmunky)


Lesenswert?

Wie sollte er auch? Ohne Oszillator...

von Frank K. (fchk)


Lesenswert?

Matthias P. schrieb:

> #ifndef _XTAL_FREQ
> #define _XTAL_FREQ 16000000
> #endif

> Was mache ich falsch?

Von wo bekommt Dein PIC den Takt? Du definierst oben so schön eine 
Quarzfrequenz. Wo auf Deinem Board ist denn der Quarz?

fchk

von Martin S. (drunkenmunky)


Lesenswert?

Wenn du dich mit PICs beschäftigen willst, ist diese Seite für dich 
interessant:
http://sprut.de/electronic/pic/osc/index.htm

Da bekommst du alles an Grundlagen, was du brauchst.

von M. J. (manfred-64)


Lesenswert?

Der scheint wirklich nur einen internal-OSC für den WDT zu haben.
Klöppel da doch mal was taktendes dran und gönn ihm sicherheitshalber 
noch'n 100nF an VCC/VDD

mfg

von Matthias P. (matze_p)


Lesenswert?

Manfred John schrieb:
> Der scheint wirklich nur einen internal-OSC für den WDT zu haben.

Achso, ich dachte, der kann seinen eigenen Takt generieren... :-(

Der RC-OSC scheint ja nicht so dolle zu sein...

Dann werd ich mir mal einen Quarz besorgen...

von PICfan (Gast)


Lesenswert?

Matthias P. schrieb:
> Achso, ich dachte, der kann seinen eigenen Takt generieren... :-(

kann es auch.  Man muss es aber sagen dass es nutzen soll.

>__CONFIG(BOREN_ON & CP_OFF & WDTE_OFF & PWRTE_ON & FOSC_HS);

hier wird aber ein externe Quarz definiert (FOSC_HS)

ändere das und es wird gehen.

von PICfan (Gast)


Lesenswert?

Ich muss mich korrigieren.

der 16F870 hat ausnahmsweise keinen internen Taktgeber.  Man muss 
tatsätzlich einen Quarz oder Resonator dranhängen.

sehe Datenblatt Kapitel 11.2

von Matthias P. (matze_p)


Lesenswert?

So, alles klar: 4 MHz Quarz-Oszillator hängt dran... und läuft!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.