So:
UART_puts_l(volatile unsigned char *out, unsigned char length)
Überleg mal, was Du mit dem volatile bezwecken willst. Die Eigenschaft
"volatile" muss ja vom Code irgendwie umgesetzt werden - deswegen
musst Du sie einem Funktionsaufruf auch mitgeben.
Sonst wird die volatile-Variable in UART_puts_l behandelt wie eine ganz
normale Variable - und das wäre u.U. falsch.
Übrigens:
1 | ISR(SIG_OUTPUT_COMPARE1A) {
|
2 | if(value)
|
3 | UART_puts_l(textentry, 5);
|
4 | }
|
Wenn innerhalb einer ISR-Routine eine andere Funktion aufgerufen wird,
dann sichert gcc oft wesentlich mehr Register als bei einer ISR ohne
Funktionsaufruf. Deshalb würde ich so eine kleine Funktion direkt in
die ISR schreiben. Schau Dir mal den Assembler-Output an, welche
Unterschiede das regibt.
Gruß, Stefan