Форум Микро-Чип
Поиск и заказ электронных компонентов
 

Вернуться   Форум Микро-Чип > Продукция MICROCHIP

Продукция MICROCHIP Технические вопросы по всей продукции Microchip

Ответ
 
Опции темы Опции просмотра
Старый 21.08.2015, 10:46   #1
SerjT
Junior Member
 
Регистрация: 15.07.2015
Возраст: 43
Сообщений: 16
Вес репутации: 150/14
SerjT has a spectacular aura aboutSerjT has a spectacular aura about
По умолчанию PIC24 Input Capture - модуль захвата в 32-х битном режиме

Если кому-то интересно...

Работал с модулем захвата PIC24FJ128GB106 (серия PIC24FJ256GB110). Нужно было запустить модуль захвата в режиме 32 бита (каскадирование модулей).

В документации сказано (п. 13.2, стр. 170), как необходимо настроить оба модуля, но допущена неточность.

По документации, выбор режима работы осуществляется установкой битов ICM только в нечётном модуле. Это неверно. Если вы сделаете так, то старшая половина объединённого таймера не работает! Необходимо выставлять эти биты в обоих модулях!
Промучился два дня, пока меня не настиг дзен

Я делал так:
  1. Настроил режим 32 бита.
  2. Настроил источник тактирования и режимы синхронизации.
  3. Включил нужный режим захвата для старшего модуля.
Код:
    //------------------------- Настройка захвата 
    // IC1 и IC2 - 32-х битный каскадный режим
    // Для 32-х битного режима: чётный настраивается первым, нечётный ведущий
    IC2CON1 = 0;                // Сброс
    IC2CON2 = 0;
    IC1CON1 = 0;
    IC1CON2 = 0;
    IC2CON2bits.IC32 = 1;         // 32 битный режим
    IC1CON2bits.IC32 = 1;         // 32 битный режим
    IC2CON1bits.ICTSEL = 7;     // Настройка тактирования модуля захвата от внутреннего тактового генератора
    IC1CON1bits.ICTSEL = 7;     // Настройка тактирования модуля захвата от внутреннего тактового генератора
    IC2CON1bits.ICM = 1;         // Включить захват каждого фронта для старшего модуля каскада
Затем, когда мне нужно осуществлять захват, я включал нужный режим для младшего модуля.

Код:
    IC1CON1bits.ICM = 1;         // Включить захват каждого фронта для младшего модуля каскада
При возникновении события захвата читаю из буфера IC2BUF:IC1BUF показания таймера (сначала из старшей половины - чётного модуля). Буфера хватает на 4 события, вычитывать пока бит IC1CON1bits.ICBNE не станет равен нулю. Переполнение можно проверить в бите IC1CON1bits.ICOV.

"Вот така фигня, малята".

Удачи всем.
SerjT вне форума   Ответить с цитированием
Ответ

Метки
input capture, pic24


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Glcd TIC-149/154 библиотека rolin Общетехнические вопросы 20 23.04.2013 18:54
MPLAB не находит c018i.o qwerty1 Продукция MICROCHIP 45 22.04.2011 12:14


Часовой пояс GMT +3, время: 06:25.


Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd. Перевод: zCarot