[an error occurred while processing this directive]
|
обработчик прерывания (мега16):
interrupt [EXT_INT1] void ext_int1_isr(void){
unsigned char null_h,null_m,null_s;
rtc_get_time(&h,&m,&s);
null_h=(h<10)?'0':'';
null_m=(m<10)?'0':'';
null_s=(s<10)?'0':'';
printf("%c%u:%c%u:%c%u\r\n",null_h,h,null_m,m,null_s,s);
}
выдает по УАРТУ время. Но если написать тоже самое по другому (не буду объснять зачем - надо):
interrupt [EXT_INT1] void ext_int1_isr(void){
unsigned char null_h,null_m,null_s;
unsigned char buff[10];
rtc_get_time(&h,&m,&s);
null_h=(h<10)?'0':'';
null_m=(m<10)?'0':'';
null_s=(s<10)?'0':'';
sprintf(buff,"%c%u:%c%u:%c%u\r\n",null_h,h,null_m,m,null_s,s);
puts(buff);
}
не работает нифига (в порт идет только символ 0x0A). Может есть какие-то ограничения на использования sprintf() в прерываниях?
E-mail: info@telesys.ru