Forum: Mikrocontroller und Digitale Elektronik Ausgänge PIC funktionieren nicht


von alphi h. (sada)


Lesenswert?

Hallo miteinander

Ich benutze einen PIC16f628a. Ich habe alle Ports (A und B) auf ausgang 
geschaltet und auf high gelegt.

Gewisse Pins haben nun 5V aber ein Paar nicht. Zum einen solche RA1 - 
RA4. Ich weiss diese sind von haus aus auf analog geschaltet.

Ich benutze den XC8 compiler. Kann mir jemand verraten, wie ich diese 
Pins anstatt analog auf digital umkonfigurieren kann?

Der PortB funktioniert als ausgang einwandfrei.

http://www.sprut.de/electronic/pic/grund/ioports.htm habe ich mir schon 
durchgelesen, ist aber für assembler.

gruss

von WinWon (Gast)


Lesenswert?

alphi hard schrieb:
> Gewisse Pins haben nun 5V aber ein Paar nicht. Zum einen solche RA1 -
> RA4. Ich weiss diese sind von haus aus auf analog geschaltet.

mehrere Möglichkeiten:

1. Nicht digital konfiguriert. (Analog / Comparator) Da der PIC16F628 
keine ADC Eingänge hat  bleibt nur der Comparator über. Siehe 3.

2. http://www.sprut.de/electronic/pic/fallen/fallen.html#ra4

3. Manche PICs haben Comparatoren die auch gerne nach Reset aktiviert 
sind. Der 16f628 gehört zu denen. Zum ändern Datenblatt lesen und die 
Register setzen. Das ist Grundlagenarbeit. Guckst du also hier 
http://ww1.microchip.com/downloads/en/devicedoc/40044f.pdf auf S63ff 
steht schon das richtige Register. Einfach Comparatoren deaktivieren und 
es sollte gehen.

alphi hard schrieb:
> http://www.sprut.de/electronic/pic/grund/ioports.htm habe ich mir schon
> durchgelesen, ist aber für assembler.

Das ändert nichts daran. Ob man nun die Register in Assembler oder C 
beschreibt macht keinerlei unterschied.

von Max H. (hartl192)


Lesenswert?

alphi hard schrieb:
> Kann mir jemand verraten, wie ich diese
> Pins anstatt analog auf digital umkonfigurieren kann?
Ja, das Datenblatt:
http://ww1.microchip.com/downloads/en/devicedoc/40044f.pdf
Seite 33:
> EXAMPLE 5-1:      INITIALIZING PORTA
>
> CLRF PORTA        ;Initialize PORTA by
>                   ;setting
>                   ;output data latches
> 0x07              ;Turn comparators off and
> MOVWF CMCON       ;enable pins for I/O
>                   ;functions
> BCF STATUS, RP1
> BSF STATUS, RP0   ;Select Bank1
> MOVLW 0x1F        ;Value used to initialize
>                   ;data direction
> MOVWF TRISA       ;Set RA<4:0> as inputs
>                   ;TRISA<5> always
>                   ;read as ‘1’.
>                   ;TRISA<7:6>
>                   ;depend on oscillator
>                   ;mode
Die TRSISA bits darfst du natürlich so ändern wie du sie haben willst.

RA4 ist bei diesem PIC wirklich nur Open Drain. Um den auf High zu 
kriegen brauchst du einen Pullup.
Auf S. 13 im Datenblatt findest du eine Liste, in der steht, welcher IO 
was kann. Nicht benötigte Zusatzfunktionen müssen deaktiviert werden, 
falls diese nach dem Power On Reset aktiv sind. Wie man das macht steht 
im Datenblatt im Kapitel zu diesem Modul.

P.S. Diesen alten PIC würde ich nicht mehr verwenden. Moderne PIC16 sind 
schneller und haben mehr Peripherie, ROM und RAM. Der Instuction Set ist 
besser für C-Compiler geeignet. Oft sind sie auch billiger.
Zum Beispiel der PIC16F1827.

: Bearbeitet durch User
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.