Forum: Compiler & IDEs Lesen des Pin Zustands für 1-Wire


von Marc A. (mark2013)


Lesenswert?

unsigned char PB2_Read(void)
{
  unsigned char pegel;
  DDRB = 0x00;

  pegel = PINB & 0x04;

  if(pegel == 0x04)
  {
    pegel = 0x01; // '1'
  }
  else
  {
    pegel = 0x00; // '0'
  }

  return pegel;

}
void PB2_HIGH(void)
{
  DDRB = 0x04;
  PORTB = 0x04;
}

void PB2_LOW(void)
{
  DDRB = 0x04;
  PORTB = 0x00;
}

Sind für die 1-Wire Übertragung diese Funktionen geeignet?
Oder muss ich hier noch irgendwie den PullUp Widerstand beachten?

von Michi (Gast)


Lesenswert?

mark Anderw schrieb:
> Oder muss ich hier noch irgendwie den PullUp Widerstand beachten?
Der PU-Widerstand ist essentiell für die Kommunikation. Er bleibt IMMER 
eingeschaltet. Geändert wird nur das Datenrichtungsregister, je nachdem, 
ob du senden oder empfangen willst.

von Conny G. (conny_g)


Lesenswert?

Warum nicht so?
1
unsigned char PB2_Read(void)
2
{
3
    DDRB = 0x00;
4
    return ( PINB & (1 << PB2 ) ) >> 3;
5
}

von Marc A. (mark2013)


Lesenswert?

Müsste das nicht :

unsigned char PB2_Read(void)
{
    DDRB = 0x00;
    return ( PINB & (1 << PB2 ) ) >> 2;
}
sein?

von Conny G. (conny_g)


Lesenswert?

Stimmt!

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.