Forum: Mikrocontroller und Digitale Elektronik PD0 (RXD) und PD1 (TXD) am ATMega8 ganz normal als I/O PINs nutzbar?


von Christian W. (christian_w)


Lesenswert?

hallo zusammen,

hab ein problem mit dem PD0 (RXD) und PD1 (TXD) pin.

kann ich diese ganz normal als I/O pins verwenden?

weil: jedesmal wenn das programm durchläuft, habe ich an diesen beiden 
pins eine spannung von 1,12 volt!

danke

christian ;)

von Peter (Gast)


Lesenswert?

Man kann diese Ports als ganz normale I/O's verwenden.
Du musst genau wie bei den anderen Ports einstellen ob Du
einen Eingang oder Ausgang haben willst. Im Moment hast Du 
wahrscheinlich
als Eingang und ohne PullUp konfiguriert. Daher diese Spannung denk ich 
mal.

von Christian W. (christian_w)


Angehängte Dateien:

Lesenswert?

hmmm...

also ich habe an diesen beiden I/O pins einen pulldown widerstand von 
10k auf masse, und einen eingangswiderstand von 33k zum signaleingang 
+12v.

trotzdem verbleiben mir, nachdem das programm läuft, 1,12 volt an diesen 
pins... und manchmal erkennt genau deswegen der uC einen signaleingang, 
wo aber überhaupt keiner ist...

von Karl H. (kbuchegg)


Lesenswert?

Und dein Programm sieht wie aus?

von Karl H. (kbuchegg)


Lesenswert?

Betreibst du deinen Mega mit 3.3V?

Wenn ich deinen Spannungsteiler durchrechne, komme ich drauf, dass du 
bei 12V nur 2.8 V am Eingang haben wirst.
Bei einer 5V Versorgung bist du da weit in der Grauzone, in der die 
Spannung nicht eindeutig 0 und auch nicht eindeutig 1 ist.

Das erklärt natürlich nicht, wo die 1.2V herkommen, wenn du extern 0V 
anlegst. Ich könnte mir vorstellen, dass du irgendwo irrtümlich den 
internen Pullup aktiviert hast. Daher die Frage nach dem Programm.

von Christian W. (christian_w)


Lesenswert?

der atmega läuft über einen 7805 mit 5 v versorgungsspannung.
hier ist das programm, das die zwei eingänge abfragt. durch verschiedene 
messungen habe ich herausgefunden, dass der I/O pin immer exakt bei 1,73 
V einschaltet und bei 1,43 V ausschaltet. das sollte meiner meinung nach 
passen, wenn der spannungsteiler 2,8 Volt liefert? hm........

konfiguration der I/O pins
1
DDRC |= (1<<PC0);
2
DDRC |= (1<<PC1); 
3
DDRD |= (1<<PD2); 
4
DDRD |= (1<<PD3); 
5
DDRD |= (1<<PD4);

abfrage von PD0:
1
int status_l(void)
2
{
3
  uint16_t warten = 4; // Anzahl Schleifendurchläufe * ms = Gesamtdauer
4
 
5
  while( (PIND & (1<<PIND0)) && (warten != 0) ) // Solange Eingangssignal erkannt
6
  {
7
    _delay_ms(25);
8
    warten--;
9
  }
10
11
  // Signal immer noch vorhanden UND Zeit abgelaufen? (sonst fehlen 25ms)
12
  if ( (PIND & (1<<PIND0)) && (warten == 0) )
13
    return 1;
14
  else
15
    return 0;
16
}

abfrage von PD1:
1
int status_p(void)
2
{
3
  uint16_t warten = 1; // Anzahl Schleifendurchläufe * ms = Gesamtdauer
4
 
5
  while( (PIND & (1<<PIND1)) && (warten != 0) ) // Solange Eingangssignal erkannt
6
  {
7
    _delay_ms(25);
8
    warten--;
9
  }
10
11
  // Signal immer noch vorhanden UND Zeit abgelaufen? (sonst fehlen 25ms)
12
  if ( (PIND & (1<<PIND1)) && (warten == 0) )
13
    return 1;
14
  else
15
    return 0;
16
}

von Karl H. (kbuchegg)


Lesenswert?

Da du PD2 bis PD4 als Ausgänge benutzt:
Es ist dir nicht zufällig dort irgendwo passiert, dass du irrtümlich 
Port D0 oder Port D1 auf 1 setzt?

Nicht umsonst heißt es: Zeig alles!
Der Fehler sitzt des öfteren nicht dort wo du ihn vermutest. Denn sonst 
hättest du ihn selber gesehen.


Zum Spannungsteiler:
Ich finde es trotzdem keine gute Idee, wenn du dich darauf verlässt, 
dass die 2.9V als High gewertet werden. Du hast 12V, du hast den 
Spannungsteiler in der Hand, im Moment seh ich keinen Grund warum man 
den nicht so dimensionieren kann, dass bei 12V hinten auch wirklich ~5V 
rauskommen.
Aber das ist eine andere Baustelle.

von Christian W. (christian_w)


Angehängte Dateien:

Lesenswert?

hallo,

hab hier mal die komplette c-datei angehängt wie gewünscht. da sehen ja 
dann 4 augen mehr, als 2. das stimmt.

das mit dem spannungsteiler ist so beabsichtigt, da das modul im auto 
verwendet wird, und da bis zu 15,5 volt auftreten, ich will mir den chip 
nicht zerschießen wegen zu hoher eingangsspannung...

wieviel eingangsspannung verträgt eigentlich ein I/O pin? 5 volt oder? 
hmmm.....

hab ganz unten noch was eingefügt dass mir die dataregister der 
entsprechenden pins löscht. seitdem ist keine spannung mehr von 1,12 
volt an den pins, sondern saubere 0,00 v wie es sich gehört. habe aber 
immer noch nicht begriffen, warum! :-)))

christian

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.