Hallo
Was mich verwirrt: Was ist an diesem Ungetüm eigentlich tiny (winzig)?
Für mein Empfinden ist das alles viel zu kompliziert. Die urprüngliche Form der Lib mit nur zwei Dateien ist meiner Meinung nach die beste Basis für eigene asuro-Programme. Wenn man verfolgt, wie häufig das Kompilieren der asuro-Programme am falschen Einbinden der Lib scheitert, kann man sich ausmalen, wie das mit dieser TinyLib wird.
Lustig finde ich, dass die alten "Sünden" auch hier wieder auftauchen:
FWD für Forward und RWD für Rückwards?
Beim ersten Überfliegen der Funktionen ist mir dies aufgefallen:
Code:
ISR(TIMER2_OVF_vect)
{
uint8_t temp_reg;
asm volatile( // TCNT2 += 0x25;
"in %[SUB_REG], %[TIMER_REG] \n\t"
"subi %[SUB_REG], %[OFFSET_2COMP] \n\t"
"out %[TIMER_REG], %[SUB_REG]"
: /* Out-Operanden */
[SUB_REG] "=&d" (temp_reg)
: /* In-Operanden */
[TIMER_REG] "I" (_SFR_IO_ADDR(TCNT2)),
[OFFSET_2COMP] "M" (-37 + 256) // GCC mag -37 alleine nicht
);
tick36kHz++;
...
}
(aus time.c der TinyLib)
Das sieht im Orginal (die Version mit dem PWM-Timer2 nach Waste) so aus:
Code:
SIGNAL (SIG_OVERFLOW2)
{
TCNT2 += 0x25;
count36kHz ++;
...
}
(aus asuro.c)
Warum einfach, wenn es auch kompliziert geht?
Gruß
mic
Lesezeichen