Программатор к 150 стирает калибровочную константу
Постов: 4136=»unp»> Offline
Друзья
Микроконтроллеры PIC12F629 и PIC12F675 имеют внутренний генератор 4 МГц, что позволяет работать им без внешнего кварцевого резонатора или RC-цепи. Это освобождает один или два контакта для использования их в качестве ввода/вывода и позволяет устройству иметь в конструкции минимальное количество компонентов.
Внутренний генератор должен быть откалиброван, это достигается путем подбора на заводе значения калибровки и записи его в регистр OSCCAL при инициализации устройства перед запуском рабочей программы. Значение калибровки находится в последнем адресе памяти программ — 0x3FF.
Проблемы возникают если случайно значение по адресу 0x3FF стирается при программировании микроконтроллера. После калибровки значение является уникальным для каждого отдельного микроконтроллера, нет никакого способа узнать какое оно было, но можно восстановить его путем сравнивая с известной частотой.
Для этого создана эта программа и схема. Загрузите в микроконтроллер код, который находится в архиве и поместите его в устройство описанное ниже, и в течение нескольких секунд Вы получите новое значение калибровки для работы внутреннего генератора частотой 4 МГц и точностью 1%.
Как это работает
Для калибровки внутреннего генератора требуется опорная частота. К счастью, нам не нужны генераторы сигналов или другое измерительное оборудование. На самом деле точный сигнал можно получить из электрической сети переменного тока. В большинстве частей мира поставки электроэнергии производится на частоте 50 или 60 Гц (многие цифровые часы пользуются этим, чтобы сохранить точность хода). Используя практически любой трансформатор с выходным напряжением от 6 до 12 вольт переменного тока можно получить точный источник для калибровки генератора микроконтроллера.
Частота внутреннего генератора микроконтроллера зависит от изменения температуры и напряжения питания. При увеличении напряжение питания частота немного уменьшается. Когда выключатель S1 разомкнут напряжение 5 Вольт подается через два диода, в итоге около 3,4 Вольт поступает на контроллер. Если S1 замкнут, то контроллер работает от 5 Вольт. Microchip калибрует партии при 3,5 Вольт и температуре 25°C. В этой схеме есть возможность калибровки при напряжении 3,4 Вольт и 5 Вольт, но желательно откалибровать контроллер с разомкнутым S1 (3,4 Вольт).
S1 разомкнут — калибровка происходит при 3,4 Вольт
S1 замкнут — калибровка происходит при 5 Вольт
S1 не является выключателем питания
Два 1N4148 диода обеспечивают падение напряжения, резистор 150R обеспечивает стабильное напряжение на диодах. 100nF фильтрующий конденсатор должен быть размещен как можно ближе к выводам контроллера(1 и 8).
Сигнал опорной частоты подается в контроллер с использованием транзистора BC548, резистора 10K, диода 1N4148 и трансформатора. Можно использовать любой NPN транзистор, характеристики его не являются критическими. Трансформатор также можно использовать любой, но с выходным напряжением в пределах от 6 до 12 Вольт переменного тока.
Важно, подавать на вход транзистора только сигнал переменного тока. Не использовать постоянный ток, даже без фильтрующего конденсатора.
ПРИ РАБОТЕ С ВЫСОКИМ НАПРЯЖЕНИЕМ СОБЛЮДАЙТЕ ТЕХНИКУ БЕЗОПАСНОСТИ!
Код для калибровки
Далее необходимо запрограммировать микроконтроллер кодом, который находится в архиве под именем «recal1.hex». Код будет работать и с PIC12F629 и 12F675. Загрузите этот код перед началом операции калибровки.
После того как Вы успешно выполнили калибровку микроконтроллера и считали новое значение калибровки можно перепрограммировать контроллер используя свой код. Это программное обеспечение необходимо только для расчета нового значения калибровки, и не должно оставаться в памяти микроконтроллера потом. (Кто-то спросит поверьте!)
Запуск калибровки
1. Установить перемычку J1, если частота электросети в вашем районе равна 60 Гц и снять прермычку если частота 50 Гц. Убедитесь в правильности установки перемычки J1, т.к. это влияет на правильность калибровки.
J1 снята — частота питания сети 50Гц
J1 установлена — частота питания сети 60Гц
2. Сигнал переменного тока должен присутствовать перед включением питания микроконтроллера при калибровке, необходимо обеспечить стабильный сигнал должного уровня.
3. Вставьте микроконтроллер в панельку, разомкнуть переключатель S1 и тем самым подать напряжение 3.4 Вольт.
4. Когда микроконтроллер запустится светодиоды мигнут один раз.
5. Если сигнал опорной частоты не будет обнаружен на GP2 (вывод 5) загорится красный светодиод «Ошибка» и будет мигать зеленый светодиод «Завершено». (Если это произойдет, выключите питание схемы и убедитесь в правильности подключения)
6. Во время процесса калибровки оба светодиода выключены. Калибровка займет менее 5 секунд.
7. Если калибровка завершилась неудачно загорится красный светодиод «Ошибка», и выполнение программы будет остановлено.
8. Если калибровка завершилась успешно загорится зеленый светодиод «Завершено» и на GPIO1 появится тестовый сигнал частотой 5 кHz. Если у вас есть частотомер, то можно проверить правильность калибровки.
9. После завершения калибровки, Вы можете включать/выключать переключатель S1 и следить за тестовым сигналом, чтобы увидеть изменения частоты сигнала по сравнению с напряжением питания.
10. Выключите питание схемы, удалите микроконтроллер из панельки и подключите его к программатору. Далее прочитайте данные микроконтроллера и проверьте содержимое памяти EEPROM
Когда Вы считаете EEPROM там должны быть одно из трех пар значений по адресам 0x00 и 0x01: Назначение индикаторов
Если в EEPROM по адресам 0x00 и 0x01 содержит 0xFF, то программа отработала неправильно.
Если в EEPROM по адресам 0x00 и 0x01 содержит 0x00, то программа не смогла установить калибровочное слово правильно (горел красный светодиод «Ошибка»). Убедитесь, что сигнал опорной частоты имеет правильное значение, J1 установлена правильно и повторите попытку.
Если в EEPROM адрес 0x00 содержит значение 0x34 и адрес 0x01 содержит 0xNN, где NN является новым значением калибровки, то программа завершилась успешно (горел зеленый светодиод «Завершено») и OSCCAL был правильно откалиброван. Используйте значение 0xNN по адресу 0x01 для калибровки памяти.
Измененная версия прошивки
Некоторые программаторы или программное обеспечение повышают сигнал VDD перед включеним VPP. Это позволяет начать работу программе до того когда микроконтроллер войдет в режим программирования предварительно считав EEPROM. Если зеленый светодиод указывает на успешное завершение калибровки, а прочитав EEPROM Вы найдете в нем 0xFF по адресам 0x00 и 0x01, то Ваш программатор работает в таком режиме.
Если у Вас возникла эта проблема, Вы можете скачать модифицированную версию оригинальной программы, которая находится в архиве под именем «recal2.hex». Эта версия не производит инициализацию EEPROM при запуске, так что данные калибровки не очищаютя, когда программатор считывает данные из микроконтроллера. Используйте эту прошивку только тогда когда возникает такая проблема.
Использование нового значения калибровки
ВАЖНО: Эта схема/программа только рассчитывает правильное значение калибровки и не может сохранить его обратно в память контроллера — Вы должны сделать это вручную с помощью программатора.
Если Вы хотите проверить калибровочную константу микроконтроллера, зная заводское значение, востановленное этой схемой значение калибровки может незначительно отличаться от заводского. Это нормально, так как есть различия в напряжении питания и температуре. Вы можете проверить значение тестового сигнала на GP1 с помощью частотомера после завершения калибровки, эта частота должна быть в пределах 1% от 5 кГц.
Если калибровка прошла успешно, удалите микроконтроллер и подключите его к программатору. Считайте данные из памяти EEPROM контроллера (это не память программ), где только что вычисленное значение было сохранено.
Отредактировал SssaHeKkk — Вт, 10.06.2014, 14:00
Автор: | crashtrash [ Пт ноя 16, 2012 12:32:07 ] |
Заголовок сообщения: | K150 не записывает константу PIC |
Здравствуйте уважаемые коты! У меня имеется простенький программатор K150 от китайских соседей. Для прошивки используется родная программа MicroBrn. Ну и соответственно им я пытаюсь прошить PIC10F202. И всё хорошо шьётся, да вот только последняя ячейка не правильно пишется. Значит порядок действий был таков: Из-за этого, вся схема работает неверно и наводит на меня лютую печальку. Надеюсь на вашу помощь уважаемые коты! P.S. Фьюзы выставлены верно, так как в записано в прошевке. https://www.youtube.com/watch?v=wZ-Os1Ekdfs |
Автор: | otest [ Пт ноя 16, 2012 13:00:41 ] |
Заголовок сообщения: | Re: K150 не записывает константу PIC |
Тогда в редакторе поменяй в дампе ячейку сохрани и этим дампом прошей. |
Автор: | crashtrash [ Пт ноя 16, 2012 14:01:03 ] |
Заголовок сообщения: | Re: K150 не записывает константу PIC |
Только что попробовал — не помогает. Также записывает CFF. Ещё ради интереса стёр чип полностью, потом ввёл в пустую последнюю ячейку C12. Записалось как CFF. Ну соответственно, после этого попробовал записать сохранённый дамп, записалось CFF, с той лишь разницей, что отсутствовала ошибки калибровки(константа пусть и не правильно, но записалась). Попробовал записать в предпоследнюю ячейку запись, записалось нормально. Последнюю не хочет. |
Автор: | otest [ Пт ноя 16, 2012 14:18:22 ] |
Заголовок сообщения: | Re: K150 не записывает константу PIC |
СFF -это все 1 возможно неисправная ячейка. Загрузи програмно OSCCAL. |
Автор: | crashtrash [ Пт ноя 16, 2012 14:53:08 ] |
Заголовок сообщения: | Re: K150 не записывает константу PIC |
То что, это битая ячейка маловероятно, я пробовал уже 4 пика. Разве что, битая вся партия. OSCCAL не могу открыть, нет такой функции Гугл подсказывает, что не у одного меня проблема с OSCCAL при программировании 10F Вот тут в последних 2х постах описано решение. Но я не совсем понял, как я могу применить это к себе, если у меня нет исходников. И даже если я дизассемблирую программу, применимо ли будет это решение ко моему случаю? https://diykit.websitetoolbox.com/post/P … 150-924715 |
Автор: | otest [ Пт ноя 16, 2012 15:06:59 ] |
Заголовок сообщения: | Re: K150 не записывает константу PIC |
давай дамп может помогу |
Автор: | crashtrash [ Пт ноя 16, 2012 19:17:26 ] |
Заголовок сообщения: | Re: K150 не записывает константу PIC |
otest, спасибо. Я был бы очень Вам благодарен! |
Автор: | otest [ Пт ноя 16, 2012 20:22:27 ] |
Заголовок сообщения: | Re: K150 не записывает константу PIC |
Не совсем понятно какое значение нужно. В дампе стоит 10 ты пишеш 12. Я поставил 12 ,если надо другую поменяю. Программа не работает по другой причине. ТМР0 — не включен и есть неправильные команды. |
Автор: | crashtrash [ Пт ноя 16, 2012 21:18:41 ] |
Заголовок сообщения: | Re: K150 не записывает константу PIC |
Спасибо за помощь. Да, это мой косяк, я скинул исходный файл, в котором стоит 10, а не тот, который я изменял. В любом случае, я сейчас открыл через редактор, первый байт стал C12, а потом последовали остальные так же как и в оригинальном, ну т.е. он сместил программу. Последний байт остался С10, изменил на С12, но результат тот же CFF. Цитата: ТМР0 — не включен и есть неправильные команды. В смысле, не включен таймер? Что делать в этой ситуации? |
Автор: | otest [ Сб ноя 17, 2012 04:51:59 ] |
Заголовок сообщения: | Re: K150 не записывает константу PIC |
В моём дампе забей на последний байт. OSCCAL загружается в другом месте. Цитата: Что делать в этой ситуации? Пройти пошагово в любом симуляторе и убедиться в работоспособносте программы. |
Автор: | DOKA [ Ср апр 22, 2015 14:10:04 ] |
Заголовок сообщения: | Re: K150 не записывает константу PIC |
Добрый вечер помогите.!!!! решил собрать вольтметр на pic начал с программатора спаял EXTRA-pic работает нормально только вот без знаний подошел засунул туда PIC 16f628а от сторожевика считал ее а после нажал стереть а после пытаюсь прогу закачать после програмирования выдает ОШИБКА ПРОВЕРКИ ПО АДРЕСУ 0000h ЧТО НЕ ТАК Я ДЕЛАЮ |
Страница 1 из 1 | Часовой пояс: UTC |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group https://www.phpbb.com/ |
Сообщения без ответов | Активные темы
Часовой пояс: UTC + 3 часа
Автор | Сообщение |
---|---|
crashtrash | Заголовок сообщения: K150 не записывает константу PIC Добавлено: Пт ноя 16, 2012 15:32:07 |
Родился Зарегистрирован: Ср окт 10, 2012 21:27:52 | Здравствуйте уважаемые коты! Значит порядок действий был таков: Из-за этого, вся схема работает неверно и наводит на меня лютую печальку. Надеюсь на вашу помощь уважаемые коты! P.S. Фьюзы выставлены верно, так как в записано в прошевке. https://www.youtube.com/watch?v=wZ-Os1Ekdfs |
Вернуться наверх | Профиль
|
Реклама | ||
otest | Заголовок сообщения: Re: K150 не записывает константу PIC Добавлено: Пт ноя 16, 2012 16:00:41 |
Карма: 23 | Тогда в редакторе поменяй в дампе ячейку сохрани и этим дампом прошей. |
Вернуться наверх | |
crashtrash | Заголовок сообщения: Re: K150 не записывает константу PIC Добавлено: Пт ноя 16, 2012 17:01:03 |
Зарегистрирован: Ср окт 10, 2012 21:27:52 | Только что попробовал — не помогает. Также записывает CFF. Попробовал записать в предпоследнюю ячейку запись, записалось нормально. Последнюю не хочет. |
Вернуться наверх | |
otest | Заголовок сообщения: Re: K150 не записывает константу PIC Добавлено: Пт ноя 16, 2012 17:18:22 |
Карма: 23 | СFF -это все 1 возможно неисправная ячейка. |
Вернуться наверх | |
Реклама | ||
Обзор линейки драйверов затвора компании Infineon Драйверы затвора являются связующим звеном между двумя частями любого импульсного преобразователя электрической энергии: схемой управления и силовой частью. В общем случае эту задачу можно решить с помощью схем на основе дискретных компонентов, однако использование специализированных микросхем позволяет не только снизить затраты времени на разработку, но и упростить схему… Читать статью>> | ||
crashtrash | Заголовок сообщения: Re: K150 не записывает константу PIC Добавлено: Пт ноя 16, 2012 17:53:08 |
Зарегистрирован: Ср окт 10, 2012 21:27:52 | То что, это битая ячейка маловероятно, я пробовал уже 4 пика. Разве что, битая вся партия. Гугл подсказывает, что не у одного меня проблема с OSCCAL при программировании 10F Вот тут в последних 2х постах описано решение. Но я не совсем понял, как я могу применить это к себе, если у меня нет исходников. И даже если я дизассемблирую программу, применимо ли будет это решение ко моему случаю? https://diykit.websitetoolbox.com/post/P … 150-924715 |
Вернуться наверх | |
Реклама | ||
otest | Заголовок сообщения: Re: K150 не записывает константу PIC Добавлено: Пт ноя 16, 2012 18:06:59 |
Карма: 23 | |
Вернуться наверх | |
Реклама | ||
crashtrash | Заголовок сообщения: Re: K150 не записывает константу PIC Добавлено: Пт ноя 16, 2012 22:17:26 |
Зарегистрирован: Ср окт 10, 2012 21:27:52 | otest, спасибо. Я был бы очень Вам благодарен! |
Вернуться наверх | |
Реклама | ||
otest | Заголовок сообщения: Re: K150 не записывает константу PIC Добавлено: Пт ноя 16, 2012 23:22:27 |
Карма: 23 | Не совсем понятно какое значение нужно. В дампе стоит 10 ты пишеш 12. Я поставил 12 ,если надо другую поменяю. Программа не работает по другой причине. |
Вернуться наверх | |
crashtrash | Заголовок сообщения: Re: K150 не записывает константу PIC Добавлено: Сб ноя 17, 2012 00:18:41 |
Зарегистрирован: Ср окт 10, 2012 21:27:52 | Спасибо за помощь. Да, это мой косяк, я скинул исходный файл, в котором стоит 10, а не тот, который я изменял. Цитата: ТМР0 — не включен и есть неправильные команды. В смысле, не включен таймер? Что делать в этой ситуации? |
Вернуться наверх | |
otest | Заголовок сообщения: Re: K150 не записывает константу PIC Добавлено: Сб ноя 17, 2012 07:51:59 |
Карма: 23 | В моём дампе забей на последний байт. OSCCAL загружается в другом месте. Цитата: Что делать в этой ситуации? Пройти пошагово в любом симуляторе и убедиться в работоспособносте программы. |
Вернуться наверх | |
DOKA | Заголовок сообщения: Re: K150 не записывает константу PIC Добавлено: Ср апр 22, 2015 17:10:04 |
Зарегистрирован: Ср апр 22, 2015 17:02:34 | Добрый вечер помогите.!!!! решил собрать вольтметр на pic начал с программатора спаял EXTRA-pic работает нормально только вот без знаний подошел засунул туда PIC 16f628а от сторожевика считал ее а после нажал стереть а после пытаюсь прогу закачать после програмирования выдает ОШИБКА ПРОВЕРКИ ПО АДРЕСУ 0000h ЧТО НЕ ТАК Я ДЕЛАЮ |
Вернуться наверх | |
Часовой пояс: UTC + 3 часа
Кто сейчас на форуме |
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3 |
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения |