Forum: Mikrocontroller und Digitale Elektronik TX / RX Port an Atmega 2560 lässt sich nicht aus/bzw anschalten


von Wolfgang M. (procrash)


Lesenswert?

Hallo,

weiss jemand wie die Ports auf Ein- bzw Ausgänge am Arduino 2560 Board 
definiert werden? Habe hier ein sehr komisches verhalten.

Folgender Code funktioniert nicht:

/*
 * PinTest.c
 */


#include <avr/io.h>

int main(void)
{
  DDRE =0xFF;
  PORTE = 0x00;

    while(1)
    {
    }
}

Der TX0 Pin zeigt mir immer einen Spannungspegel und ich weiss nicht 
warum.
Führe ich folgenden Code in der Arduino Umgebung aus, so geht es 
einwandfrei:

int txPin = 1;
int rxPin = 0;

void setup()
{
      pinMode(txPin, OUTPUT);      // Set Port as Output Port
      digitalWrite(txPin, LOW);   // Set TX Pin Low
}

void loop()
{

  for (;;) {
  }
}


Auf dem Board befinden sich 2 Mikrocontroller laut Schaltplan, wobei 
einer so programmiert ist dass er sich dem PC gegenüber als STK500 Board 
ausgibt und somit ein Programmiergerät simuliert.

Der Atmega 16 ist mit Widerständen an dem TX0 und RX0 Pin des Atmega2560 
angeschlossen und ich vermute dass evtl von diesem auch die Spannung 
kommt...

Ich habe auch bereits geschaut ob der objdump der Arduino Umgebung mir 
irgendwie weiterhelfen könnte aber leider ist dass ein Dschungel von 
Makros und Funktionsaufrufen um einen einfachen Port zu definieren und 
irgendwie komme ich da leider nicht weiter.

Hat vielleicht jemand von euch dieses Board und kann mir sagen ob ich 
irgendwie zusätzlich noch was beachten muss um den Port einfach auf 
Ausgang zu schalten und auf Low Pegel zu ziehen?

von MWS (Gast)


Lesenswert?

Wenn der UART an ist, dann wird die normale Funktion der Portpins 
überfahren, da kannst Du soviel wie Du willst auf die Pins schreiben.

Um die Pins normal nutzen zu können, muss das UART aus sein. Das geht 
über UCSRBn und dort die TXENn und RXENn Bits löschen, n ist in Deinem 
Fall 0.

von Wolfgang M. (procrash)


Lesenswert?

Ist der UART per Default denn aus oder an?
Ich wüsste nämlich nicht dass ich den angestellt hätte. Könnte sein dass 
der Bootloader irgendwas komisches macht im Chip der per Default drauf 
ist aber der Code oben ist genau dass was ich programmiert habe mehr 
nicht.

von MWS (Gast)


Lesenswert?

Wolfgang M. schrieb:
> Ist der UART per Default denn aus oder an?
> Ich wüsste nämlich nicht dass ich den angestellt hätte.

Das kann ich Dir nicht sagen, da ich kein Arduinisch programmiere. 
Kann's zwar lesen, aber solche Details ob das per Default an ist, musst 
Du selbst in der Doku nachsehen.

Zumindest für den Bootlader muss das UART an sein, ob der dann das UART 
wieder ausschaltet, ist 'ne andere Sache. Aber ich kann mir vorstellen, 
dass das UART einfach angelassen wird.

von Wolfgang M. (procrash)


Lesenswert?

Ich teste jetzt einfach mal aus was passiert wenn ich den UART 
deaktiviere...

von Jesse (Gast)


Lesenswert?

Oder lies die Bits aus und guck ob die Uart an is...

von Wolfgang M. (procrash)


Lesenswert?

Genau das wars. Danke, da hätt ich ja noch ewig gesucht...

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.