optimized kernel
authorArthur Wolf <wolf.arthur@gmail.com>
Fri, 2 Nov 2012 17:24:31 +0000 (18:24 +0100)
committerArthur Wolf <wolf.arthur@gmail.com>
Fri, 2 Nov 2012 17:24:31 +0000 (18:24 +0100)
src/libs/Kernel.cpp
src/libs/Kernel.h
src/libs/StepTicker.cpp
src/main.cpp
src/modules/communication/utils/Gcode.cpp
src/modules/robot/Stepper.cpp
src/modules/tools/temperaturecontrol/TemperatureControl.cpp

index 7aa777c..d2638d2 100644 (file)
@@ -48,7 +48,11 @@ const ModuleCallback kernel_callback_functions[NUMBER_OF_DEFINED_EVENTS] = {
 Kernel::Kernel(){
 
     // Value init for the arrays
-    for( uint8_t i = 0; i < NUMBER_OF_DEFINED_EVENTS; i++ ){ this->hooks[i][0] = NULL; }
+    for( uint8_t i=0; i<NUMBER_OF_DEFINED_EVENTS; i++ ){ 
+        for( uint8_t index=0; index<32; index++ ){
+            this->hooks[i][index] = NULL; 
+        } 
+    }
 
     // Config first, because we need the baud_rate setting before we start serial 
     this->config         = new Config();
index 22db613..ccf3525 100644 (file)
@@ -70,7 +70,7 @@ class Kernel {
         Digipot*          digipot;
 
     private:
-        Module* hooks[NUMBER_OF_DEFINED_EVENTS][16]; // When a module asks to be called for a specific event ( a hook ), this is where that request is remembered
+        Module* hooks[NUMBER_OF_DEFINED_EVENTS][32]; // When a module asks to be called for a specific event ( a hook ), this is where that request is remembered
 
 };
 
index a926523..4fa5c9b 100644 (file)
@@ -206,6 +206,8 @@ extern "C" void TIMER0_IRQHandler (void){
         LPC_TIM0->MR0 += global_step_ticker->period;
     }
 
+    if( LPC_TIM0->MR0 > 10000 ){ __debugbreak(); }
+
 }
 
 #pragma GCC pop_options
index 9783b02..91f2d73 100644 (file)
@@ -87,27 +87,17 @@ int main() {
         i++;
     }
     */
-    
-   /* 
+   
+    /* 
     int i = 0;
     while( i <= 60 ){
         // Debug : launch file on startup
         
-        message.message = "G1 X40 Y0 F9000";
+        message.message = "G1 X60 Y0 F12000";
         message.stream = kernel->serial;
         kernel->call_event(ON_CONSOLE_LINE_RECEIVED, &message ); 
      
-        message.message = "G1 X40 Y1 F9000";
-        message.stream = kernel->serial;
-        kernel->call_event(ON_CONSOLE_LINE_RECEIVED, &message ); 
-   
-
-        message.message = "G1 X0 Y1 F9000";
-        message.stream = kernel->serial;
-        kernel->call_event(ON_CONSOLE_LINE_RECEIVED, &message ); 
-   
-
-        message.message = "G1 X0 Y0 F9000";
+        message.message = "G1 X0 Y0 F12000";
         message.stream = kernel->serial;
         kernel->call_event(ON_CONSOLE_LINE_RECEIVED, &message );
     
@@ -122,6 +112,7 @@ int main() {
     message.stream = kernel->serial;
     kernel->call_event(ON_CONSOLE_LINE_RECEIVED, &message ); 
 
+
     while(1){
         kernel->call_event(ON_MAIN_LOOP);
         kernel->call_event(ON_IDLE);
index 4fb6221..ef4c9a4 100644 (file)
@@ -61,7 +61,7 @@ void Gcode::prepare_cached_values(){
     }
     if( this->has_letter('M') ){
         this->has_m = true;
-        this->m = this->get_value('m');
+        this->m = this->get_value('M');
     }else{
         this->has_m = false;
     }
index 73e4d19..7fb75ff 100644 (file)
@@ -14,6 +14,9 @@
 using namespace std;
 #include "libs/nuts_bolts.h"
 
+#include <mri.h>
+
+
 Stepper* stepper;
 uint32_t previous_step_count;
 uint32_t skipped_speed_updates;
@@ -227,6 +230,9 @@ uint32_t Stepper::trapezoid_generator_tick( uint32_t dummy ) {
               }
               if(this->trapezoid_adjusted_rate < this->current_block->final_rate ) {
                  // this->kernel->streams->printf("final reached after %u when it should be %u\r\n", current_steps_completed, this->main_stepper->steps_to_move);
+                  //if( this->current_block->final_rate == 0 ){
+                  //  __debugbreak();
+                  //}
                   this->trapezoid_adjusted_rate = this->current_block->final_rate;
               } 
               this->set_step_events_per_minute(this->trapezoid_adjusted_rate);
index beab989..3bed01b 100644 (file)
@@ -90,6 +90,10 @@ void TemperatureControl::on_config_reload(void* argument){
 
 }
 
+#pragma GCC push_options
+#pragma GCC optimize ("O0")
+
+
 void TemperatureControl::on_gcode_execute(void* argument){
     Gcode* gcode = static_cast<Gcode*>(argument);
     if( gcode->has_m){
@@ -112,6 +116,9 @@ void TemperatureControl::on_gcode_execute(void* argument){
     } 
 }
 
+#pragma GCC pop_options
+
+
 void TemperatureControl::set_desired_temperature(double desired_temperature){
     this->desired_adc_value = this->temperature_to_adc_value(desired_temperature);
 }