Например TDA7294

Форум РадиоКот • Просмотр темы - Уход частоты 12F629 при неизменном OSCCAL
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Пт май 16, 2025 12:26:32

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: Уход частоты 12F629 при неизменном OSCCAL
СообщениеДобавлено: Пн авг 15, 2016 07:04:37 
Потрогал лапой паяльник

Карма: 1
Рейтинг сообщений: 13
Зарегистрирован: Чт авг 08, 2013 01:06:54
Сообщений: 359
Рейтинг сообщения: 0
Доброго времени суток. Подходящей темы не нашел, поэтому пришлось создавать эту. В процессе переноса програмного UART-а с 16F84 на 12F629 возникла следующая проблема. Чип был куплен б/у и залоченым. Я его полностью стер и записал свою прошивку (программатором PICkit2), попутно восстановив OSСCAL средствами оболочки PICkit 2 v2.61. Так вот программный UART запускается только 1 раз. После переподачи питания, логическим анализатором вижу, что временные интервалы уходят за рамки допустимых. Стираю чип, заново восстанавливаю OSСCAL, записываю прошивку, и она работает. До первой пропажи питания :))) После этого частота опять уплывает, хотя значение OSСCAL остается неизменным (вычитавал после того, как частота уплывала). И так 3 чипа. Что я делаю не так ?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Уход частоты 12F629 при неизменном OSCCAL
СообщениеДобавлено: Пн авг 15, 2016 08:22:23 
Друг Кота
Аватар пользователя

Карма: 94
Рейтинг сообщений: 1464
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 14985
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Если удачно записано значение OSСCAL проблема только в программе. Или в самой величине константы (а-ля "с потолка"). Даже из залоченного кристалла значение константы считывается нормально. Возможный казус - установка не той конфигурации и/или использование вывода RESET как линии ввода/вывода - в даташитах частенько мелькает "внутренний r-c генератор остановлен при RESET =0") я не проверял, но мало ли...
Далее...
"при первой пропаже питания"...
наиболее вероятная причина ошибки программы в отношении начальной инициализации регистров при ситуации "сбой по питанию" - ПИК штука маломощная, если схема имеет по питанию конденсатор за 200 микрофарад схемка формирования аппаратного сброса может не обнаружить таковой (интервал между отключением питания и последующим включением менее времени разряда конденсатора фильтра до уровня достаточного для сработки схемы POR).
В результате аппаратного сброса нету или выполнен без очистки промежуточных значений в критичных регистрах программы.
:beer:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Уход частоты 12F629 при неизменном OSCCAL
СообщениеДобавлено: Пн авг 15, 2016 15:22:18 
Нашел транзистор. Понюхал.
Аватар пользователя

Карма: 3
Рейтинг сообщений: 21
Зарегистрирован: Чт ноя 26, 2015 23:22:35
Сообщений: 157
Откуда: не с Уфы
Рейтинг сообщения: 0
А что есть в Вашем понимании OSCCAL? Просто вы пишете про его восстановление с помощью программатора. Но OSCCAL это лишь регистр оперативной памяти и его необходимо загрузить (в программе) при каждом старте чипа, "подобрав" его значение по последнему адресу программной памяти. Вы делаете это?
Код:
            BANKSEL    OSCCAL
            CALL       0x3FF
            ADDLW      .4    ;можно без этой строчки, просто я так делаю.
            MOVWF    OSCCAL



Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Уход частоты 12F629 при неизменном OSCCAL
СообщениеДобавлено: Пн авг 15, 2016 17:00:50 
Опытный кот

Карма: 4
Рейтинг сообщений: 81
Зарегистрирован: Пн апр 11, 2011 10:08:52
Сообщений: 844
Рейтинг сообщения: 0
Сделайте тестовую прошивку выдачи на пин определенной частоты или мигания раз в секунду светодиодом.


Вернуться наверх
 
Открыт интернет-магазин MEAN WELL.Market – весь ассортимент MEAN WELL, выгодные цены

Открыта удобная площадка с выгодными ценами, поставляющая весь ассортимент продукции, производимой компанией MEAN WELL – от завоевавших популярность и известных на рынке изделий до новинок. MEAN WELL.Market предоставляет гарантийную и сервисную поддержку, удобный подбор продукции, оперативную доставку по России. На сайте интернет-магазина посетители смогут найти обзоры, интересные статьи о применении, максимальный объем технических сведений.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Уход частоты 12F629 при неизменном OSCCAL
СообщениеДобавлено: Пн авг 15, 2016 17:42:03 
Потрогал лапой паяльник

Карма: 1
Рейтинг сообщений: 13
Зарегистрирован: Чт авг 08, 2013 01:06:54
Сообщений: 359
Рейтинг сообщения: 0
Работа закончилась, можно и себе время уделить)) Итак, код:
Спойлер
Код:
   list p=16f629
   __config   _CPD_OFF & _CP_OFF & _BODEN_OFF & _MCLRE_ON & _PWRTE_ON & _WDTE_OFF & _FOSC_INTRCIO
   include   p12f629.inc

#define   RX         GPIO,2            ; Ножка RX - бит порта
#define   TX         GPIO,1            ; Ножка TX - бит порта
#define   BITS_DELAY   .30               ; .30 Задержка длинной 1 бит - 104 мкс при 9600 бод и частоте 4 МГц

   cblock   20h
w_temp
status_temp
TX_byte
RX_byte
UART_counter
delay_counter
   endc

   org   0

Main
   bsf      TX                     ; Заранее установим TX в 1, чтобы случайно не послать старт-бит
   banksel   TRISIO                  ; Банк 1
   bcf      TX                     ; TX на вывод, все остальные ноги как входы      
   banksel   GPIO                  ; Банк 0
   movlw   b'00000111'
   movwf   CMCON                  ; Выключим аналоговый компаратор

   movlw   'A'
   call   Send_TX_Byte
Loop
   goto   Loop

Send_TX_Byte                     ; Подпрограмма передачи 1 байта
   bcf      TX                     ; Шлем старт бит
   movwf   TX_byte                  ; Загрузим передавемый байт         
   movlw   .8                     ; Загрузим количесвто передаваемых битов
   movwf   UART_counter
   nop
Transmit_Next_Bit
   nop
   call   Delay_1bit               ; Длинной 1 бит
   rrf      TX_byte                  ; Продвигаем в бит переноса все биты, начиная с младшего
   btfsc   STATUS,C               ; Проверяем, что выдавилось в бит переноса
   bsf      TX                     ; Если 1, выставляем 1 на ТХ
   btfss   STATUS,C
   bcf      TX                     ; Если 0, выставляем 0 на ТХ
   decfsz   UART_counter            ; Весь байт отослан ?
   goto   Transmit_Next_Bit         ; Нет, идем слать следующий бит
   call   Delay_1bit               ; Задержка длинной 1 бит
   nop
   nop
   nop
   nop
   nop
   bsf      TX                     ; Шлем стоп-бит
   return

Delay_1bit
   movlw   BITS_DELAY               ; 104 мкс для 9600 бод
   movwf   delay_counter
Loop_Delay
   decfsz   delay_counter
   goto   Loop_Delay
   return

   end


Я шлю английскую "А". Ее ASCII-код имеет внутри 5 идущих подряд нулей, по этому и ориентируюсь. При длительности 1 бита в 104 мкс, имеем для этой последовательности 104*5=520 мкс низкого уровня.
Вот что я и имею после восстановления OSCCAL и перепрошивки:
Изображение
Тоесть теория (расчитывал задержку в симуляторе) вяжется с практикой.

А вот что я имею после переподачи питания:
Изображение

Восстановление OSCCAL произвожу так:
Изображение
Изображение

П.С. Внимательно прочитал, что написал Родэрик, и все стало ясно, спасибо, все работает как надо))


Последний раз редактировалось Пока_без_кота Пн авг 15, 2016 18:11:20, всего редактировалось 1 раз.

Вернуться наверх
 
LED-драйверы MOSO - надежные решения для индустриальных приложений

Продукция MOSO предназначена в основном для индустриальных приложений, использует инновационные решения на основе более 200 собственных патентов для силовой электроники и соответствует международным стандартам. LED-драйверы MOSO применяются в системах наружного освещения разных отраслей, включая промышленность, сельское хозяйство, транспорт и железную дорогу. В ряде серий реализована возможность дистанционного контроля и программирования работы по заданному сценарию. Разберем решения MOSO подробнее>>
Не в сети
 Заголовок сообщения: Re: Уход частоты 12F629 при неизменном OSCCAL
СообщениеДобавлено: Пн авг 15, 2016 18:06:33 
Друг Кота
Аватар пользователя

Карма: 94
Рейтинг сообщений: 1464
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 14985
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
...
LIST P=12F629 ; list directive to define processor
#INCLUDE <P12F629.INC> ; processor specific variable definitions
...
__CONFIG _CP_OFF & _CPD_OFF & _BODEN_ON & _MCLRE_ON & _WDT_OFF & _PWRTE_ON & _INTRC_OSC_NOCLKOUT
...
; пропущен участок инициализации
START
; errorlevel -302
BSF STATUS,RP0 ; set file register bank to 1
CALL 0x3FF ; retrieve factory calibration value
MOVWF OSCCAL ; update register with factory cal value
BCF STATUS,RP0 ; set file register bank to 0
....

.....
OSC CODE 0x03FF ; или org 0x03FF
retlw const_OSCCAL ; const_OSCCAL установить в defn_хххх_629.txt согласно
; предварительно считанного из целевого МК !!!
...

...
end
8)
В самом конце ПЗУ записана константа в виде команды retlw NN (NN- собственно константа)/
org 0 нежелательный сленг - ибо накладывается на область обработчика прерываний.
Ну и пропуск обязательной части заголовка...
:wink:


Вернуться наверх
 
Распродажа паяльного оборудования ATTEN!
Паяльные станции, паяльники и аксессуары по самой выгодной цене.

По промокоду radiokot скидка 10%
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 6 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


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

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y