[En-Nut-Discussion] AVR: IDLE_HEARTBEAT_BIT

Uwe Bonnes bon at elektron.ikp.physik.tu-darmstadt.de
Fri Feb 20 20:39:58 CET 2009


Hello,

for me /arch/avr/os/nutinit.c looks like IDLE_HEARTBEAT_BIT is toggled each
time the idle Thread is entered. However to see what processing time is
left. I think it would be more usefull, if the bit is switched on with
entering sleep and switched off when leaving. 

Appended code implements a switch on/switch off, save on byte and some
perhaps some commands. 

Any comments?

Thanks
-- 
Uwe Bonnes                bon at elektron.ikp.physik.tu-darmstadt.de

Institut fuer Kernphysik  Schlossgartenstrasse 9  64289 Darmstadt
--------- Tel. 06151 162516 -------- Fax. 06151 164321 ----------
Index: arch/avr/os/nutinit.c
===================================================================
--- arch/avr/os/nutinit.c	(Revision 1033)
+++ arch/avr/os/nutinit.c	(Arbeitskopie)
@@ -468,8 +468,9 @@
 #if defined(__GNUC__) && defined(__AVR_ENHANCED__)
     uint8_t sleep_mode;
 #endif
+
 #ifdef IDLE_HEARTBEAT_BIT
-    uint8_t beat = 0;
+    sbi(IDLE_HEARTBEAT_DDR, IDLE_HEARTBEAT_BIT);
 #endif
 
     /* Initialize system timers. */
@@ -490,14 +491,7 @@
         NutThreadDestroy();
 
 #ifdef IDLE_HEARTBEAT_BIT
-        if ((beat = !beat) == 0) {
-            //UDR = '*';
-            cbi(IDLE_HEARTBEAT_PORT, IDLE_HEARTBEAT_BIT);
-        }
-        else {
             sbi(IDLE_HEARTBEAT_PORT, IDLE_HEARTBEAT_BIT);
-        }
-        sbi(IDLE_HEARTBEAT_DDR, IDLE_HEARTBEAT_BIT);
 #endif
 
 #if defined(__GNUC__) && defined(__AVR_ENHANCED__)
@@ -527,6 +521,9 @@
                 sbi(ADCSR, ADEN); // re-enable ADC
             }
 #endif
+#ifdef IDLE_HEARTBEAT_BIT
+            cbi(IDLE_HEARTBEAT_PORT, IDLE_HEARTBEAT_BIT);
+#endif
             set_sleep_mode(sleep_mode);
         }
 #endif



More information about the En-Nut-Discussion mailing list