17:09
Калибровочная константа контроллеров 629,675,630,676
     По просьбе пользователя CRASHER была написана прошивка светодиодного тахометра для PIC12F675. В ходе экспериментов было выявлено, что контроллер неправильно определял входную частоту.
   Оказывается компилятор, которым я пользуюсь, при формировании асм кода не добавлял функцию автоматического считывания калибровочной константы, следовательно внутренний генератор контроллера работал с константой по умолчанию равной 128. Поэтому все контроллеры (у меня их около 40 штук) работали на частотах от 4,5 до 5,5 МГц, что сильно влияло на корректное выполнение программ критичных ко времени (распознавание посылок пультов, формирование точных временных интервалов и т.д.). Надо внимательнее читать документацию.
     Решение данной проблемы было найдено на просторах интернета. Необходимо добавить следующий код в самом начале программы:
SET_OSCCAL              ; для Proton+
или на асме
ASM
    CALL  0x3FF            ; Считываем калибровочную константу (последняя ячейка памяти программ)
    BSF   STATUS,5       ; Переходим в Bank 1
    MOVWF OSCCAL    ; Загружаем константу в генератор OSCCAL
ENDASM

 
Калибровочная константа микроконтроллеров
 
Восстановление константы. Реально работает - восстановил константы нескольких МК.

P.S. Все прошивки PIC12F629, PIC12F675, PIC16F630, PIC16F676 на данном сайте были исправлены и перезалиты заново 27.06.2015 с теми же номерами версий. Это радиодатчик температуры, радиозвонок, IR/RF управление нагрузками.

 
Просмотров: 7017 | Добавил: Boroda
Всего комментариев: 2
1 Hz   (15.07.2015 20:34) [Материал]
Стас привет.
что это исправляет в радиодатчиках, у меня все работают стабильно.

2 Boroda   (15.07.2015 21:35) [Материал]
Привет! Радиодатчики не совсем корректно передавали данные (длина импульсов была на 10% короче), но т.к. в алгоритме приемника заложено окно в +-20%, то связь была довольно стабильной. Иногда мне попадались контроллеры с сильно сбитым генератором, соответственно связь постоянно обрывалась, я их откладывал в сторону и ставил другие. А сейчас причина выяснилась, все "забракованные" контроллеры в работе.

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]