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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren