مثالی از کدنویسی برای timeout در avr:
تابعی برای دریافت یک کاراکتر از طریق usart:
unsigned char receive_data(unsigned char *received_data)
{
/* Return value:
0: Timeout
1: Success
*/
timeout=TIMEOUT_VALUE;
do
{
if(UCSRA&(1«RXC))
{
*received_data=UDR;
return 1;
}
}
while(timeout);
return 0;
}
در وقفه یکی از تایمرها هم که با زمان مناسب اتفاق می افتد، مقدار timeout در صورت غیر صفر بودن کاهش می یابد:
if(timeout) timeout--;
@KnowledgePlus
Post #519
6K