Uart richtig eingestellt

Gast #1002649
Hallo ich habe im netz einen Quelltext für, einen atmega16 
Zeichensenden, gefunden. Ich bin mir nicht sicher ob er mit 8 Bit und 
einem Stopbit arbeitet. Kann mir sagen ob das so ist und wenn nicht wo 
man das ändern muss.
1
#include <avr/io.h>  
2
#include <util/delay.h>
3

4
#define F_CPU 16000000L
5
#define BAUD 2400
6
#define ubrr_value (  ( F_CPU / (16*BAUD) ) - 1  )
7
 
8
void USART_Init(void);
9
void USART_Transmit(unsigned char data);
10

11
//***********************  main   *********************************
12

13
int main(void) 
14
{
15
uint8_t Speicher1 ;
16
uint8_t Speicher2;
17
DDRC = 0xff;   
18
DDRA = 0x00;                    
19
DDRB = 0x00;
20
USART_Init();
21

22

23

24
while(1) 
25
{        
26
USART_Transmit(0b10000111);  
27
       
28
 return 0;
29
}
30

31

32
//***************UART Initialisieren********************
33

34
void USART_Init(void) 
35
{  
36
    UBRRH = (unsigned char)(ubrr_value>>8);
37
    UBRRL = (unsigned char)ubrr_value;
38
    
39
    UCSRB = (1<<RXEN)|(1<<TXEN);
40
 UCSRC = (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);                                        
41
  
42
}
43

44

45

46
//********************   senden   ****************************
47

48

49
void USART_Transmit(unsigned char data) 
50
{
51

52
    /* Wait for empty transmit buffer */
53
    while ( !( UCSRA & (1<<UDRE)) );
54
    /* Put data into buffer, sends the data */
55
    
56
  UDR = data;
57
   
58
}
Persönliche Seite #1002719
Die Entscheidende Codestelle ist hier:
1
void USART_Init(void) 
2
{  
3
  // Baudrate einstellen
4
  UBRRH = (unsigned char)(ubrr_value>>8);
5
  UBRRL = (unsigned char)ubrr_value;
6
    
7
  // RX und TX enablen
8
  UCSRB = (1<<RXEN)|(1<<TXEN);
9

10
  // Frameformat einstellen
11
  UCSRC = (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);
12
}

Die Bits in UCSRC für ein bestimmtes Frameformat sind im Datenblatt 
erklärt (S. 166 in doc2466.pdf auf der atmel.com Seite 
http://www.atmel.com/dyn/resources/prod_documents/doc2466.pdf)
Persönliche Seite #1002743
Obacht, die Frage schrammt haarscharf am Trollen vorbei.

> UBRRH = (unsigned char)(ubrr_value>>8);

Die Zeile hat mit dem Frameformat nichts zu tun.

8N1 heisst 8 Datenbits, Keine Parität, 1 Stoppbit. Dazu kommt ein 
Startbit. Komplett gehen also pro Datenbyte 10 Bits über die Leitung.

Lies die Erklaärung zu RS232 und obiges Datenblatt.
Gast #1002764
Wie muss man das denn schreiben z.B. wenn ich 2 Byte übertragen möchte.
1
USART_Transmit(00010101);
2
USART_Transmit(00101100);

oder so:
1
USART_Transmit(0001010100101100);
Gast #1003085
>Wie muss man das denn schreiben z.B. wenn ich 2 Byte übertragen möchte.

>USART_Transmit(00010101);
>USART_Transmit(00101100);

>oder so:

>USART_Transmit(0001010100101100);

Ließ dir mal in ruhe die funktion eines UART's durch und die Bedeutung 
von Variablen in C (unsigned char)...
Gast #1003420
>Ließ dir mal in ruhe die funktion eines UART's durch und die Bedeutung
>von Variablen in C (unsigned char)...


Danke aber damit ist mir auch nicht geholfen ich denke das wird gemachet 
wie ich das zuerst geschreiben habe aber ich bin mir nicht sicher.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 18 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.