Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
receiver.cpp
00001 #include "main.h" 00002 00003 extern Serial pc; 00004 DigitalOut myled2(LED2); 00005 char s[300]; 00006 enum steps {STEP_A,STEP_B,STEP_C}; 00007 steps state; 00008 int t[7]; 00009 int temps; 00010 int b_count; 00011 int last_value; 00012 00013 // TEST 00014 bool msgReady; 00015 string testString; 00016 00017 00018 void Receiver_init(void) 00019 { 00020 myled2 = 0; 00021 // s = ""; 00022 msgReady = false; 00023 state = STEP_A; 00024 00025 00026 00027 // Enable the pins on the device to use TIMER CAP2.0 on pin 30 00028 LPC_PINCON->PINSEL0 |= 3<<8; 00029 00030 NVIC_SetVector(TIMER2_IRQn, uint32_t(TIMER2_IRQHandler)); 00031 00032 // init Timer 2 (cap2.0 = DIP30, cap2.1 = DIP29) 00033 LPC_SC->PCONP |= (1 << 22); // Timer2 power on 00034 //LPC_SC->PCLKSEL1 |= (1 << 12); // Divide CCLK by 1 for Timer2 00035 LPC_TIM2->TC = 0; // clear timer counter 00036 LPC_TIM2->PC = 0; // clear prescale counter 00037 LPC_TIM2->PR = 0; // clear prescale register 00038 LPC_TIM2->TCR = (1 << 1); // reset timer 00039 LPC_TIM2->IR |= 1 << 0; // Clear MR0 interrupt flag 00040 LPC_TIM2->CCR |= (7 << 0); // enable cap2.0 rising-edge capture and falling-edge; interrupt on cap2.0 00041 //LPC_TIM2->TCR = 1; // start Timer2 00042 00043 NVIC_EnableIRQ(TIMER2_IRQn); //enable timer2 interrupt 00044 00045 b_count = 0; 00046 } 00047 00048 extern "C" void TIMER2_IRQHandler (void) 00049 { 00050 int ecart = 0; 00051 char buffer[1]; 00052 myled2 =!myled2; 00053 string endChar; 00054 00055 LPC_TIM2->IR |= 1 << 0; // Clear MR0 interrupt flag 00056 00057 switch (state) 00058 { 00059 case STEP_A: LPC_TIM2->TCR = 1; // start Timer2 00060 state = STEP_B; 00061 b_count = 0; 00062 s[0] = '0'; 00063 break; 00064 00065 case STEP_B: t[b_count-1] = LPC_TIM2->CR0; 00066 LPC_TIM2->TCR = (1 << 1); 00067 LPC_TIM2->TCR = 1; 00068 if(b_count>6) 00069 { 00070 state = STEP_C; 00071 //temps = (t[0] + t[1] + t[2] + t[3] + t[4] + t[5] + t[6])/7; 00072 temps = TIME; 00073 s[1] = '1';s[2] = '0';s[3] = '1';s[4] = '0';s[5] = '1';s[6] = '0';s[7] = '1'; 00074 last_value = 1; 00075 } 00076 00077 00078 break; 00079 case STEP_C: /*ecart = LPC_TIM2->CR0; 00080 if(ecart*1.5<temps) 00081 { 00082 sprintf(buffer, "%d", last_value); 00083 s+= buffer[0]; 00084 } 00085 else 00086 { 00087 last_value = 1-last_value; 00088 sprintf(buffer, "%d", last_value); 00089 s+= buffer[0]; 00090 } 00091 00092 endChar = s.substr((s.size()-8), 8); 00093 if(endChar == "00111110") 00094 {*/ 00095 state = STEP_A; 00096 testString = s; 00097 // s = ""; 00098 msgReady= true; 00099 // } 00100 00101 LPC_TIM2->TCR = (1 << 1); 00102 LPC_TIM2->TCR = 1; 00103 00104 break; 00105 } 00106 b_count++; 00107 } 00108 00109 void Receiver_thread(void const *args) 00110 { 00111 Receiver_init(); 00112 00113 while(1) 00114 { 00115 if(msgReady == true) 00116 { 00117 pc.printf("\n\rmessage recu: %d", b_count); 00118 b_count =0; 00119 msgReady= false; 00120 } 00121 } 00122 }
Generated on Wed Jul 27 2022 13:56:09 by
1.7.2