Uart0 Uart1 initialisieren.

Gast #1659307
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
#1659374
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.
Gast #1659704
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);
        ....
        .....
        .......
}
Gast #1659711
Lesenswert?
• ▲
▼
mmh, eigentlich sollte das so aussehen, sorry:
1
void uart0_init(int BaudRate)
2
{
3
  int ubrr0 = (F_CPU / 16 / BaudRate - 1);  // Baudrate UART0 einstellen  
4
  UBRR0H = (unsigned char)(ubrr0>>8);
5
  UBRR0L = (unsigned char)ubrr0;
6
         
7
  UCSR0C = (1<<URSEL0)|(3<<UCSZ00);    // UART0 Frame Format einstellen: 8data, 1 Stop-bit, keine Parity 
8
  UCSR0B = (1<<RXEN0)|(1<<TXEN0)|(1 << RXCIE0);  // UART0 Receiver und Transmitter einschalten
9
}
10

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

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

21
int main()                            // Hauptprogramm
22

23
{
24
                            
25
  uart1_init(9600);                      // USART's initialisieren (Baudrate auf 9600 )
26
  uart0_init(9600);
27

28
.....
29
.....
30
.....
31
}

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.