UART. sende probl.

Gast #1219611
Lesenswert?

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
#1219654
Lesenswert?

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

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