Fubarino (микрочип pic32mx), прерывание второго таймера не срабатывает
volatile uint32_t counter_timer = 0;
void __USER_ISR myISR() {
counter_timer++;
clearIntFlag(_TIMER_3_IRQ);
}
void __USER_ISR myISR_timer_four() {
clearIntFlag(_TIMER_4_IRQ);
TMR4 = 0x16E3600;
Serial.print("hi\n");
if(PORTAbits.RA10 != 1){
LATAbits.LATA10 = 1;
}
else{
LATAbits.LATA10 = 0;
}
}
void setup{
T3CONbits.TCS = 0b0; // Бит выбора источника тактового сигнала таймера
T3CONbits.TCKPS = 0b000; //0b111; // Биты выбора предварительной шкалы таймера на входе
T3CONbits.ON = 0b1; //0;//0b1;
asm("nop \n");
T4CONbits.TCS = 0b0;
T4CONbits.TCKPS = 0b000;
T4CONbits.T32 = 0b1;
TMR4 = 0x16E3600; // половина от 48 мГц.
T4CONbits.ON = 0b1;
setIntVector(_TIMER_3_VECTOR, myISR);
setIntPriority(_TIMER_3_VECTOR, 4, 0);
clearIntFlag(_TIMER_3_IRQ);
setIntEnable(_TIMER_3_IRQ);
setIntVector(_TIMER_4_VECTOR, myISR_timer_four);
setIntPriority(_TIMER_4_VECTOR, 1, 0);
clearIntFlag(_TIMER_4_IRQ);
setIntEnable(_TIMER_4_IRQ);
TRISAbits.TRISA10 = 0; // Желтый светодиод Fubarino на борту
}
void loop() {
delay(500);
Serial.println(counter_timer);
Serial.println(TMR4, DEC);
}
Привет,
Я хочу использовать несколько прерываний, я получил информацию из документа, который я получил от: Majenko Technologies. прерывание, связанное с Timer3, работает, это был пример кода в pdf. теперь я "собрал" второе прерывание привязано к timer4, копирует, вставляет и адаптирует, но это не работает.
Я могу распечатать "контент" регистра timer4, и он запущен.
Я сделал что-то не так? поисковая система не дала ответа.
@NaturalDemon, 👍1
1 ответ
▲ 0
Проблема заключалась в том, что вам нужно объединить четный и следующий нечетный таймеры (см. техническое описание используемого вами микрочипа), чтобы сформировать 32-битный таймер.
,
@NaturalDemon
Смотрите также:
- Использование millis() и micros() внутри процедуры прерывания
- Подсчет импульсов с прерыванием
- Устранение дребезга кнопки с помощью прерывания
- Программа arduino выдаёт ошибку expected //primary-expression before ')' token error: //expected ';' before '}' token E
- Почему необходимо использовать ключевое слово volatile для глобальных переменных при обработке прерываний в ардуино?
- Как сгенерировать аппаратное прерывание в mpu6050 для пробуждения Arduino из режима SLEEP_MODE_PWR_DOWN?
- Использование поворотных энкодеров с прерываниями смены контактов
- Arduino непрерывно считывает значение АЦП с помощью прерывания