00001 00002 00003 00004 00005 00006 00007 00008 00009 00010 00011 00012 00013 00014 //#define _TRACE_ (ENABLE) 00015 //_____ I N C L U D E S ___________________________________________________ 00016 #include "config.h" 00017 #include "debug.h" 00018 00019 00020 //_____ M A C R O S ________________________________________________________ 00021 00022 00023 //_____ D E F I N I T I O N S ______________________________________________ 00024 // Board Config 00025 00026 00027 //_____ D E C L A R A T I O N S ____________________________________________ 00028 00029 00030 00035 #if 0 00036 00037 //This does not compile 00038 00039 void ocd_enable(Bool ocd_activ) 00040 { 00041 Byte tmp; 00042 00043 //Save PPCON configuration 00044 tmp=PPCON; 00045 Mcu_set_sfr_page_ocd(); 00046 // OCD software entry sequence 00047 Ocd_soft_entry(); 00048 //Set Baudrate to appropriate value 00049 OBRL=OCD_BRL_VALUE; //OBRL=0x26; //for 19200 at 12Mhz 00050 //exit software monitor mode 00051 if(ocd_activ) 00052 MJB=0; 00053 //Restore initial SFR page 00054 Set_sfr_page( tmp ); 00055 } 00056 #endif 00057 00058 00059 00060 #if (_TRACE_==ENABLE) 00061 U8 _MEM_TYPE_SLOW_ g_trace_en=TRUE; 00062 00071 static void put_OCD( U8 val ) 00072 { 00073 while( OSCON & MSK_OCDTBSY ); 00074 # ifdef SOFT_OCD 00075 OSBUF = val; 00076 # else 00077 OSBUF = (val|0x80); 00078 # endif 00079 } 00080 00081 00082 00087 void trace_u32( U32 val ) 00088 { 00089 _MEM_TYPE_SLOW_ U32 div; 00090 _MEM_TYPE_SLOW_ U32 tmp; 00091 Bool filter=TRUE; 00092 if( FALSE==g_trace_en ) return; 00093 put_OCD( TRACE_START_CHAR ); 00094 00095 for( div=1000000000 ; div!=1 ; val%=div, div/=10 ) 00096 { 00097 tmp = val/div; 00098 if ( ( filter==TRUE ) && !tmp ) { continue; } 00099 filter=FALSE; 00100 put_OCD('0' + tmp ); 00101 } 00102 put_OCD('0' + val ); 00103 put_OCD( TRACE_STOP_CHAR ); 00104 } 00105 00110 void trace_u16( U16 val ) 00111 { 00112 _MEM_TYPE_SLOW_ U16 div; 00113 _MEM_TYPE_SLOW_ U16 tmp; 00114 Bool filter=TRUE; 00115 if( FALSE==g_trace_en ) return; 00116 put_OCD( TRACE_START_CHAR ); 00117 00118 for( div=10000 ; div!=1 ; val%=div, div/=10 ) 00119 { 00120 tmp = val/div; 00121 if ( ( filter==TRUE ) && !tmp ) { continue; } 00122 filter=FALSE; 00123 put_OCD('0' + tmp ); 00124 } 00125 put_OCD('0' + val ); 00126 put_OCD( TRACE_STOP_CHAR ); 00127 } 00128 00133 void trace_u8( U16 val ) 00134 { 00135 _MEM_TYPE_SLOW_ U8 div; 00136 _MEM_TYPE_SLOW_ U8 tmp; 00137 Bool filter=TRUE; 00138 if( FALSE==g_trace_en ) return; 00139 put_OCD( TRACE_START_CHAR ); 00140 00141 for( div=100 ; div!=1 ; val%=div, div/=10 ) 00142 { 00143 tmp = val/div; 00144 if ( ( filter==TRUE ) && !tmp ) { continue; } 00145 filter=FALSE; 00146 put_OCD('0' + tmp ); 00147 } 00148 put_OCD('0' + val ); 00149 put_OCD( TRACE_STOP_CHAR ); 00150 } 00151 00156 void trace_hex( U8 val ) 00157 { 00158 if( FALSE==g_trace_en ) return; 00159 put_OCD( TRACE_START_CHAR ); 00160 00161 if ((val >> 4) >= 10) { put_OCD('A' + (val >> 4) - 10); } 00162 else { put_OCD('0' + (val >> 4)); } 00163 00164 if ((val & 0x0F) >= 10) { put_OCD('A' + (val & 0x0F) - 10); } 00165 else { put_OCD('0' + (val & 0x0F)); } 00166 00167 put_OCD( TRACE_STOP_CHAR ); 00168 } 00169 #endif 00170 00171 #if (_TRACE_==ENABLE) 00176 void trace( const U8* str ) 00177 { 00178 U8 index=0; 00179 if( FALSE==g_trace_en ) return; 00180 put_OCD( TRACE_START_CHAR ); 00181 00182 while( 0 != str[index] ) 00183 { 00184 put_OCD( str[index++] ); 00185 } 00186 put_OCD( TRACE_STOP_CHAR ); 00187 } 00188 #endif 00189
1.3.7