Hallo,
ich möchte int werte über die eingebaute uart meines atmega8 ausgeben,
soweit so gut.
Ich benutze dafür die lib von fleury,dass funktioniert auch eigentlich
problemslos ,ich habe mir zur Ausgabe meiner integerwerte eine kleine
unterfunktion gebaut,die mir zuerst die Werte in lesbar zeichen umsetzt,
siehe hier.
1 | ...
|
2 |
|
3 | #include <stdlib.h> // enthällt die Umwandlung von int zu char (itoa)
|
4 |
|
5 | ...
|
6 |
|
7 | //Deklaration der Funktionsprototypen
|
8 |
|
9 | void send_int_uart(int value); // Deklaration für UART INt SEND Unterfunktion
|
10 |
|
11 | ...
|
12 |
|
13 | //Unterfunktion Integerwert über uart ausgeben
|
14 | void send_int_uart(int value)
|
15 | {
|
16 | char buffer [33];
|
17 | itoa (value,buffer,10);
|
18 | uart_puts(buffer);
|
19 | uart_puts("\n\r");
|
20 |
|
21 | }
|
22 | ...
|
Nun zu meinem Problem:
Ich verwende diese Funktion in einer ISR des Timer0.
Wenn ich ich das so compiliere..
1 | ...
|
2 |
|
3 | //uart_puts("Wert1:");
|
4 | //send_int_uart(wert1);
|
5 | uart_puts("Wert2:");
|
6 | send_int_uart(wert2);
|
7 | count_1s = 0;
|
8 | ...
|
läuft alles wunderbar und der wert2 wird ausgegeben, wenn ich nun wert1
mitausgeben will
1 | ...
|
2 |
|
3 | uart_puts("Wert1:");
|
4 | send_int_uart(wert1);
|
5 | uart_puts("Wert2:");
|
6 | send_int_uart(wert2);
|
7 | count_1s = 0;
|
8 | ...
|
bekomme ich vom compiler kein error/warning, aber mein µc hält einfach
an sobald er zu dieser Stelle kommt.
Nun der Gretchenfrage... wo steckt der Fehler?
Muss dazu sagen das die ISR der Overflowroutine meines Timers ist , die
alle 100us kommt, ist das evtl. zu viel für meinen Chip( betreibe den
mit einem externen 8 Mhz Quarz, fusebits sind auch richtig gesetzt).
Ich benutz zum kompilieren winavr, optimierungsstufe ist S.
So hoffe ich habe alle nötigen Angaben gemacht und jemand findet meinen
denkfehler.
MFG