Forum: Mikrocontroller und Digitale Elektronik PIC 18F258 in C


von Hans (Gast)


Lesenswert?

Grüß Gott und einen schönen Abend ans Forum,

probiere mich gerade an der Programmierung von PICs was soweit auch ganz 
gut funktioniert. Einzig und allein beim 18F258 komme ich einfach nicht 
voran. Habe folgende Zeilen Code quasi als "Hello World" geschrieben. 
Diese haben auf meinem 18F4580 bereits einwandfrei funktioniert. Auf dem 
258 wollen sie einfach nicht. Schaltungsaufbau ist auf einem Steckbrett 
mit 4Mhz Keramikschwinger.

//Include
#include <p18f258.h>
#include <delays.h>
//Config
#pragma config OSC = XT //CPU=20 MHz
#pragma config PWRT = ON
#pragma config BOR = OFF
#pragma config WDT = OFF //Watchdog Timer
#pragma config LVP = OFF //Low Voltage ICSP
//main
#pragma code
void main(void)
{
LATB = 0x00;
TRISB = 0xF8; //Setzt als Ausgänge

while(1)
{
LATB = 0x01;
Delay10KTCYx(100);
LATB = 0x02;
Delay10KTCYx(100);
LATB = 0x04;
Delay10KTCYx(100);
}//end while
}

Wäre super wenn jemand eine Idee hätte wo mein Fehler liegt. Vielen, 
vielen Dank schon mal im Voraus. Beim Anschauen von OSC2 kommt eine 
Sinusschwingung mit 4Mhz raus. Daran sollte es also nicht liegen. Das 
Seltsame ist, dass die LEDs an Port 1/2 manchmal kurz mit PWM-Signal 
durchschalten wenn man mit der Hand in die Nähe kommt.

Servus

von micha (Gast)


Lesenswert?

Ins Datenblatt mal schauen ob man
die Ports auf Digital setzen muß.

von Johannes (Gast)


Lesenswert?

Könnte der MCLR Pin sein ist der auch brav mit ~10k gegen +5V (VDD) 
geschalten?
LATB = 0x04 soll wohl auch 0x03 sein.

von Hans (Gast)


Lesenswert?

Vielen Dank Johannes, ja es war der 5k :) und nein, es sollte vier 
heißen dass alle LEDs nacheinander angehen.

0001 = 1
0010 = 2
0100 = 4

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.