LTC1731 Interface

Gast #2940609
Lesenswert?

Ah OK danke, aber wie geht das genau? Denn der Output wird ja als Output 
konfiguriert und der Input als Input. Der Input erkennt ja sowieso nur 
High oder Low und mit dem Output gebe ich das ja.
Ich habe ja PortB und DDRB z.B.
Gast #2940661
Lesenswert?

der Output wird eben nicht einfach als Output konfiguriert, sondern 
quasi als Open Emitter Ausgang. Das Bit in PORTB ist immer 1 und als 
logischer Port wird das DDRB-Bit benutzt.

Damit wird dann der effektive Pullup-Widerstand zwischen 100k und knapp 
2k umgeschaltet. Um die 3 Ladezustände zu unterscheiden müsste das 
Programm ungefähr so aussehen:
1
PORTB |= CHRG_OUT;
2
DDRB |= CHRG_OUT;
3
if ((PORTB & CGRG_IN) == 0) {
4
   status = Charging;
5
}
6
else {
7
   DDRB &= ~CHRG_OUT;
8
   if ((PORTB & CHRG_IN) == 0) {
9
      status = C_10;
10
   }
11
   else {
12
      status = Stop;
13
   }
14
}
Gast #2949345
Lesenswert?

[c]
x1 =0;
y1 =0;

DDRC  = 0b00000100;            //0= Eingang; 1 = Ausgang
if  (!(PINC & CHRG_IN )) {
x1 = 1;
}
DDRC  = 0b00000000;            //0= Eingang; 1 = Ausgang
if  (!(PINC & CHRG_IN )) {
  y1 = 1;
}
if (x1 == 1 & y1 ==1){
  display_ptext("Charging",2,0);
}
if (x1 == 0 & y1 ==1){
  display_ptext("C/10    ",2,0);

}
else if (y1 ==0){
display_ptext("Stop    ",2,0);
}
[/]

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