UART. sende probl.

Gast #1219611
Hallo zusammen, ich kommen hier nicht ganz weiter! aus meiner sicht, 
sollte der code funktionieren! denke ich habe ein hadware-problem!
aber um "dumme" fehler auszuschließen, wollte ich euch kurz bitten, den 
conde anzuschauen!
1
#include <avr/interrupt.h>
2
#include "usart.h"
3

4

5

6
ISR(USART_RXC_vect) 
7
{
8
Usart_Rx_Data();
9
}
10

11
int main(void)
12
{
13
uint16_t UBRR =(4000000/(16*9600))-1;// Interne Taktquelle
14

15
sei();    //Global Interrupt Enable Bit im Status Register gesetz
16
Usart_init(UBRR);
17
while(1)
18
{
19
Usart_Tx_Data('A');
20
}
21

22
}

...und hier die ".c" mit den funktionen!
1
#include <avr/io.h>
2
#include "usart.h"
3

4

5
void Usart_init(uint16_t baud)
6
{
7
UBRRH = (unsigned char)(baud>>8);
8
UBRRL = (unsigned char)baud;
9

10
/*
11
USART Control and Status Register B: UCSRCB
12

13
Bit 7 – RXCIE: RX Complete Interrupt Enable
14
Bit 6 – TXCIE: TX Complete Interrupt Enable
15
Bit 5 – UDRIE: USART Data Register Empty Interrupt Enable
16
Bit 4 – RXEN: Receiver Enable
17
Bit 3 – TXEN: Transmitter Enable
18
Bit 2 – UCSZ2: Character Size
19
Bit 1 – RXB8: Receive Data Bit 8
20
Bit 0 – TXB8: Transmit Data Bit 8
21
*/
22

23
UCSRB |= (1<<RXCIE) |(1<<TXEN) | (1<<RXEN);    //Inerrups-Flap bei RX aktiv, RX und TX aktiv 
24

25
/*
26
USART Control and Status Register C: UCSRC
27

28
Bit 7 – URSEL: Register Select
29
Bit 6 – UMSEL: USART Mode Select
30
Bit 5:4 – UPM1:0: Parity Mode
31
Bit 3 – USBS: Stop Bit Select
32
Bit 2:1 – UCSZ1:0: Character Size
33
Bit 0 – UCPOL: Clock Polarity
34
*/
35

36
UCSRC |= (1<<URSEL) | (1<<UCSZ1) | (1<<UCSZ0);    //Frame-Format: 8Data-Bits, 1Stop-Bit
37

38
}
39

40
void Usart_Tx_Data(unsigned char DATA)
41
{
42
    while (!(UCSRA & (1<<UDRE)))  /* warten bis Senden moeglich */
43
    {
44
    }
45
    UDR = DATA;    
46
}
ich wollte nur fix die usart_data funktion testen...aber nix :D
habe ich etwas übersehen!? benutze avr-studio/gcc!
danke für die antworten :)

mfg
Tom
Gast #1219642
hallo, danke für die schnellen antworten!
die receive funnktion habe ich noch nicht ferig geschrieben!
es ging mir jetzt erstmal um das senden, wass eigl funzen sollte :(

ich benutze den internen rc-takt 4mhz!

mfg
Tom
Gast #1219650
Sorry...

ich empfange nicht auf den hyperterminal!
er sollte mir doch viele "A" ausstucken oder nicht^^
ich habe den termianl auf 9600,8,n,1 konfiguriert!
genau wie die usart-schnittstelle auf meinem µC!

mfg
Tom
#1219654
Tom wrote:
> hallo, danke für die schnellen antworten!
> die receive funnktion habe ich noch nicht ferig geschrieben!
Ich fragte nicht, ob Du die Funktion fertig geschrieben hast oder nicht, 
sondern was die macht! Wenn mit dem Receiver noch nicht gearbeitet wird, 
gibt es keinen Grund, den überhaupt einzuschalten und den Interrupt 
freizugeben!

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 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.