Forum: Mikrocontroller und Digitale Elektronik PIC18F2420 - RC0 als Digital Input konfigurieren


von Dominik (Gast)


Lesenswert?

Hallo,
in meinem ersten uc-Projekt möchte ich eine Binäruhr mit DCF77 – Empfang 
und Weckfunktion programmieren. Basis ist ein PIC18F2420, den ich in C 
mit dem C18 Compiler programmiere.
Nun möchte ich die Weckzeit mit Schaltern bestimmen und benötige hierzu 
Digitale – Eingangskanäle. Meine Config sieht wie folgt aus:
1
TRISC = 0b11111111; // all PINS are Input

Den Zustand der Kanäle RC1 bis RC7 kann ich über
1
PORTCbits.RCx
korrekterweise Abfragen.

Bei RC0 funktioniert dies nicht. Im Datenblatt kann ich sehen, dass auf 
dem PIN auch noch T1OSO und T13CKI liegen. Ich habe versucht mit 
folgendem code die Timer – Funktionen zu deaktivieren:
1
    T1CONbits.TMR1CS = 0;
2
    T1CONbits.TMR1ON = 0;
3
    T3CONbits.TMR3CS = 0;
4
    T3CONbits.TMR3ON = 0;

Leider ohne Erfolg. Über eine kleine Hilfestellung wäre ich sehr 
dankbar.

von Frank K. (fchk)


Lesenswert?

Das Problem ist der sekundäre Oszillator. Probiere mal:

T1CON.T1OSCEN=0;
T1CON.T1RUN=0;
T1CON.TMR1CS=0;

fchk

von Udo (Gast)


Lesenswert?

Setzt man damit nicht den Timer auserbetrieb ?
Den wird er wohl später brauchen, dann lieber
einen anderen Pin nehmen.

von Max H. (hartl192)


Lesenswert?

Ich kenne genau diesen PIC18 nicht, aber bei anderen gibt es die ANSELx 
Register, mit denen du die Pins auf analog/digital einstellen kannst.

von Frank K. (fchk)


Lesenswert?

Timer1 kann von verschiedenen Quellen getaktet werden, zB auch mit dem 
Systemtakt Fosc/4.

fchk

von Max H. (hartl192)


Lesenswert?

Udo schrieb:
> Setzt man damit nicht den Timer auserbetrieb ?
Nein nur den Sec. Oszillator.

von Chris B. (dekatz)


Lesenswert?

Timer1 ist nach einem POR eigentlich abgeschaltet und auch der T1OSC ist 
abgeschaltet. Und PortC hat auch keine Analogfunktionen - daran kann es 
auch nicht liegen.
Was ist das für ein Aufbau? Ein fertiges DevBoard oder Selbstbau. Wenn 
Selbstbau schon überprüft ob die Lötstelle OK ist?? Kurzschluss??

: Bearbeitet durch User
von Dominik (Gast)


Lesenswert?

Als Oszillator nutze ich OSC1 und OSC2

Die empfolenen Einstellung habe ich übernommen, bzw. den Syntax leicht 
angepasst:
1
    
2
TRISC = 0b11111111; // all PINS are Input
3
T1CONbits.T1OSCEN=0;
4
T1CONbits.T1RUN=0;
5
T1CONbits.TMR1CS=0;

Leider ohne Erfolg.
Bei den PINS RE0 – RE2 habe ich auch Schwierigkeiten.
Alle anderen PINS klappen, aber ich benötige prinzipiell fast jeden PIN.

Hat noch jemand eine Idee?

von Dominic A. (neo123)


Lesenswert?

Hast du die Ansel Register richtig gesetzt?

von Max H. (hartl192)


Lesenswert?

Ich habe gerade im DB nachgeschaut, der Pin hat diese Funktionen:
RC0/T1OSO/T13CK
Und dieser PIC hat das mit den ANSEL Registern nicht, man macht es mit 
dem ADCON1. RE<0:2> haben Analogfunktionen die du im ADCON1 deaktivieren 
musst.
Die Schaltung ist OK?

: Bearbeitet durch User
von Chris B. (dekatz)


Lesenswert?

Dominik schrieb:
> Bei den PINS RE0 – RE2 habe ich auch Schwierigkeiten.

(gelöscht da schon "abgehakt") ;-)

: Bearbeitet durch User
von Dominik (Gast)


Lesenswert?

Ich muss jetzt um Entschuldigung bitten und meinen Dank äußern.

Problem 1: RC0 -> Fehlende Lötverbindung (schäm) -> erledigt

Problem 2: RE0 – RE2 als Digital Input konfigurieren:
1
TRISE = 0b00000111; // RE0 - RE2 as input
2
ADCON1bits.PCFG = 0b1111; // RE0 - RE3 as Digital Input PCFG3:PCFG0: A/D Port Configuration Control bits
Funktioniert!

Nochmals vielen Dank für die Hilfe!

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.