Forum: Mikrocontroller und Digitale Elektronik PIC18F2550 digitaler Eingang RC4


von Harald E. (haes)


Lesenswert?

Hallo zusammen,

ich möchte beim PIC18F2550 den Pin RC4 als digitalen Eingang (NICHT USB) 
verwenden. Das Datenblatt sagt, dass dafür folgendes eingestellt werden 
muss:

UCONbits.USBEN = 0;
UCFGbits.UTRDIS = 1;

Ich habe dies so gemacht. Jedoch kann immer noch nicht über den Pin RC4 
eingelesen werden.

Was muss ich tun?

Vielen Dank für die Hilfe!

von Florian P. (ol1cr0n)


Lesenswert?

Hi,

habe jetzt mal im Datenblatt nachgeschaut. Sieht so aus als hättest du 
alles richtig gemacht. Zumindest das Datenblatt richtig verstanden ;)

Könntest du mal den Codeausschnitt posten? Also die init von PORTC und 
die Stelle an der du einlesen möchtest?


Gruß

von Harald (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Florian,

anbei findest Du den C-Code.

Vielen Dank für Deine Hilfe.

Gruß Harald

von Rumburak (Gast)


Lesenswert?

Hallo,

vielleicht den Code mal so umschreiben
statt der Do-While so:
while(1)
{
  if(PORTCbits.RC5)
  {
   PORTA=0xFF;
  }

 if(!PORTCbits.RC5)
  {
  PORTA=0x00;
  }
}

Auf welchen Compiler hast Du dein Programm geschrieben? XC8?

PORTA=(PORTCbits.RC5) ? 0xFF : 0x00;

Hab ich noch nie gesehen!

Gruß

von Volker S. (vloki)


Lesenswert?

Räum doch den Code bitte erst mal richtig auf, da steht ein Haufen Müll 
drin! UND schreib vernünftige Kommentare dazu.
1
   UCON = 0x00; ist doppelt
2
   UCONbits.USBEN = 0; oh nochmal
3
4
   TRISA = 0xFF;  ist doppelt
5
6
   for(;;)                                                    //for ever
7
   {
8
  
9
PORTA = 0x00;  was soll das?
10
PORTC = 0x00;
11
12
LATA = 0x00;   das hier ist genau das Gleiche! (warum willst du Inputs schreiben?)
13
LATC = 0x00;
Wie prüfst du den Code, Debugger?


<edit> Ähhh.... hast du zwei verschiedene Codes gepostet?

: Bearbeitet durch User
von Volker S. (vloki)


Lesenswert?

Rumburak schrieb:
> PORTA=(PORTCbits.RC5) ? 0xFF : 0x00;
>
> Hab ich noch nie gesehen!

Sieht man eher nicht so oft ;-)
https://de.wikibooks.org/wiki/C-Programmierung:_Ausdr%C3%BCcke_und_Operatoren#Bedingung_.3F:

von Rumburak (Gast)


Lesenswert?

Volker S. schrieb:
> Rumburak schrieb:
>> PORTA=(PORTCbits.RC5) ? 0xFF : 0x00;
>>
>> Hab ich noch nie gesehen!
>
> Sieht man eher nicht so oft ;-)
> https://de.wikibooks.org/wiki/C-Programmierung:_Au...

Ah, jetzt verstehe ich.

von Witkatz :. (wit)


Lesenswert?

Harald E. schrieb:
> ich möchte beim PIC18F2550 den Pin RC4 als digitalen Eingang

Und wie machst du das?
Du hast 3 verschiedene Quellcodes gepostet und in keinem wird RC4 
abgefragt. Im Beispiel-C-Code.pdf wird RC5 statt RC4 abgefragt, in 
den zwei verschiedenen Versionen von ISG3400VP.C wird weder RC4 noch RC5 
abgefragt. Oder habe ich was übersehen?

von jochen-paul (Gast)


Lesenswert?

Harald E. schrieb:
> Ich habe dies so gemacht. Jedoch kann immer noch nicht über den Pin RC4
> eingelesen werden.

Hallo,
kürzlich wollte auch ich RC5, b.z.w RC4 bei einem Pic16f1455 als 
Tasteneingang mit mit Hochziehwiderstand benutzen und hatte Probleme.
Diese zwei Eingänge sind sehr speziell, da sie eigentlich als spezielle 
Datenleitungen für das USB konzipiert sind.
Da ich alle anderen Pins als Ausgänge nutzen musste, musste ich also 
auch ich RC4 od. RC5 benutzen.
Wenn ich mich recht erinnere, konnte ich mir dabei nur helfen, indem ich 
einen tiefen(c.a.1K-Ohm)Hochziehwiderstand nahm und mit einem noch 
deutlich kleinerem Widerstand per Taste auf GND zog.
Ob das beim Pic18f2550 auch so ist?
Sicherheitshalber würde ich keinen tieferen Widerstand als 200 Ohm 
wählen.
MFG Jochen-Paul

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.