Discussion:
[ethersex-devel] Wie interne Pull-Ups aktivieren bei der Initialisierung?
p***@t-online.de
2016-02-19 07:39:02 UTC
Permalink
Hallo,
ich habe ein paar Fragen zur Initialisierung der Ports des ATMEGAs und
hoffe mir kann Jemand auf die SprÃŒnge helfen:
 
1.) Direkt am Anfang in main() werden die DDRs der Ports gesetzt wie in
pinning.c definiert, welches sich wiederum aus der pinning.m4 Datei und/oder der
named_pin.c ergibt. Habe ich das so richtig verstanden?
 
2.) Anschließend werden in main() die PORT Register durch die Funktion
portio_init() in core/portio/portio.c initialisiert, wie in pinning.c definiert,
welches sich wiederum aus der pinning.m4 Datei und/oder der named_pin.c ergibt.
Habe ich das so richtig verstanden?
 
3.) Soweit zum VerstÀndnis, jetzt aber zu meinem Problem. Ich habe
NAMED_PIN_SUPPORT aktiviert und in meiner Config einige Pins als OUTPUT und
einen PIN als INPUT active LOW definiert. Wenn ich das ganze compiliere werden
die DDRs fÃŒr meine konfigurierten PINs korrekt gesetzt jedoch wird der interne
Pull-Up fÃŒr den einen INPUT Pin nicht aktiviert. In named_pin.c finde ich
folgendes:
 
/* If input and active low set pullup */
    if (input &&
(pgm_read_byte(&portio_pincfg[i].active_high) == 0))
      vport[port].write_port(port,
vport[port].read_port(port) | _BV(pin));
    i++;
  }
 
Da ich den einen INPUT Pin als active LOW in NAMED_PIN definiert habe, wÀre
ich davon ausgegangen, dass die Funktion dafÃŒr sorgt, dass der Pull-Up bei der
Initialisierung aktiviert wird. Wird er aber nicht.
 
Hat Jemand einen Hinweis woran das liegen könnte??
 
Danke und Gruß,
Pewel

Loading...