mikrocontroller.net

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


Autor: Christian W. (christian_w)
Datum:

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

Autor: Peter (Gast)
Datum:

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

Autor: Christian W. (christian_w)
Datum:
Angehängte Dateien:

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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und dein Programm sieht wie aus?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

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

Autor: Christian W. (christian_w)
Datum:

Bewertung
0 lesenswert
nicht 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
DDRC |= (1<<PC0);
DDRC |= (1<<PC1); 
DDRD |= (1<<PD2); 
DDRD |= (1<<PD3); 
DDRD |= (1<<PD4); 

abfrage von PD0:
int status_l(void)
{
  uint16_t warten = 4; // Anzahl Schleifendurchläufe * ms = Gesamtdauer
 
  while( (PIND & (1<<PIND0)) && (warten != 0) ) // Solange Eingangssignal erkannt
  {
    _delay_ms(25);
    warten--;
  }

  // Signal immer noch vorhanden UND Zeit abgelaufen? (sonst fehlen 25ms)
  if ( (PIND & (1<<PIND0)) && (warten == 0) )
    return 1;
  else
    return 0;
}


abfrage von PD1:
int status_p(void)
{
  uint16_t warten = 1; // Anzahl Schleifendurchläufe * ms = Gesamtdauer
 
  while( (PIND & (1<<PIND1)) && (warten != 0) ) // Solange Eingangssignal erkannt
  {
    _delay_ms(25);
    warten--;
  }

  // Signal immer noch vorhanden UND Zeit abgelaufen? (sonst fehlen 25ms)
  if ( (PIND & (1<<PIND1)) && (warten == 0) )
    return 1;
  else
    return 0;
}

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

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

Autor: Christian W. (christian_w)
Datum:
Angehängte Dateien:

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

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.