PORT-PINS als Jumper AVR (Ethernut 2)

Gast #1755549
Lesenswert?

Moin!

Ich arbeite gerade mit einem Ethernut 2 Board, das in weitere Hardware 
eingebettet wird.

Bei der Programmierung ist jetzt der Wunsch nach einem Jumper 
entstanden, um zwischen zwei "Konfigurationen" (Default und Service) bei 
der Software unterscheiden zu können.

Knackpunkt ist, dass außer einen Jumper zu stecken dabei keine weiteren 
"Hardwaremodifikationen" entstehen dürfen.

Ich dachte zuerst, dass das einfach ginge.
Also z.B. Port-B-0 als Input, Port-B-1 als Output.
Und dann B0 wahlweise mit B1 verbinden oder halt nicht.

Aber nachdem, was ich jetzt ausprobiert habe, muss ich wohl doch B0 mit 
GND verbinden um ihn auf Low zu bekommen...
...was aber die nicht zulässige weitere Hardwaremodifikation bedeuten 
würde.

:-(

Bevor ich also jetzt das "Wunsch läßt sich nicht erfüllen" weitergebe, 
wollte ich mich nochmal rückabsichern, ob ich da evtl. einen 
konzeptionellen Fehler gemacht habe?

Leuchtet mir irgendwie nicht ein, dass ein Output-Pin nicht auch Input 
für einen Input-Pin sein kann...

...hmmm...

Oder muss ich mir mein Software nochmal ansehen?
Oder habe ich schon was am Board zerschossen?
...?

Viele Grüße
Christian
Gast #1755580
Lesenswert?

OK. Dann mal der softwareseitige Teil:

/*...*/

DDRB  &= ~(_BV(0)); //set Pin PB0 to input
DDRB  |=   _BV(1); // set Pin PB1 to output
PORTB |=   _BV(0); // activate PullUp on PB0
PORTB &= ~(_BV(1));  // set Pin PB1 to low

/*...*/

if(bit_is_set(PINB,0)) {
 fputs_P(PSTR("HIGH"),stream);
} else {
 fputs_P(PSTR("LOW"),stream);
}

/*...*/

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren