ФОРУМ ПО ЭЛЕКТРОНИКЕ



  • Страница 2 из 5
  • «
  • 1
  • 2
  • 3
  • 4
  • 5
  • »
Архив - только для чтения
Световой прибор для дискотек с аудиоконтролем
 Пн, 26.03.2012, 12:42 | Сообщение # 11        

Romick_Калуга

Друзья

 Активность: 348   

Кто сказал, что если стоит галочка в бите CP, то это не рабочая прошивка? Скорее всего вас пугает, что при проверке после прошивки программа пишет ошибку. Так вот, если установлен бит CP (защита от считывания при копировании), контроллер нормально функционирует, просто нельзя скопировать прошивку. Этот бит ставят всегда в коммерческих продуктах. Сами понимаете, зачем. Вот и все. Если вам не нужна такая защита, то просто в программе снимите эту галочку, прошивайте контроллер, и тогда никакой ошибки программа выдавать не будет.

Добавлено (26.03.2012, 12:42)
---------------------------------------------

Quote (-igRoman-)
где увидеть этот бит

В программе, в которой ты прошиваешь контроллер. Например для PIC программа ICProg.
 Пн, 26.03.2012, 14:17 | Сообщение # 12        

flash

Пользователи

 Активность: 69   

-igRoman-, Этот бит (CP) сейчас на вскидку, какой его номер не скажу - нужно смотреть datasheet. Находится в битах конфигурации (CONFIG__'здесь 11цифр'). Прийду домой отпишусь где точно.

Добавлено (26.03.2012, 14:15)
---------------------------------------------
Romick_Калуга, Речь идет о файлах HEX и ASM. Так вот этот HEX-файл имеет защиту от копирования. А если смотреть ASM (саму прогу) то в ASM все в порядке за исключением того что при компиляции будут предупреждения (WARNING) на команду RETURN. Ее нужно менять на RETLW, тк RETURN идет для более сложных контроллеров, например для PIC16f и др.

Добавлено (26.03.2012, 14:17)
---------------------------------------------
Romick_Калуга, Снять галочку в CP возможно только в исходнике, или прийдется шерстить весь 16ричный код - искать в какой строке требуется внести исправление... По-моему так.

 Пн, 26.03.2012, 15:21 | Сообщение # 13        

Romick_Калуга

Друзья

 Активность: 348   

Конечно, я тоже могу ошибаться, но в данном случаем, мне кажется вы слишком глубоко копаете с этим битом. Зачем куда-то лезть в исходник?
Когда вы в ICProg открываете hex файл, то у вас в правом поле, где осциллятор и биты конфигурации, высвечивается все, что было заложено в исходнике. И тут-же вы можете оперативно снять этот бит или наоборот, поставить, поменять тип осциллятора. И эти изменения вы прошьете, и они вступят в силу.
Если кто не верит, попробуйте и все вопросы отпадут. Я этот процесс выполнил раз 30 в выходные, пока пробовал разные прошивки к световому прибору. все работает так, как я тут описал.
 Пн, 26.03.2012, 19:24 | Сообщение # 14        

flash

Пользователи

 Активность: 69   

Дело в том, что я пытался изменить данные биты и в PONY PROG и в IC Prog - бесполезно! Прогамма возвращала все на прежнее место. Поэтому пришлось брать исходник asm и компилировать его заново, а после успешной компиляции уже программировать. В PIC12C508 12-разрядное слово конфигурации предназначено для указания режима работы микроконтроллера: два бита - выбор режима работы тактового генератора; один бит - разрешение работы сторожевого таймера; один бит - режим работы вывода -MCLR.

Добавлено (26.03.2012, 19:24)
---------------------------------------------
Смотрим исходник (asm) - прошивку "Световой еж". Здесь прописаны эти биты так: __CONFIG b'111111101110'. Под этим бинарным кодом понимают (см. datasheet PIC12C508 - стр.36) биты с 11-5 нереализованы: читаются как '1'. Далее бит 4: MCLRE - бит выбор режима работы вывода -MCLR (у нас он включен, те ='1'). Бит 3: CP - бит защиты памяти программ (у нас он должен быть выключен, а значит значение ='1'. Далее идет 2 бит WDTE: бит разрешения работы сторожевого таймера (по программе он включен, те значение ='1'. И последние два бита (биты 1-0): биты, которые отвечают за режим работы тактового генератора. Тактовый генератор у на работает по внутренней RC цепочке - то есть 10. Ну вот как-то так. Соответственно при желании эту прошивку можно прописать практический под любой PIC со схожей архитектурой. Я, например, заменил этот контроллер PIC12C508 на PIC12F508 (F-многоразовый).

 Вт, 27.03.2012, 08:38 | Сообщение # 15        

Romick_Калуга

Друзья

 Активность: 348   

Я не понял, что значит, программа возвращает биты на прежнее место? Конечно, если в прошивке был установлен бит CP, а ты в ICProg снял эту галку, то в файл hex это изменение не запишется. Но ты же шьешь код не из самого файла. Сначала ты открываешь файл и весь код из него загружается в оперативную память, тут ты можешь снять или установить биты (возможно не все), и в таком виде код зашьется в контроллер. Понятно, что если ты в другой раз захочешь прошить другой контроллер, то отроешь hex файл, там опять установлен бит CP, и опять вручную нужно его снимать. Поэтому и удобно прописывать все эти биты сразу в исходнике в файле конфигурации. Удобно, но совсем не обязательно.
 Вт, 27.03.2012, 11:07 | Сообщение # 16        

flash

Пользователи

 Активность: 69   

Romick_Калуга, Речь идет именно о скаченном HEX-файле, который непосредственно зашивается в контроллер. Делаю это так:
В ic-prog я устанавливаю нужные мне значения бита конфигурации. Сохраняю изменения. Далее перед заливкой в контроллер еще раз открываю это окно, для того, чтобы убедиться, что сохранения приняты в силу. И тут система почему то их сама меняет на те, которые были изначально, то есть галочка стоит в CP. А вот сам файл asm - в нем все в порядке. Поэтому, если asm откомпилировать и родить после этого откомпилированный HEX, то другое дело. Все будет ок!
 Вт, 27.03.2012, 12:03 | Сообщение # 17        

Romick_Калуга

Друзья

 Активность: 348   

Все правильно. Поставить галочку CP и чтобы эти изменения сохранились в hex файле, так не получится. Если ты хочешь сохранить изменения, то нужно этот бит прописать в исходнике и компилировать.
Только зачем тебе сохранять эти изменения? Открыл hex файл, отключил бит CP и шей на здоровье. И все будет работать. Если же тебе для удобства нужно ,чтобы каждый раз не выставлять вручную, тогда этот бит нужно прописать.
Наверное, теперь мы поняли друг друга?
 Вт, 27.03.2012, 22:50 | Сообщение # 18        

flash

Пользователи

 Активность: 69   

Romick_Калуга, видимо не совсем. Пытаюсь объяснить, что бит СP при отключении вручную (в hex-исходнике, котрый скачен для "светового ежа") опять ставится в исходное положение, что не дает прошить и выдается програмная ошибка. А по началу я тоже так думал, что сниму сейчас галочку да и прошью!
 Ср, 28.03.2012, 08:33 | Сообщение # 19        

Romick_Калуга

Друзья

 Активность: 348   

Теперь я тебя не понял. Что за чудеса? Ты открыл hex файл в ICProg. В правом поле высвечиваются биты, изменения которых возможно для данного контроллера. К примеру, установлена галка на бите CP. Ты кликаешь мышкой и снимаешь эту галку. И что, эта галка тут-же появляется вновь? И ты даже не успеваешь прошить контроллер? Никогда таких чудес не видел. Или как-то по другому она появляется? Можно подробнее?
 Ср, 28.03.2012, 12:57 | Сообщение # 20        

-igRoman-

Друзья

 Активность: 1198   

flash, не пинать больно

Если контроллер одноразовый прошивы "С" и бит СР не установлен ОФФ, то можно посмотреть содержимое контроллера???

Сейчас по этому поводу собираю программатор Extra-pic, в списке поддерживаемых контроллеров только 12с508, F идентично будет там щится. ICProg поддерживает 12Ф508?.

Quote (flash)
Здесь прописаны эти биты так: __CONFIG b'111111101110'.
я так понимаю прога автоматом фьюзы выставляет??
  • Страница 2 из 5
  • «
  • 1
  • 2
  • 3
  • 4
  • 5
  • »
Поиск:

Внимание! Форум переехал на Tehnodium.ru




© Форум по электронике Мобильная версия