www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik PORT-PINS als Jumper AVR (Ethernut 2)


Autor: Christian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: holger (Gast)
Datum:

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

Mir auch nicht;)

Autor: heinzhorst (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

#define GESTECKT 1
#define UNGESTECKT 0

unsigned char jumper;

B1 = 0;
if (!B0){
  B1 = 1
  if(B0){
    jumper = GESTECKT;
  }
  else{
    jumper = UNGESTECKT;
  }
}


Autor: Christian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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);
}

/*...*/

Autor: Christian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
...hmmm...
...bin jetzt mal auf Port-E weitergewandert...
...mit Bit 6 als Input und Bit 7 als Output funzt es nun...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.