Guten Abend,
ich versuche auf einem attiny2313 per UART Strings zu verschicken.
Das funktioniert auch, solange ich das ganze char für char mache,
allerdings nicht auf zusammenhängendes im Speicher.
1 | #include <avr/io.h>
|
2 |
|
3 | #define F_CPU 3686400L
|
4 | #include <util/delay.h>
|
5 |
|
6 | void usart_init(unsigned int baud) {
|
7 | /* Set baud rate */
|
8 | UBRRH = (unsigned char)(baud>>8);
|
9 | UBRRL = (unsigned char)baud;
|
10 | /* Enable receiver and transmitter */
|
11 | UCSRB = (1<<TXEN);
|
12 | /* Set frame format: 8data, 1stop bit */
|
13 | UCSRC = (1 << UCSZ1) | (1 << UCSZ0);
|
14 | }
|
15 |
|
16 | void usart_transmit(unsigned char data) {
|
17 | /* Wait for empty transmit buffer */
|
18 | while(!(UCSRA & (1<<UDRE)))
|
19 | ;
|
20 | /* Put data into buffer, sends the data */
|
21 | UDR = data;
|
22 | }
|
23 |
|
24 | int main() {
|
25 | char text[] = "hallo welt";
|
26 | int j = 0;
|
27 | usart_init(1);
|
28 |
|
29 | while(1) {
|
30 | _delay_ms(1000);
|
31 | usart_transmit('a');
|
32 | for(j = 0; j < sizeof(text); j++) {
|
33 | usart_transmit('a'+text[j]);
|
34 | }
|
35 |
|
36 | }
|
37 | while(1) {}
|
38 | }
|
Führt zur Ausgabe von a```````````a```````````a```````````a```````````.
Das lässt mich schließen, dass der Speicher nicht initialisiert wird,
aber warum sollte das so sein?
Compiler ist avr-gcc 4.7.2
Viele Grüße
rot