Jump to content
RC7LI

Универсальный бэнддекодер на PIC18F452

Recommended Posts

Добрый день. Собираю вот эту конструкцию http://www.dh8bqa.de/universal-banddecoder-for-station-automation/ И на этапе программирования PIC возникли проблемы.

В статье написано, что PIC18F452 нужно "прожечь", записав в него бутлоадер. И уже дальше вставить "проженный" микроконтроллер в готовое устройство и записать в него программу. Я собрал вот этот программатор http://labkit.ru/html/programmators_shm?id=72 и попытался "прожечь" микроконтроллер с помощью программ ICProg, WinPic800. Результат один- ошибка проверки по адресу 0000h.

Вопрос следующий - как "прожечь" микроконтроллер? Может бутлоадер прожигается по-другому? Не через программатор и используя не эти программы?

P.S. Прошивать микроконтроллер пытаюсь первый раз в жизни. Поэтому извините за глупые вопросы.

Share this post


Link to post
Share on other sites

Бутлодырь прошивается как и обычная любая прошивка. Так что, проблема явно где-то в программаторе. Если, конечно, сам чип живой.
 

Share this post


Link to post
Share on other sites

Возможно, в бинарнике выставлены биты защиты, тогда верификация будет с ошибкой, но работать будет нормально.

Share this post


Link to post
Share on other sites

Литиевые батарейки Fanso для систем телеметрии и дистанционного контроля

Системы телеметрии находят все более широкое применение во многих отраслях на промышленных и коммунальных объектах. Требования, предъявляемые к условиям эксплуатации приборов телеметрии и, как следствие, источников питания для них, могут быть довольно жесткими. Fanso предоставляет широкую линейку продукции, рассчитанной на различные условия эксплуатации, что позволяет подобрать батарейку для каждого конкретного применения, в том числе и для устройств телеметрии.

Подробнее

17 минут назад, Alex сказал:

Бутлодырь прошивается как и обычная любая прошивка. Так что, проблема явно где-то в программаторе. Если, конечно, сам чип живой.
 

Чип новый. Первоначальную проверку программатора по инструкции произвел (проверка всех уровней). Все в норме.

16 минут назад, oldmao сказал:

Возможно, в бинарнике выставлены биты защиты, тогда верификация будет с ошибкой, но работать будет нормально.

Вставляю в готовое устройство, чтобы попробовать записать программу в микроконтроллер - результата никакого. Программа его не видит.

Edited by RC7LI

Share this post


Link to post
Share on other sites

Чудес не бывает. Если программатор исправный и чип хороший, значит с подключением проблемы. Что логично.
Попробуйте что-нибудь другое в него записать, не бутлодырь.
 

Share this post


Link to post
Share on other sites
                     

Приглашаем на вебинар Решения для построения ультразвуковых счетчиков жидкостей и газов на базе MSP430

Компэл совместно с Texas Instruments 23 октября 2019 приглашают на вебинар, посвященный системам-на-кристалле для построения ультразвуковых расходомеров жидкостей и газов на базе ядра MSP430. Вебинар проводит Йоханн Ципперер – эксперт по ультразвуковым технологиям, непосредственно участвовавший в создании данного решения. На вебинаре компания Texas Instruments представит однокристальное решение, позволяющее создавать точные недорогие счетчики жидкостей и газов.

Подробнее...

1 минуту назад, Alex сказал:

Чудес не бывает. Если программатор исправный и чип хороший, значит с подключением проблемы. Что логично.
Попробуйте что-нибудь другое в него записать, не бутлодырь.
 

Почему-то мне в голову эта мысль не пришла сразу. Попробую что-нибудь другое записать.

А возможно убить этот чип программными средствами? Возможно я что-то не верно указал при программировании и теперь чип мертв.

Share this post


Link to post
Share on other sites

PIC не помню, а AVR убивается неправильно выставленными фьюзами, например "использовать RESET как обычный ввод/вывод" или задан внешний источник тактирования, а реально его нет. Лечится высоковольтным программатором или специальным FuseDoctor-ом.

Share this post


Link to post
Share on other sites

Ну я вроде ничего не менял. Загрузил HEX в программу и пробовал прошить. Правда уже несколько раз разными программами... Ошибка остается. Вот теперь и думаю, вдруг я его уже убил. Тогда бесполезно чего-то добиваться от него.

Share this post


Link to post
Share on other sites
11 минуту назад, RC7LI сказал:

А возможно убить этот чип программными средствами?

Покажите окно программы с открытой в ней прошивкой, которую Вы прошивали самый первый раз. Биты конфигурации интересуют.
 

Share this post


Link to post
Share on other sites
3 минуты назад, Alex сказал:

Покажите окно программы с открытой в ней прошивкой, которую Вы прошивали самый первый раз. Биты конфигурации интересуют.
 

 

1.png

Share this post


Link to post
Share on other sites

Ой, блин, тут же нет галочек. Расшифровывать надо  ... :) 
 

А, стоп. У этого чипа ресет только внешний. Убить его конфигами нереально.
 

Share this post


Link to post
Share on other sites
1 минуту назад, Alex сказал:

Ой, блин, тут же нет галочек. Расшифровывать надо  ... :) 
 

Это меня и ввело в ступор:lol: Везде, где я пытался найти ответы на свои вопросы, решение - это стоят или не стоят галочки. А в этом микроконтроллере нет такого.

Share this post


Link to post
Share on other sites
4 минуты назад, Alex сказал:

У этого чипа ресет только внешний. Убить его конфигами нереально.


 

Share this post


Link to post
Share on other sites
2 минуты назад, Alex сказал:

Убить его конфигами нереально.

Понял. А еще вопрос. Как понять - есть бит защиты от чтения в программе или нет?

Share this post


Link to post
Share on other sites

Это нужно лезть в даташит, раздел "Биты конфигурации" и там смотреть какой конкретно бит отвечает за защиту. Потом расшифровывать шеснадцатеричное слово (справа в окошечках) и смотреть, установлен этот бит, или сброшен.
 

Share this post


Link to post
Share on other sites
1 минуту назад, Alex сказал:

Это нужно лезть в даташит, раздел "Биты конфигурации" и там смотреть какой конкретно бит отвечает за защиту. Потом расшифровывать шеснадцатеричное слово (справа в окошечках) и смотреть, установлен этот бит, или сброшен.
 

Хорошо. Спасибо. Понял. Буду сейчас пытаться разобраться.

7 минут назад, RC7LI сказал:

Хорошо. Спасибо. Понял. Буду сейчас пытаться разобраться.

Мда. Далек я от программирования:D Хоть и хочу в этом разобраться, чтобы в дальнейшем можно было собирать устройства на микроконтроллерах.

Но ничего не могу понять)

13 минуты назад, Alex сказал:

Это нужно лезть в даташит, раздел "Биты конфигурации" и там смотреть какой конкретно бит отвечает за защиту. Потом расшифровывать шеснадцатеричное слово (справа в окошечках) и смотреть, установлен этот бит, или сброшен.
 

Еще я прочитал про константу (osccal), которая записана в последней ячейке данных пика. И сказано, что если удалить константу, то при следующем программировании, PIC работать не будет либо будет, но не так как должен.

То есть мне уже бессмысленно программировать этот чип? Нужно покупать новый?

Share this post


Link to post
Share on other sites
В 19.10.2017 в 13:54, oldmao сказал:

Возможно, в бинарнике выставлены биты защиты, тогда верификация будет с ошибкой, но работать будет нормально.

Логика работы программатора: сначала пишет прошивку, потом верификация, а потом ставятся биты защиты!!!

Share this post


Link to post
Share on other sites
В ‎19‎.‎10‎.‎2017 в 08:50, RC7LI сказал:

Еще я прочитал про константу (osccal), которая записана в последней ячейке данных пика. И сказано, что если удалить константу, то при следующем программировании, PIC работать не будет либо будет, но не так как должен.

У 18F452-го нет встроенного генератора, так что и калибровочной константы у него нет.

В ‎19‎.‎10‎.‎2017 в 08:50, RC7LI сказал:

То есть мне уже бессмысленно программировать этот чип? Нужно покупать новый?

если есть желание заниматься ПИКами, я бы посоветовал взять фирменный PicKit. И калибровочную константу восстановит (в МК, где она есть), и работает отлично. ИМХО, конечно.

Share this post


Link to post
Share on other sites

Какой СОМ-порт используете? Если не "железный", а USB-преобразователь, могут быть проблемы. 

И еще. "Железо" программатора точно рабочее?

Ну и напоследок. Чтобы проверить работоспособность, не обязательно заливать "портянку" кода, достаточно в окне набить вручную чего-нибудь и прошить. Так экономим время.

Share this post


Link to post
Share on other sites

Здравствуйте. Я открыл ваш hex файл в MPLABX . Ваши биты конфигурации в программе IC Proc установлены не правильно.

Хотя нет, все верно.

Edited by Станислав
ошибка

Share this post


Link to post
Share on other sites
В 19 Октябрь 2017 г. в 14:45, RC7LI сказал:

Понял. А еще вопрос. Как понять - есть бит защиты от чтения в программе или нет?

не обязательно лезть в ДШ за расшифровкой битов конфигурации , в icprog достаточно перезапустить прогу, и прочитать содержимое МК , если во всех  ячейках 0х00 , то бит защиты установлен, если 0хFF , то нет чтения МК, если прочитался зашитый код с прошивкой МК все все нормально. ищите грабри в устройстве, проверяйте работу осциллятора, сброса и тд

Share this post


Link to post
Share on other sites
В 21.10.2017 в 05:44, КЭС сказал:

Какой СОМ-порт используете?

COM железный.

 

В 21.10.2017 в 11:20, IMXO сказал:

прочитать содержимое

После стирания читает все FFFF.

 

Перепробовал все советы. Ошибка чтения по адресу 0000h не исчезла.

Share this post


Link to post
Share on other sites
В 19.10.2017 в 15:50, RC7LI сказал:

Я собрал ....... программатор

Фото монтажа с двух сторон можно?

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Similar Content

    • By IgnatiusF
      Появилась надобность в микроконтрллере STM32 для проектирования устройства. И вопрос вот в чем - в программировании этих стм-ов. Прочитал несколько статей по их программированию - что вообще для этого нужно. Выяснил, что в них (во всех?) есть вшитый bootloader, который может сам прошить МК.
      То есть для этого необходимо подключить какой-либо ...to UART преобразователь, а именно TX, RX, VCC и gnd к соответсвующим ногам микроконтроллера и все? Или надо еще куда-то подавать управляющий сигнал?
      Еще вопрос по поводу бутлоадера - если он занимает 8 КБ (или по разному?), то МК с 16 КБ памяти, по сути, будет иметь 8 КБ для программ?
      Datasheet я только начинаю читать и пока еще не нашел точной информации, так что за помощь буду очень признателен
    • Guest blackhand
      By Guest blackhand
      Здравствуйте. Недавно возникла потребность в Ethernet бутлоадере для stm32f7.  Гугл на этот счёт обладает крайне скудной информацией, в частности есть наполовину полезная pdf от ST STM32Cube Ethernet IAP example, в которой описана архитектура того, как работает этот бутлоадер в целом и по каким протоколам. Во всём мире существует только один готовый пример такого бутлоадера , который сконфигурирован для stm32f4 и под какую-то из EVAL-отладочную плату. В распоряжении имею отладочную Nucleo-144 на STM32F767ZI, у которой на борту уже есть PHY Ethernet чип.
      А теперь, в чём, собственно, проблема: Простое переназначение ножек в файле ethernetif.c под мою плату (ну я уж не говорю про замену всех библиотек под мой тип МК) не поможет. Пример сделан под PHY Ethernet чип, который общается с контроллером по интерфейсу MII. На Nucleo чип имеет интерфейс RMII , то есть, пинов у него меньше. При изучении кода примера выяснил, что там отлавливается некое внешнее прерывание с отдельной ножки MII чипа, которая соединена с PB14  (Enable PB14 to IT mode: Ethernet Link interrupt). Такой ножки у моего RMII в помине нет, поэтому это прерывание Ethernet Link interrupt просто повисает в воздухе.
      Может кто-нибудь встречался с такой проблемой или имеет готовый рабочий бутлоадер? Был бы благодарен за помощь
    • By foregit
      Доброго времени суток.
      Есть такая задача - дистанционно перешивать девайс. Девайс сделан на атмеге и из внешних интерфейсов имеет только езернет через мост на визнете. Идея состоит в том ,что в основной программе мы получаем прошивку и шьем ее в определенную часть флеша. Потом даем сброс контроллеру, он перегружается в boot, видит какой нибудь флаг перепрошивки (например определенную последовательность байт по определенному адресу) и переливает полученную дистанционно новую прошивку по нулевому уже адресу. Естественно для таких целей запас флеша на контроллере берется в 2 раза больший максимально возможной прошивки (с учетом бутлоадера).
      Вопросы - 
      1. Были ли уже где нибудь решения похожих задач чтоб не изобретать велосипед?
      2. Если нет и рыть самому -подскажите следующее - прописано что шить сам себя проц может только функциями, расположенными в секции загрузчика. Но в моему случае необходимо шить и из загрузчика и из основной программы. Так как это две разные собственно прошивки - как я могу обратиться из основной программы к функции записи флеша, скомпилированной для загрузчика? Или как решить такого плана задачу по другому?
       
    • By serj280294
      Всем привет. На руках имеется отладочная плата HC6800EM3 и её необходимо подружить со средой Arduino.

      На плате установлен микроконтроллер ATmega162 и на него прошит загрузчик, о чем свидетельствует дрыганье контроллером ножкой при сбросе. Только при заливке скетча в контроллер происходит ошибка. Опытным путем установил, что при загрузке данных по UART не происходит сброс микросхемы в загрузчик.

      На плате установлен преобразователь USB<->UART CH340. Вокруг у него не понятная мне обвязка. Зачем-то вывод DTR(обычно сбрасывающий контроллер перед передачей данных по UART) связан с цепью питания. Объясните пожалуйста, зачем так может быть сделано? И для чего, как вы считаете, может быть нужен джампер ON(в центре схемы) позволяющий переключать вывод Power между VCC и 51(вывод расположен в правой верхней части схемы)?
    • By vv7
      Всем привет !
      Да, вот так вот. Опять светодиод и опять не запускается.
      В чём косяк ?
      Питание - от автозарядки для мобилки ( 12В -> 5В ).
      Среда разработки ( IDE ): MPLAB X v3.35 Linux, компилятор C18.
      Программатор: PICKit3
      Прошивка, по-моему - нормальная.
      Сконфигурирован - нормально. ( Или нет ? )
      Элементы все рабочие.
      В наличие есть кварц: 4, 8, 10 МГц.
      Фотка со схемкой - в атаче.
      Осциллографа под рукой - нет .
      Исходник прошивки:

      #include "config_bits.h" #include <stdio.h> #include <stdlib.h> void main (void) { int i = 0; TRISA = 0x00; PORTA = 0x00; TRISB = 0x00; PORTB = 0xFF; TRISC = 0x00; PORTC = 0x00; TRISD = 0x00; PORTD = 0x00; TRISE = 0x00; PORTE = 0x00; while (1) { for ( i = 0; i < 1000000; i++) { PORTB = !PORTB; } } }
      Файл "config_bits.h":

      // PIC18F452 Configuration Bit Settings // 'C' source line config statements #include <p18f452.h> // CONFIG1H #pragma config OSC = HS // Oscillator Selection bits (HS oscillator) #pragma config OSCS = OFF // Oscillator System Clock Switch Enable bit (Oscillator system clock switch option is disabled (main oscillator is source)) // CONFIG2L #pragma config PWRT = OFF // Power-up Timer Enable bit (PWRT disabled) #pragma config BOR = ON // Brown-out Reset Enable bit (Brown-out Reset enabled) #pragma config BORV = 20 // Brown-out Reset Voltage bits (VBOR set to 2.0V) // CONFIG2H #pragma config WDT = OFF // Watchdog Timer Enable bit (WDT disabled (control is placed on the SWDTEN bit)) #pragma config WDTPS = 128 // Watchdog Timer Postscale Select bits (1:128) // CONFIG3H #pragma config CCP2MUX = ON // CCP2 Mux bit (CCP2 input/output is multiplexed with RC1) // CONFIG4L #pragma config STVR = ON // Stack Full/Underflow Reset Enable bit (Stack Full/Underflow will cause RESET) #pragma config LVP = OFF // Low Voltage ICSP Enable bit (Low Voltage ICSP disabled) // CONFIG5L #pragma config CP0 = OFF // Code Protection bit (Block 0 (000200-001FFFh) not code protected) #pragma config CP1 = OFF // Code Protection bit (Block 1 (002000-003FFFh) not code protected) #pragma config CP2 = OFF // Code Protection bit (Block 2 (004000-005FFFh) not code protected) #pragma config CP3 = OFF // Code Protection bit (Block 3 (006000-007FFFh) not code protected) // CONFIG5H #pragma config CPB = OFF // Boot Block Code Protection bit (Boot Block (000000-0001FFh) not code protected) #pragma config CPD = OFF // Data EEPROM Code Protection bit (Data EEPROM not code protected) // CONFIG6L #pragma config WRT0 = OFF // Write Protection bit (Block 0 (000200-001FFFh) not write protected) #pragma config WRT1 = OFF // Write Protection bit (Block 1 (002000-003FFFh) not write protected) #pragma config WRT2 = OFF // Write Protection bit (Block 2 (004000-005FFFh) not write protected) #pragma config WRT3 = OFF // Write Protection bit (Block 3 (006000-007FFFh) not write protected) // CONFIG6H #pragma config WRTC = OFF // Configuration Register Write Protection bit (Configuration registers (300000-3000FFh) not write protected) #pragma config WRTB = OFF // Boot Block Write Protection bit (Boot Block (000000-0001FFh) not write protected) #pragma config WRTD = OFF // Data EEPROM Write Protection bit (Data EEPROM not write protected) // CONFIG7L #pragma config EBTR0 = OFF // Table Read Protection bit (Block 0 (000200-001FFFh) not protected from Table Reads executed in other blocks) #pragma config EBTR1 = OFF // Table Read Protection bit (Block 1 (002000-003FFFh) not protected from Table Reads executed in other blocks) #pragma config EBTR2 = OFF // Table Read Protection bit (Block 2 (004000-005FFFh) not protected from Table Reads executed in other blocks) #pragma config EBTR3 = OFF // Table Read Protection bit (Block 3 (006000-007FFFh) not protected from Table Reads executed in other blocks) // CONFIG7H #pragma config EBTRB = OFF // Boot Block Table Read Protection bit (Boot Block (000000-0001FFh) not protected from Table Reads executed in other blocks)
      Проблема: Он то ли не запускается, то ли ещё что-то. Светодиод на 30 ножке ( PORTBbits.RB0 ( B0 ) ) просто горит. А ведь в программе я прописал, чтоб весь блок B периодически переключался на противоположенное значение, но этого не происходит. Менял значения цикла от 1000000 до 10 - 0 по цельсию.
      Вопрос, что может быть. Может минус плохой и на монтажных схемках такого рода ( как на фотке ) собирать схемы на МК - плохая идея ? Аля нужно паять ?!
      Спасибо !!!



×
×
  • Create New...