www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Uart0 Uart1 initialisieren.


Autor: V2mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hey Leute,

erstmal frohe Ostern und das ihr auch schön die bunten Eier findet...

also mein Problem:

im Rahmen eines Projekts mach ich eine Alarmanlage die GPS-Daten via 
GSM-Netz an den Besitzer senden soll....

leider bin ich im Mikrocontrollerprogrammieren noch ein totaler 
Anfänger...

hier kommt meine Frage:

hat jemand eine Beispielprogramm in dem 2 Uart-Schnittstellen 
initialisiert werden??? (ich verwende einen ATMEGA162)

hat vielleicht jemand ein ähnliches Programm, dass ich auf meine 
Anwendung abändern könnte....?

leider läuft mir die Zeit davon und will das Projekt noch zum laufen 
bekommen, wäre klasse von euch wenn ihr mir da ein bisschen unter die 
Arme greifen könntet...

Daten: Atmega162,Sim548c(gps-gsm-modul) auch 2 uart-Schnittstellen...

danke im Vorraus

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

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

Bewertung
0 lesenswert
nicht lesenswert
V2mike schrieb:
> Hey Leute,

> hier kommt meine Frage:
>
> hat jemand eine Beispielprogramm in dem 2 Uart-Schnittstellen
> initialisiert werden??? (ich verwende einen ATMEGA162)

Die werden auch nicht anders initialisiert als bei einem Prozessor der 
nur eine UART hat.
Die Register bzw. die zu setzenden Bits heißen ein wenig anders, weil 
die Nummer der UART im Bitnamen mit enthalten ist.

Aber das ist dann eigentlich schon der ganze Unterschied.

Ein bischen Datenblattstudium und Funktionen die mit einer UART umgehen 
können und ein paar Minuten bis Stunden später (je nach Vorkenntnisse) 
sollte das eigentlich laufen.

Autor: ... (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
z.B.
[c]
void uart0_init(int BaudRate)
{
  int ubrr0 = (F_CPU  16  BaudRate - 1);  // Baudrate UART0 einstellen
  UBRR0H = (unsigned char)(ubrr0>>8);
  UBRR0L = (unsigned char)ubrr0;

  UCSR0C = (1<<URSEL0)|(3<<UCSZ00);    // UART0 Frame Format einstellen: 
8data, 1 Stop-bit, keine Parity
  UCSR0B = (1<<RXEN0)|(1<<TXEN0)|(1 << RXCIE0);  // UART0 Receiver und 
Transmitter einschalten
}

void uart1_init(int BaudRate)
{
  int ubrr1 = (F_CPU  16  BaudRate - 1);  // Baudrate UART1 einstellen
  UBRR1H = (unsigned char)(ubrr1>>8);
  UBRR1L = (unsigned char)ubrr1;

  UCSR1C = (1<<URSEL1)|(3<<UCSZ10)|(1<<UPM11);  // UART1 Frame Format 
einstellen: 8data, 1 Stop-Bit, even Parity
  UCSR1B = (1<<RXEN1)|(1<<TXEN1)|(1<<RXCIE1);  // UART1 Receiver und 
Transmitter einschalten
}

int main()        // Hauptprogramm

{


  uart1_init(9600);    // USART's initialisieren (Baudrate auf 9600 )
  uart0_init(9600);
        ....
        .....
        .......
}

Autor: ... (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mmh, eigentlich sollte das so aussehen, sorry:
void uart0_init(int BaudRate)
{
  int ubrr0 = (F_CPU / 16 / BaudRate - 1);  // Baudrate UART0 einstellen  
  UBRR0H = (unsigned char)(ubrr0>>8);
  UBRR0L = (unsigned char)ubrr0;
         
  UCSR0C = (1<<URSEL0)|(3<<UCSZ00);    // UART0 Frame Format einstellen: 8data, 1 Stop-bit, keine Parity 
  UCSR0B = (1<<RXEN0)|(1<<TXEN0)|(1 << RXCIE0);  // UART0 Receiver und Transmitter einschalten
}

void uart1_init(int BaudRate)
{    
  int ubrr1 = (F_CPU / 16 / BaudRate - 1);  // Baudrate UART1 einstellen  
  UBRR1H = (unsigned char)(ubrr1>>8);
  UBRR1L = (unsigned char)ubrr1;

  UCSR1C = (1<<URSEL1)|(3<<UCSZ10)|(1<<UPM11);  // UART1 Frame Format einstellen: 8data, 1 Stop-Bit, even Parity 
  UCSR1B = (1<<RXEN1)|(1<<TXEN1)|(1<<RXCIE1);  // UART1 Receiver und Transmitter einschalten 
}

int main()                            // Hauptprogramm

{
                            
  uart1_init(9600);                      // USART's initialisieren (Baudrate auf 9600 )
  uart0_init(9600);

.....
.....
.....
}

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Und wie macht man das mit 4 UARTs? Ich habe einen ATmega2560.

MfG Spess

Autor: ... (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>http://www.atmel.com/dyn/resources/prod_documents/...
>Seite 206

Danke.

MfG Spess

Autor: ... (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
bidde ;)

Autor: V2mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
danke erstmal, werd mal testen ob ichs hinbekommm...

Autor: V2mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
danke funktioniert soweit...
kann mir noch einer verraten wie man daten über uart senden und 
empfangen kann... bzw habt ihr da vielleicht auch ein kleines 
beispielprogramm dazu...???

Autor: sw uart (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

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.