Also die Variable "temp" verwendet Peter Dannegger in seinem Progra m für die aktuelle Temperatur . Somit wollte ich immer wenn die ID vom 1 Sensor angesprochen wird die ich in "temp1" speichern will, über diese if Bedingung.
Die Änderungen hab ich in der tempmeas.c vorgenommen und sieht dann folgender maßen aus.
Die Berechnungen der Variablen "temp" bei der ausgabe habe ich so übernommen und funktioniert auch... Nur wenn ich versuche die temp1 auszugeben wird nur 0 angezeigt...Code:void start_meas( void ){ if( W1_IN & 1<< W1_PIN ){ w1_command( CONVERT_T, NULL ); W1_OUT |= 1<< W1_PIN; W1_DDR |= 1<< W1_PIN; // parasite power on }else{ uputsnl( "Short Circuit !" ); } } void read_meas( void ) { uchar id[8], diff; uchar s[30]; uchar sa[30]; uchar i; uint temp; uint temp1; for( diff = SEARCH_FIRST; diff != LAST_DEVICE; ){ diff = w1_rom_search( diff, id ); if( diff == PRESENCE_ERR ){ uputsnl( "No Sensor found" ); break; } if( diff == DATA_ERR ){ uputsnl( "Bus Error" ); break; } if( id[0] == 0x28 || id[0] == 0x10 ){ // temperature sensor uputs( "ID: " ); for( i = 0; i < 8; i++ ){ sprintf( s, "%02X ", id[i] ); uputs( s ); } w1_byte_wr( READ ); // read command temp = w1_byte_rd(); // low byte temp |= (uint)w1_byte_rd() << 8; // high byte if( id[0] == 0x10 ) // 9 -> 12 bit temp <<= 3; sprintf( s, " T: %04X = ", temp ); // hex value uputs( s ); sprintf( s, "%4d.%01døC", temp >> 4, (temp << 12) / 6553 ); // 0.1øC uputsnl( s ); } if (id == 0xB37C720108009B) { temp = temp1; sprintf( sa, " T: %04X = ", temp1 ); // hex value uputs( sa ); sprintf( sa, "%4d.%01døC", temp1 >> 4, (temp1 << 12) / 6553 ); // 0.1øC uputsnl( sa ); } } uputsnl( "" ); }







Zitieren
Lesezeichen