TOPBBOY2006
Jr. Member
Offline
Posts: 14
|
|
« on: September 03, 2009, 03:57:44 PM » |
|
คือว่า ตอนนี้ผมทำโปรเจทเรื่อง SHT15 ครับ โดยวงจร มีการอ่านค่าจาก SHT15 จำนวน 6 ช่องครับ ผมใช้ขา SCK ของ SHT15 ทั้ง 6 ขา ต่อรวมกันเข้าที่ขา E0 ของ MCU เบอร์ 18F45K20 แล้วให้ขา SDA แต่ละขา ต่อเข้า A0 - A5 ครับ ส่วน LCD ต่อเข้า portD ครับ และมี ส่วนที่เชื่อมต่อกับ Hyper ผ่านทางขา RC6-RC7 ครับ
ตอนนี้สามารถอ่านอุณหภูมิ ทั้ง 6 ช่องไปแสดงที่ Hyper ได้แล้วครับ
ปัญหาที่เกิดขึ้น คือว่า เมื่อผม ต้องการแสดง อุณหภูมิ ที่ LCD ครับ ปรากฏว่า อาการมันเหมือน SHT15 ไม่ทำงาน จากปกติที่เคยแสดงอุณภูมิ ที่ Hyper เป็น 31.66 องศา มันกลับแสดง อุณหภูมิ เป็น 615.12 องศา และSHT15 มันไม่ตอบสนองต่ออุณหภูมิครับ ลักษณะเหมือนกับว่า ถ้ามีการแสดงอุณภูมิที่ LCD เมื่อรัย SHT15 จะไม่ทำงานทันที่ ไม่ว่าจะเอาฟังก์ชั่น LCD ไปวางส่วนไหนของโปรแกรม มันก้อไม่ทำงานแล้ว ผมเลยงง ว่า มันเป็น bug ของเจ้าตัว CCs หรือป่าว
พี่ๆ คนไหนพอรู้วิธี แก้มั้งครับครับ
โค้ดโปรแกรมค่อนข้างยาวครับเป็นพันบรรทัด ผมเลยเอาบางส่วนที่สำคัญให้ดูครับ เป็นฟังก์ชั่นที่ใช้อานค่าครับ
//============================================================================// // Function : read_Temp_Humdity() // //============================================================================// void read_Temp_Humdity(void) {
/////////////////////////////////// // delay >11ms before next command /////////////////////////////////// delay_ms(12);
//////////////////////////////////////////////////////////////////// // Read Temperature && relative Humidity for channel 0 // //////////////////////////////////////////////////////////////////// SHTStart_CH0(); //@1 start transmission SHTWrite_CH0(MEASURE_TEMP); //@2 measure temperature lValue_temp = SHTRead_CH0(); // fTemp_Averange[0] = (D1+(D2*lValue_temp)); // temperature calculation delay_ms(12); // delay 11ms before next command SHTSoftReset_CH0(); // // SHTStart_CH0(); // start transmission SHTWrite_CH0(MEASURE_HUMI); // measure relative humidity lValue_rh = SHTRead_CH0(); // fRh_lin = (C1+(C2*lValue_rh)+(C3*lValue_rh*lValue_rh)); // relative humidity calculation fRh_Averang[0] = (((fTemp_true-25)*(T1+(T2*lValue_rh)))+fRh_lin); // //////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////// // Read Temperature && relative Humidity for channel 1 // //////////////////////////////////////////////////////////////////// SHTStart_CH1(); //@1 start transmission SHTWrite_CH1(MEASURE_TEMP); //@2 measure temperature lValue_temp = SHTRead_CH1(); // fTemp_Averange[1] = (D1+(D2*lValue_temp)); // temperature calculation delay_ms(12); // delay 11ms before next command SHTSoftReset_CH1(); // // SHTStart_CH1(); // start transmission SHTWrite_CH1(MEASURE_HUMI); // measure relative humidity lValue_rh = SHTRead_CH1(); // fRh_lin = (C1+(C2*lValue_rh)+(C3*lValue_rh*lValue_rh)); // relative humidity calculation fRh_Averang[1] = (((fTemp_true-25)*(T1+(T2*lValue_rh)))+fRh_lin); // //////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////// // Read Temperature && relative Humidity for channel 2 // //////////////////////////////////////////////////////////////////// SHTStart_CH2(); //@1 start transmission SHTWrite_CH2(MEASURE_TEMP); //@2 measure temperature lValue_temp = SHTRead_CH2(); // fTemp_Averange[2] = (D1+(D2*lValue_temp)); // temperature calculation delay_ms(12); // delay 11ms before next command SHTSoftReset_CH2(); // // SHTStart_CH2(); // start transmission SHTWrite_CH2(MEASURE_HUMI); // measure relative humidity lValue_rh = SHTRead_CH2(); // fRh_lin = (C1+(C2*lValue_rh)+(C3*lValue_rh*lValue_rh)); // relative humidity calculation fRh_Averang[2] = (((fTemp_true-25)*(T1+(T2*lValue_rh)))+fRh_lin); // //////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////// // Read Temperature && relative Humidity for channel 3 // //////////////////////////////////////////////////////////////////// SHTStart_CH3(); //@1 start transmission SHTWrite_CH3(MEASURE_TEMP); //@2 measure temperature lValue_temp = SHTRead_CH3(); // fTemp_Averange[3] = (D1+(D2*lValue_temp)); // temperature calculation delay_ms(12); // delay 11ms before next command SHTSoftReset_CH3(); // // SHTStart_CH3(); // start transmission SHTWrite_CH3(MEASURE_HUMI); // measure relative humidity lValue_rh = SHTRead_CH3(); // fRh_lin = (C1+(C2*lValue_rh)+(C3*lValue_rh*lValue_rh)); // relative humidity calculation fRh_Averang[3] = (((fTemp_true-25)*(T1+(T2*lValue_rh)))+fRh_lin); // // //////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////// // Read Temperature && relative Humidity for channel 4 // //////////////////////////////////////////////////////////////////// SHTStart_CH4(); //@1 start transmission SHTWrite_CH4(MEASURE_TEMP); //@2 measure temperature lValue_temp = SHTRead_CH4(); // fTemp_Averange[4] = (D1+(D2*lValue_temp)); // temperature calculation delay_ms(12); // delay 11ms before next command SHTSoftReset_CH4(); // // SHTStart_CH4(); // start transmission SHTWrite_CH4(MEASURE_HUMI); // measure relative humidity lValue_rh = SHTRead_CH4(); // fRh_lin = (C1+(C2*lValue_rh)+(C3*lValue_rh*lValue_rh)); // relative humidity calculation fRh_Averang[4] = (((fTemp_true-25)*(T1+(T2*lValue_rh)))+fRh_lin); // //////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////// // Read Temperature && relative Humidity for channel 5 // //////////////////////////////////////////////////////////////////// SHTStart_CH5(); //@1 start transmission SHTWrite_CH5(MEASURE_TEMP); //@2 measure temperature lValue_temp = SHTRead_CH5(); // fTemp_Averange[5] = (D1+(D2*lValue_temp)); // temperature calculation delay_ms(12); // delay 11ms before next command SHTSoftReset_CH5(); // // SHTStart_CH5(); // start transmission SHTWrite_CH5(MEASURE_HUMI); // measure relative humidity lValue_rh = SHTRead_CH5(); // fRh_lin = (C1+(C2*lValue_rh)+(C3*lValue_rh*lValue_rh)); // relative humidity calculation fRh_Averang[5] = (((fTemp_true-25)*(T1+(T2*lValue_rh)))+fRh_lin); // //////////////////////////////////////////////////////////////////// num_Sensor = 6; for(i=0;i<6;i++) { if(SHT15 == Disable) { num_sensor --; fTemp_Averange = 0; fRh_Averang = 0; } } ////////////////////////////////////////////////////////////////////////// // Averange Temperatur && Averange Humidity Calculation // // fTemp_true : Averange Temperatur // // fRh_true : Averange Humidity // ////////////////////////////////////////////////////////////////////////// fTemp_true = (fTemp_Averange[0]+fTemp_Averange[1]+fTemp_Averange[2]+fTemp_Averange[3]+fTemp_Averange[4]+fTemp_Averange[5])/num_Sensor; fRh_true = (fRh_Averang[0]+fRh_Averang[1]+fRh_Averang[2]+fRh_Averang[3]+fRh_Averang[4]+fRh_Averang[5])/num_Sensor; //lcd_putc('o'); // printf(lcd_putc,"\f T = %d",num); printf("\f***********************************************\r\n"); printf("* Temperature && Relative Humidity *\r\n"); printf("***********************************************\r\n"); printf("* CH * Temperature * Relative Humidity *\r\n"); printf("***********************************************\r\n"); if(SHT15[0] == Enable) printf("* 0 * %3.2f C * %3.2f%% *\r\n",fTemp_Averange[0],fRh_Averang[0]); else printf("* 0 * - * - *\r\n"); if(SHT15[1] == Enable) printf("* 1 * %3.2f C * %3.2f%% *\r\n",fTemp_Averange[1],fRh_Averang[1]); else printf("* 1 * - * - *\r\n"); if(SHT15[2] == Enable) printf("* 2 * %3.2f C * %3.2f%% *\r\n",fTemp_Averange[2],fRh_Averang[2]); else printf("* 2 * - * - *\r\n"); if(SHT15[3] == Enable) printf("* 3 * %3.2f C * %3.2f%% *\r\n",fTemp_Averange[3],fRh_Averang[3]); else printf("* 3 * - * - *\r\n"); if(SHT15[4] == Enable) printf("* 4 * %3.2f C * %3.2f%% *\r\n",fTemp_Averange[4],fRh_Averang[4]); else printf("* 4 * - * - *\r\n"); if(SHT15[5] == Enable) printf("* 5 * %3.2f C * %3.2f%% *\r\n",fTemp_Averange[5],fRh_Averang[5]); else printf("* 5 * - * - *\r\n"); printf("***********************************************\r\n"); printf("* Average * %3.2f C * %3.2f%% *\r\n",fTemp_true,fRh_true); printf("***********************************************\r\n"); }
|