Форум » Программирование микроконтроллеров. » Непонятки с 16F873 » Ответить

Непонятки с 16F873

Asmodey: Прошу помочь мне со следующей проблемкой. В русском даташите на PIC16F873 не смог разобраться с битами защиты конфигурационного слова. Биты CP0,CP1 это биты 4-5 и в то же время биты 12-13??? Так в какой же разряд слова прописывать их значения? В примечании к разделу «Биты конфигурации» написано – «что бы установить защиту памяти программ, все пары CP1:CP0 должны иметь одинаковое значение». Что это значит, просто тупо пишем в биты 12-13 тоже самое что и в биты 4-5? Пробовал на примитивной программке, так после прошивки PonyProg пытается проверить и сообщает об ошибке записи. Может просто я защиту выключить не смог. В проге просто записывал в биты CP0-CP1 единицы.

Ответов - 56, стр: 1 2 All

Алексей: А собственно какая проблема? Я так понимаю что защиту вы установили, все сделав точно по даташиту. Правильно он ругается, ведь защита включена. Я так понимаю во все четыре бита надо записать 1. Если не помогает можно попробовать в 12 и 13 записать 0.Asmodey пишет: Что это значит, просто тупо пишем в биты 12-13 тоже самое что и в биты 4-5? Я тоже так понимаю. Записывать надо одно и тоже, иначе защита не включится.

Dmitry Dubrovenko: А обязательно хотите задавать конфигурацию цифрами? Я, например, предпочитаю прописывать строки следующего вида (пример, для 16F628A): __CONFIG _CP_ON & _DATA_CP_ON & _LVP_OFF & _BOREN_OFF & _MCLRE_OFF & _WDT_ON & _PWRTE_ON & _HS_OSC _BOREN_ON EQU H'3FFF' ;Сброс по снижению питания (BOR) _BOREN_OFF EQU H'3FBF' ;Сброс по снижению питания (BOR) _CP_ON EQU H'1FFF' ;Бит защиты _CP_OFF EQU H'3FFF' ;Бит защиты _DATA_CP_ON EQU H'3EFF' ;Бит защиты EEPROM памяти данных _DATA_CP_OFF EQU H'3FFF' ;Бит защиты EEPROM памяти данных _PWRTE_OFF EQU H'3FFF' ;Таймер по включению питания (PWRT) _PWRTE_ON EQU H'3FF7' ;Таймер по включению питания (PWRT) _WDT_ON EQU H'3FFF' ;Сторожевой таймер _WDT_OFF EQU H'3FFB' ;Сторожевой таймер _LVP_ON EQU H'3FFF' ;Низковольтное программирование _LVP_OFF EQU H'3F7F' ;Низковольтное программирование _MCLRE_ON EQU H'3FFF' ;Выбор режима вывода RA5/-MCLR _MCLRE_OFF EQU H'3FDF' ;Выбор режима вывода RA5/-MCLR _RC_OSC_CLKOUT EQU H'3FFF' _RC_OSC_NOCLKOUT EQU H'3FFE' _INTOSC_OSC_CLKOUT EQU H'3FFD' ;Внутренний генератор _INTOSC_OSC_NOCLKOUT EQU H'3FFC' ;Внутренний генератор _EXTCLK_OSC EQU H'3FEF' _HS_OSC EQU H'3FEE' _XT_OSC EQU H'3FED' _LP_OSC EQU H'3FEC' Ассемблер сам всё сосчитает. Asmodey пишет:PonyProg пытается проверить и сообщает об ошибке записиЯ вообще-то пользуюсь ExtraPIC'ом (см. соответствующий раздел форума), но полагаю, что ПониПрог действует так же. Т.е., после записи он пытается считать данные из контроллера, на предмет их верификации. А считать он их сможет, только когда биты защиты не установлены. На то он и биты защиты. P.S.: ИМХО, надо было тему называть "Биты конфигурации 873", и помещать в соответствующий раздел. P.S.S.: Опять меня опередили.

Asmodey: Я только в четвертый и пятый бит писал единицы, пытаясь отключить защиту памяти программ. Теперь попробую в двенадцатый и тринадцатый. Похоже действительно защиту не удалось выключить, и потому контроллер после прошивки не читается вот понька и ругается. А тему можно перенести, или создать в другом разделе, здесь то все равно флейм.


Алексей: А я предпочитаю цифрами, зачем столько много лишнего писать, когда в том же мплабе можно настроить эти самые биты быстро и удобно, как и в IC-Prog.

Dmitry Dubrovenko: ПисАть можно только самую первую строку, если у тебя вспомогательный файл подключен. У меня, например, шаблон есть. Я только меняю необходимые параметры, и всё.

MISHA: Не могу считать pаводскую настройку на PIC16F873. Пользуюсь программатором PonyProg. Пишет ошибка n-1. В чём дело не пойму. Может кто подскажет в чём дело. Заранее благодарю

Алексей: В смысле? Вы что переходите с AVR на PIC? У AVR действительно имеются заводские настройки, у пиков же кажется нет, разве что для внутреннего тактового генератора необходимо считать калибровочную константу. Но в этой серии нет этого генератора. Здесь просто выставляете биты конфигурации и шьете. Если хотите считать уже зашитый контроллер, то вполне вероятно что у вас это не получится, могут стоять биты защиты. А вообще то уточните вопрос.

MISHA: Да как раз я не могу считань калибровочную константу. PIC новый. Смотрел в справочнике у PIC16F873 3 генератора, один из них внутренний. или там без константы можно обойтись?

Алексей: НЕТ ТАМ ВНУТРЕННЕГО ГЕНЕРАТОРА. Их не три, а четыре, LP, XT, HS и внешний RC. Там даже нет регистра OSCCAL, куда по обыкновению она загружается. Либо я чего то не допонимаю, либо вы читаете не те книжки.

MISHA: Разобрался и правда книжки не те читаю.

Пётр: MISHA пишет: генератора, один из них внутренний. или там без константы можно обойтись Не у всех ПИКов с внутренним генератором есть регистр OSCCAL куда можно записать калибровочную константу, а раз регистра нет, значит константа тоже отсутствует. Возьмём, к примеру PIC16F628.

MISHA: Извёл меня 873. чё надо ему??? Проверяю после прошивки выдаёт ошибку . Шью всё тем же PonyProg. Пару раз повторил процесс записи-стирания в надежде устранения ошибки. После этого вапще шиться перестал. Выдаёт ошибку (-44), а после чтения в ячейках одни нули. IC-Prog тоже результата не даёт. Я случаем запороть никак не мог PIC?

Пётр: MISHA пишет: Пару раз повторил процесс записи-стирания в надежде устранения ошибки Попробуйте использовать другой программатор. А другие контроллеры шьёт нормально? Если да, возможно ПИК какой-то не такой. А если серьёзно, на сколько я понял Вы пользуйтесь COM программатором, возможно, мешает нормальной прошивке, буфер FIFO компьютера.

Алексей: При чтении выдает одни нули? Дык похоже включена защита памяти программ, в этом случае и будет читать нули, но вот прошивать он должен полностью. Само собой ручная проверка дает ошибку. Надо разбираться с битами конфигурации. MISHA пишет: Я случаем запороть никак не мог PIC? Надо попробовать WinPic800, она умеет определять тип пика, если определит после нажатия нужной кнопки, то с большой долей вероятности сам пик исправен.

MISHA: Да я тоже грешу на защиту памяти программ. Помнится мне что я галочку случайно поставил напротив защиты пограмм. С этого всё и началось. А что после стирания памяти защита не сбрасывается? Если нет то как это можно сделать? Другие контроллеры им не шил. Посмотрим как себя будет вести F84А.

Пётр: MISHA пишет: А что после стирания памяти защита не сбрасывается? А Вы как стирали? В IC-Prog'e нужно в меню "команды" выбрать "стереть микросхему", в этом случае будет произведено полное стирание информации в контроллере.

MISHA: Стирал я IC-Progом и PonyProg. Нифига результат один и тот же. После стирания в ячейках FFFF. После записи, считываю, а там каждый раз одни нули. Защита не стоит. Пробовал писать WinPic800. Так там даже не пишется ничего. Выдаёт ошибку. Пробовал определить тир PICа, так не определяет. Походу брак мне подали. У кого-нибудь есть какие соображения?

Пётр: А другие ПИКи нормально шьются? Если да, возможно ПИК "кривой", а если нет, возможно, Вы неправильно в программе выбрали тип программатора или сам программатор неисправен. Например, мне не удавалось прошить 24СХХ из-за того, что был неправильно выбран в настройках, тип программатора.

Vladimir: MISHA пишет: Пару раз повторил процесс записи-стирания в надежде устранения ошибки. После этого вапще шиться перестал Была у меня подобная история с 628А пару раз прошил и все оказалос глюченые пики попались. Включи проверку при програмировании (в IC-Prog точно есть) и если ошибка будет на адресе 0000 то с вероятностью 99,9% что глючный ПИК но предварительно проверь на другом ПИКе желательно заведома рабочем. И какой программатор? я собирал по схеме в самоучителе програматор PonyProg программа IC-Prog (настройки как в Самоучителе) последняя версия 1.05D шет отлично. И еще заметил такой момент что если машина подгружена, а особенно если слабая, то нужно ставить програматору повыше приоритет в IC-Prog прямо в програме есть установка приоритета.

Пётр: Vladimir пишет: особенно если слабая, то нужно ставить программатору повыше приоритет Я шью контроллеры с помощью проги F_prog.exe и ни разу небыло сбоев. У меня комп Celeron 400 МГц, так что от программы тоже кое-что зависит.

MISHA: Да ошибку как раз на адресе 0000 выдаёт. И ещё при проверке после стирания сообщение выдается, что устройство не стёрто по адресу 0000. Хотя при чтении микросхемы вроде как всё нормально, всё стёрто. Схему программатора с журнала радио взял. Точно такие же схемы в Интернете часто встречаю.

Roslik: Если выдает ошибку по адресу 0000, то скорее всего программатор не может связаться с контроллером, а контроллер целый, у меня такое было. Ищите ошибки в монтаже, или в программе "выбор программатора", инверсия выходов. Попробуйте на ногах замерить сигналы и напряжения во время программирования. Бит защиты после стирания удаляется полностью.

MISHA: Тут вот чего ещё. Есть какие-токонтроллеры у которых бит защиты снимается при последовательном программировании т.е. задеиствован LPT порт. С паралельного COM порта снятие бита защиты не возможно. Случаем не относится ли F873 к этим контроллерам. Ведь всё пошло после случайной установки бита защиты. До того хоть чего то записывалось и читалось.

Пётр: MISHA пишет: последовательном программировании т.е. задеиствован LPT порт. С паралельного COM порта снятие бита защиты не возможно. Начнём с того что COM это последовательный порт, а LPT параллельный. Контроллер можно стереть любым программатором т. е. независимо к какому порту он подключён.

Vladimir: MISHA пишет: До того хоть чего то записывалось и читалось. Именно так было и у меня с той только разницей что у меня после стирания читалас ранее записанная программа. По поводу програматора сравни свою схему со схемой самоучителя она поидее должна быть такой самой функционально возможно только более наворочаной на ровном месте, а главное проверь все основные напряжения на ПИКе их два +5 и +12в.

MISHA: Напряжение проверял. Всё в пордке. Лучше его в работе посмотреть. Может запустится.

Alberto: MISHA пишет: Есть какие-токонтроллеры у которых бит защиты снимается при последовательном программировании т.е. задеиствован LPT порт. это для AVR микроконтроллеров. Попробуй WinPIC800 там есть тест контроллера.

MISHA: WinPIC800 тип контроллера не определяет. В настройках стиот JDM programmer.

Alberto: MISHA пишет: WinPIC800 тип контроллера не определяет. В настройках стиот JDM programmer. а можно схему программатора? Тогда и с советом определиться легче. Ведь при наличии желания и времени можно подавать сигналы на вход программатора вручную и отслеживать их прохождение. МК, конечно, не запрограммируешь , но найти неисправность (м/с, транзистор и т.д.) можно.

Asmodey: На реальном устройстве пробовали проверять? Хотя бы генератор секундных ипульсов, со светодиодом. Может все шьется нормально, только защиту не сняли, причем не в опциях программирования, а в слове конфигурации самой программы. У меня почти то же самое было, трудно понять, в чем проблема, в железе, или в самой прошивке, а когда контроллер замигал светодиодом, я ничуть не сомневаясь полез ковырять биты этого самого слова конфигурации. А для проверки программатора попробуйте воспользоватся утилитой tcom, она позволяет изменять логические уровни на выходе COM порта, и показывает уровни на его входах.

Alberto: Asmodey пишет: А для проверки программатора попробуйте воспользоватся утилитой tcom, она позволяет изменять логические уровни на выходе COM порта, и показывает уровни на его входах.В десятку , и с ручной подачей сигналов на вход программатора не надо связываться.

MISHA: Сегодня собрал мигалку на F873 нифига не идёт. В симуляторе MPLABa всё нормально. Прикол ещё прям чудеса какие-то. Кликаю в IC-Progе в произвольную ячеку задаю произвольное число жму на запись. После записи считываю, а там АБСОЛЮТНО ВО ВСЕХ ячеиках то число которое я забил только по одному адресу перед записью. И так каждый раз. Биты конфигурации тоже проверял всё нормально.

MISHA: Ссылка для схемы программатора. http://slil.ru/24244607

MISHA: Программка которую я пик зашивал здесь. Опыт по программированию не большой. Строго не судите. http://slil.ru/24244921

Alberto: Если шьете, то значит программатор уже заработал? Или уверенности нет? Может, потому и не работает? И еще: я бы команды bcf PortB,0 (bsf PortB,0) вынес бы за пределы кода формирующего задержку, зачем каждые несколько микросекунд подтверждать уже установленное значение?

Алексей: Тип генератора не тот стоит, для 10 мГц необходимо выставить HS. Если не поможет можно попробовать поотключать лишние модули.

Roslik: MISHA пишет: Сегодня собрал мигалку на F873 нифига не идёт. В Попробуй эту Diod

Alberto: MISHA пишет: Кликаю в IC-Progе в произвольную ячеку задаю произвольное число жму на запись. После записи считываю, а там АБСОЛЮТНО ВО ВСЕХ ячеиках то число которое я забил только по одному адресу перед записью. И так каждый раз. А может сначала все-таки убедиться в том что программатор работает? На сайте Корабельникова Е.А., по моему, есть хорошее описание настройки и пошаговой проверки данного программатора.

Vladimir: MISHA ,а впрочем ко всем просьба, не сохраняйте файлы на файлообменниках с рускими названиями не знаю у кого как но у меня от этих названий одни краказябры остаются.

Alberto: Vladimir пишет: не сохраняйте файлы на файлообменниках с рускими названиями не знаю у кого как но у меня от этих названий одни краказябры остаются. в случае скачивания любой программой докачки у меня та же ерунда получается. Пришлось выбрать "сохранить как...", хорошо что файл небольшой, скачался без проблем, потом переименовал (не всегда открываются файлы с русскими буквами) и все дела. А вообще, поддерживаю Петра.



полная версия страницы