Dziękuje @Krauser pomoglo.
Mam jeszcze jeden dylemat. Do mojego układu podłączyłem drugi termometr.
tylko że mam 4x wyświetlacz 7segmentowy to wyświetlam tylko jedną temperaturę w danej chwili.
A druga temperatura wyświetla się po wciśnięciu przycisku.
Układ działa tak że jak przycisnę przycisk i trzymam to co około 3s miga.
Nie jest to raczej spowodowane drganiami styku, tylko że w złym miejscu wstawiłem ten warunek sprawdzający przycisk?
Kod:
/* pętla nieskończona */
while(1) {
if(s1_flag) { /* sprawdzanie flagi tyknięć timera programowego co 1 sekundę */
/* co trzy sekundy gdy reszta z dzielenia modulo 3 == 0 sprawdzaj ilość dostępnych czujników */
if( 0 == (sekundy%3) ) czujniki_cnt = search_sensors();
/* co trzy sekundy gdy reszta z dzielenia modulo 3 == 1 wysyłaj rozkaz pomiaru do czujników */
if( 1 == (sekundy%3) ) DS18X20_start_meas( DS18X20_POWER_EXTERN, NULL );
/* co trzy sekundy gdy reszta z dzielenia modulo 3 == 2 czyli jedną sekundę po rozkazie konwersji
* dokonuj odczytu i wyświetlania temperatur z 2 czujników jeśli są podłączone, jeśli nie
* to pokaż komunikat o błędzie
*/
if( 2 == (sekundy%3)) {
if(~KEY_DOWN)
if (DS18X20_OK == DS18X20_read_meas(gSensorIDs[0], &subzero, &cel, &cel_fract_bits)) display_temp(0);
else {
cy1=E;
cy2=r;
cy3=r;
cy4=NIC;
}
if(KEY_DOWN)
if (DS18X20_OK == DS18X20_read_meas(gSensorIDs[1], &subzero, &cel, &cel_fract_bits)) display_temp(9);
else {
cy1=E;
cy2=r;
cy3=r;
cy4=NIC;
}
}
/* zerujemy flagę aby tylko jeden raz w ciągu sekundy wykonać operacje */
s1_flag=0;
} /* koniec sprawdzania flagi */
} /* koniec pętli nieskończonej */
}