Ich bin mal ein wenig durch den Quellcode gegangen.
1. Wäre schön, wenn du dich beim Kommentieren an einige Standards halten
würdest (Doxygen und so).
2. Die Einrückungen sind chaotisch
2. Sehr viele magische Zahlen die man eher in #defines schreiben und
auslagern sollte
Wenn ich solche Sachen wie
1 | TCNT0=( uint8_t )( -1*TIMERPRELOAD );
|
lese, froestelt es mir am linken Fuss.
Dito beispielhaft mit solchen Teilen
1 | if( n ) {
|
2 | stack[n][ERTK_STACKSIZE-32]=rom_tcb[n-1].param0&0xff;
|
3 | stack[n][ERTK_STACKSIZE-33]=rom_tcb[n-1].param0>>8;
|
4 | stack[n][ERTK_STACKSIZE-30]=( uint16_t )( rom_tcb[n-1].param1 )&0xff;
|
5 | stack[n][ERTK_STACKSIZE-31]=( uint16_t )( rom_tcb[n-1].param1 )>>8;
|
6 | }
|
Sachen wie "deadbeef" hören sich zwar lustig an, aber verderben mir als
externen so ziemlich die Lust an lesen
1 | void eRTK_get_sema( eRTK_TYPE semaid ) { /* Warten bis Semaphore frei ist und danach besetzen */
|
2 | if( semaid>=ANZSEMA ) deadbeef( SYS_UNKNOWN );
|
3 | while( xch( &sema[semaid], 1 ) ) { /* >0 = sema blockiert */
|
4 | sei();
|
5 | eRTK_wefet( 1 );
|
6 | }
|
7 | }
|
IMHO solltest du dir mal ein gutes Referenz-RTOS anschauen (Stichwort
Nuttx) und dir die Modularisierungs- und Syntaxaspekte gezielt
anschauen. Auch ist Nuttx eine Referenz der guten Dokumentation.
Hoffe meine Kritik hilft dir zu wachsen.