Naprosto souhlas. Smysl to má v kódu/cyklu, který trvá <1ms.aby treba v nekterem preruseni neprobehla-neutekla na pozadi DOBA pres nami testovanou mez
Použití ve while((doba % 1000) !=0) si to dokážu představit, ale v if((doba % 1000) !=0) už ne
Naprosto souhlas. Smysl to má v kódu/cyklu, který trvá <1ms.aby treba v nekterem preruseni neprobehla-neutekla na pozadi DOBA pres nami testovanou mez
Kód: Vybrat vše
#define Period100ms 10
#define Period1sec 100
volatile unsigned long Counter;
volatile unsigned char Flag1sec;
void InterruptHandler10ms(void) {
// ....
Counter++;
if (!(Counter % Period100ms)) {
// Delej neco rychleho, (mnohem kratsiho nez 10 ms) kazdych 100ms
}
if (!(Counter % Period1sec)) {
Flag1sec = 1; // Info pro hlavni smycku pro provedeni akce PRIBLIZNE kazdou sekundu
}
// ....
}
Kód: Vybrat vše
// Hlavni smycka
while (1) {
// ....
if (Flag1sec) {
Flag1sec = 0; // Shodit pro dalsi pouziti
// Delej neco priblizne kazdou sekundu, napr:
if (EthernetCableConnected()) {
ActivateEthernetComm();
}
}
// ....
}
Jistěže, stejně jako na všechny ostatní členy:pgerla píše:Pirxi, je na Vás nějaký kontakt? Chtěl bych se pobavit o ultrazvuku. Měření větší než malé vzdálenosti.