Перейти к содержанию
    

Lilia

Участник
  • Постов

    6
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Посетители профиля

Блок последних пользователей отключён и не показывается другим пользователям.

  1. Пытаюсь настроить систему событий Attiny1607, чтобы по срабатыванию таймера запускалось чтение АЦП. EVSYS.SYNCCH0 = 0x02; //TCA0_OVF_LUNF EVSYS.SYNCUSER0 = 0x01; //ADC0 Инициализация ADC: // Частота ADC: 208,333 kHz =20 000KHz/6 /16 // Опорное напряжение ADC: AVCC pin ADC0.CTRLA = 0x00; //Full 10-bit resolution. The 10-bit ADC results are accumulated or stored ADC.RES ADC0.CTRLB = 0x00; ADC0.CTRLC = 0x13;//CLK_PER divided by 16, Опорное напряжение ADC: AVCC pin ADC0.MUXPOS = 0x08; //начальный режим чтения с ножки (PB5-AIN8) ADC0.INTCTRL = ADC_RESRDY_bm;//Result Ready Interrupt Enable ADC0.EVCTRL = 1; //разрешить запуск по событию ADC0.CTRLA = ADC_ENABLE_bm;//включить АЦП ADC0.COMMAND = 0x01;//Start Conversion while ( (ADC0.INTFLAGS & 1)==0 );// подождём конца первого преобразования (флага прерывания ацп) asm("sei"::); // Разрешить глобальное прерывание ADC0.INTFLAGS |=1; Таймер работает, а ISR (ADC0_RESRDY_vect) не срабатывает. Помогите пожалуйста настроить регулярную работу АЦП.
  2. Все работает. Спасибо большое :) В режиме FRQ , прерывание действительно OVF. Надо было было его еще квитировать.
  3. Срабатывает прерывание OVF, со стабильной не зависящим от CMP0 частотой, выше чем 5КГц, на которые я настроила таймер. Как я понимаю мне для 5 КГц нужно TCA0_CMP0_vect, но оно не срабатывает.
  4. Спасибо огромное! Именно в этом было дело! А насчет проблемы с прерываниями есть какие-нибудь идеи?
  5. Помогите пожалуйста настроить таймер в Attiny1607, новое поколение выпущенное Microchip. Я хочу настроить таймер TCA 16bit на период 0.2мс(5КГц) в режиме частоты(frequency mode). Я расчитываю CMP0 по формуле из даташита. N = 16 CMP0 = 20000KHz/(2*N * 5KHz)-1 = 124 = 0x7C Но при таких настройках таймер работает не правильно. Я подбирала по осциллограме с ножки PB0(WO0), получилось, что для настройки периода 0.2мс CMP0 = 0x14 Таймер настраивала так: TCA0.SINGLE.CTRLA = 0x00; TCA0.SINGLE.CMP0 = 0x14; TCA0.SINGLE.CTRLB = 0x10|TCA_SINGLE_WGMODE_FRQ_gc; TCA0.SINGLE.CTRLD = 0x00; TCA0.SINGLE.CTRLECLR = 0x00; TCA0.SINGLE.EVCTRL = 0x00; TCA0.SINGLE.INTCTRL= TCA_SINGLE_OVF_bm |TCA_SINGLE_CMP0_bm; TCA0.SINGLE.CNT = 0; TCA0.SINGLE.CTRLA = TCA_SINGLE_CLKSEL_DIV16_gc; TCA0.SINGLE.CTRLA |= TCA_SINGLE_ENABLE_bm; В чем может быть проблема, как вы думаете? А еще есть вторая проблема, с перываниями. Я хочу настроить прерывание с частотой 2мс. Но в действительности ISR (TCA0_CMP0_vect) не срабатывает. Зато срабатывает ISR (TCA0_OVF_vect) с периодом ~0,05м Помогите пожалуйста разобраться.
×
×
  • Создать...