Forum: Mikrocontroller und Digitale Elektronik USART Kommunikation


von Stefan (Gast)


Lesenswert?

Hallo an Alle,

ich möchte per USART mit dem AtMega16 eine Variable von uC-1 an den uC-2 
Senden. Das Programm stelle ich mir so vor:

Dazu habe ich zwei Fragen:
1. Kann das so funktionieren?
2. Kann ich zu Testzwecken mit dem selben uC das gesendete empfangen?

Vielen Dank.
_________________________________________________

#include <avr/io.h>
#include <avr/interrupt.h>
#include <stdint.h>


int main (void)

{


 UCSRB  |=  (1 UCSRB  << TXEN );
// Turn on the transmission circuitry

UCSRC   |=   (1 << URSEL) | (1 << UCSZ1) | (1 << UCSZ0);
// URSEL bit set to select the UCRSC register
// 8-bit character size

UBRRH = 0x00;
UBRRL = 0x03;
// UBRR = 3


UCSRA |= (0<< TXC);



while (1)
  {
while ((UCSRA & (1 << TXC)) == 0) {};
// Do nothing until transmission complete flag set

UDR =  0x03;
// soll später meine Variable werden.


  }

}

_________________________________________________

von retreti (Gast)


Lesenswert?

wenn du TXD RXD verbindest, dann sollte das gehen. Das geht auch 
beispielsweise bei den FTDI Chips die man an den PC per USB dranhängen 
kann. (ist auch oft praktisch zum debuggen von diesen verbindungen!)

am besten wärs du probierst den code oben einfach mal aus ;-)

von Klaus W. (mfgkw)


Lesenswert?

Aber RxD und TxD nicht auf der TTL-Seite verbinden, wenn ein MAX232
o.ä. angeschlossen ist!
Dann auf der RS232-Seite verbinden, sonst ist auf RxD sowohl der
Ausgang des MAX232 aktiv als auch TxD des MC; das könnte schief gehen.

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.