Forum: Mikrocontroller und Digitale Elektronik Hilfe PIC 18F2550


von PicNeuling (Gast)


Lesenswert?

Hallo @alle.

Ich habe lange Datenblätter über den PIC für ein Schulprojekt gelesen, 
doch nun brauche ich langsam eine Hilfestellung.

und Zwar: Ich möchte ihn in C programmieren.

Nun habe ich 3 Fragen:

1. Wie spreche ich die Adressen an! z.B. RA4, RB5

2. Über die beiden Clockeingänge speise ich einen Takt von 20 MHz ein. 
Wie komme ich über einen Timer(für eine Schleife) an den Takt. Wie 
konfiguriere ich diesen!?

3. Was erkennt der PIC als Highpegel am Eingang an? Reichen + 2,5 V für 
H und 0 V für 0 L? Muss man dies im PIC konfigurieren? (habe da das 
Datenblatt nicht so recht verstanden)

Tut mir Leid, solche Anfängerfragen zu stellen. Aber ich kam wirklich 
nicht weiter und drehe mich auf der Stelle beim Weiterkommen!?

Vielen Dank für mögliche Hilfe.

Einen schönen Abend noch

von Bernd R. (Firma: Promaxx.net) (bigwumpus)


Lesenswert?

PicNeuling schrieb:
> 1. Wie spreche ich die Adressen an! z.B. RA4, RB5

Ich hatte da mal "PORTBbits.RB0", aber das findest Du in der Doku zu dem 
Compiler oder einfacher in den Demo-Progs, die dabei sind.


> 2. Über die beiden Clockeingänge speise ich einen Takt von 20 MHz ein.
> Wie komme ich über einen Timer(für eine Schleife) an den Takt. Wie
> konfiguriere ich diesen!?

Hä ?
Du versorgst den PIC mit festen 20MHz und willst mittels einem Timer 
diesen Takt bestimmen ???
Das ist etwas für kleine Cracks, die den internen 32kHz-Oszillator zu 
nutzen wissen (WDT)...


> 3. Was erkennt der PIC als Highpegel am Eingang an? Reichen + 2,5 V für
> H und 0 V für 0 L? Muss man dies im PIC konfigurieren? (habe da das
> Datenblatt nicht so recht verstanden)

Das Datenblatt wird etwas zu "V H min" sagen und das wird eher bei 4V 
liegen. CMOS-Eingänge sind so bei 80% der Versorgungsspannung 
angesiedelt. Darunter muß es nicht sauber erkannt werden.
Konfigurieren kann man da nichts.

von Master S. (snowman)


Lesenswert?

sieh dir eine beliebige beispiel-datei deines compilers an (MPLAB & C18 
?). viele deiner fragen werden dort gleich behandelt. anhand deiner 
fragen, empfehle ich dir ein kleines tutorial durchzumachen, damit 
hättest du mind. 2/3 deiner fragen abgehakt (viele hier werden dir nicht 
ein neues, persönliches tutorial schreiben wollen). schau mal auf 
sprut.de (infos zur hardware von PICs) und fernando-heitor.de -> WIKI 
(PIC forum & PIC tutorials) an.

von Dirk W. (Gast)


Lesenswert?

www.sprut.de

von PicNeuling (Gast)


Angehängte Dateien:

Lesenswert?

Erstmla danke für die Antworten. Habe das bei sprut durchgemacht und hat 
auch einigermaßen geklappt. Doch dazu hätte ichwieder Fragen:

1. #pragma config OSC = HS   //CPU=20 MHz
die Zeile mag er nicht kompilieren und ich hba keine AHnung wieso.

2.
    PORTA = 0x00;  //alle Ports  und Lats auf Null setzen
  PORTB = 0x00;
  PORTC = 0x00;
  LATA = 0x00;
   LATB = 0x00;
   LATC = 0x00;

  TRISB = 0xFF;  / Alle Port B sind Eingänge
  TRISA = 0x00; // Alle Port A sind Ausgängen

  RA1 = 0x01;   //AN
  RA2 = 0x00;   // AUS
  RA3 = 0x01;   // AN
  RA4 = 0x00;   // AUS

Stimmt dieses Codefragment? Denn meine Ausgänge werden nicht gesetzt, 
sondern überall liegen so ca. 2,5 an und ich verstehe nicht wieso.

Kann mir da vielleicht jemand einen Tipp geben?

Mfg

Pascal

von Severino R. (severino)


Lesenswert?

PicNeuling schrieb:
> Erstmla danke für die Antworten. Habe das bei sprut durchgemacht und hat
> auch einigermaßen geklappt. Doch dazu hätte ichwieder Fragen:
>
> 1. #pragma config OSC = HS   //CPU=20 MHz
> die Zeile mag er nicht kompilieren und ich hba keine AHnung wieso.

Und gibt der Compiler keine Fehlermeldung aus?
Versuch's mal mit FOSC statt OSC.


>
> 2.
>     PORTA = 0x00;  //alle Ports  und Lats auf Null setzen
>   PORTB = 0x00;
>   PORTC = 0x00;
>   LATA = 0x00;
>    LATB = 0x00;
>    LATC = 0x00;
Die LATx auf 0 setzen reicht eigentlich.


>   TRISB = 0xFF;  / Alle Port B sind Eingänge
>   TRISA = 0x00; // Alle Port A sind Ausgängen
>
>   RA1 = 0x01;   //AN
>   RA2 = 0x00;   // AUS
>   RA3 = 0x01;   // AN
>   RA4 = 0x00;   // AUS
>
> Stimmt dieses Codefragment? Denn meine Ausgänge werden nicht gesetzt,
> sondern überall liegen so ca. 2,5 an und ich verstehe nicht wieso.

Sieht gut aus. Was sind 2,5?


> Kann mir da vielleicht jemand einen Tipp geben?

Bei vielen PICs ist auf PORTA auch der A/D-Wandler und dieser bei Reset 
aktiviert. In diesem Fall müssen die analogen Eingänge deaktiviert 
werden.
http://www.sprut.de/electronic/pic/fallen/fallen.html#analog

von PicNeuling (Gast)


Lesenswert?

HI

vielen Dank für die Antowrt.

Das mit den Analog müsst ich mal ausprobrieren. Doch wie ist der Code in 
C? Das ist ja Assembler.

Mit 2,5 meine ich 2,5 V.

Auch wenn ich alle Ausgänge auf Null setze, hab ich einen Pegl vonb 2,5 
V anliegen.  Ist dies normal oder etwas falsch eingstellt?
Wenn hierbei Low 2,5 und High 5 V, würde ich das mit einem 
Spannungsteiler lösen.

MfG

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.