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