PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Wie geht gemischter Input/Output-Betrieb an einem Port



DirkPF
18.10.2014, 00:12
hi, ich programmiere noch nicht so lange und verstehe nicht immer alles sofort und habe ein kleines Problem :( : ich möchte bei meinem RN-Control am Port C einen gemischten Input/output-Betrieb vornehmen, d.h. einige Pins sollen Output sein, andere Input. Mit Output klappt ja soweit, aber Input geht nicht. Wie geht das, bzw. wie muss ich das programmieren? Ein kleines Beispiel würde mir schon helfen.
Ich habe folgendes geschrieben:

PinC.2=output
PinC.3=output
usw
PinC.5=Input
PortC.5=1

Wenn ich C.5 nun abfrage muss das xyz=pinc.5 oder Portc.5 heißen???


Danke

RoboHolIC
18.10.2014, 01:26
In der Regel kann man den Logikpegel eines IO-Pins immer zutreffend abfragen, unabhängig davon, ob er als Ein- oder Ausgang konfiguriert ist und auch unabhängig davon, ob der Pin wegen Überlastung den Soll-Pegel eventuell nicht erreichen kann.

Was nicht klappen darf ist, einen Pin als Eingang zu konfigurieren und dann ein Signal ausgeben zu wollen; das wäre nämlich das, was du mit PortC.5 machst. Man kann zwar was in das Ausgangsregister reinschreiben, aber es wird nicht nach aussen getrieben. Eingang heisst: die Ausgangstreiberstufe ist HighImpedance, ausser vielleicht ein interner Pullup lässt etwas Stromfluss zu.

Searcher
18.10.2014, 09:47
Wenn ich C.5 nun abfrage muss das xyz=pinc.5 oder Portc.5 heißen???


Hallo,
welcher µC und mit welcher Programmiersprache?

Gruß
Searcher

Tido
18.10.2014, 10:23
Hi,

sieht nach BASCOM aus.
Übersichtlicher wird es generell mit einem Alias:

Config PINC.1 = Output 'Ausgang
Led ALIAS PORTC.1 'dem Ausgang einen Namen geben

config PINC.5 = Input 'Eingang
PORTC.5 = 1 'Pullup aktivieren
Taster ALIAS PINC.5 'dem Eingang einen Namen geben

Do
PRINT Taster
IF Taster = 0 THEN Led = 1 'Taster betätigt, dann LED an - hier geht z.B. auch: IF not Taster THEN Led = 1
LOOP

DirkPF
18.10.2014, 11:51
Danke. Hab's hin bekommen.