Микроконтроллеры | PIC16F877 |
|
---|---|---|
При работе отказывается записывать данные в EEPROM память. Ну просто не сохраняет и все. Подпрограмма записи взята с сайта производителя и из справочника ( автор Предко). |
|
|
А какой программатор (В смысле железо)? Проверить уровни и сигналы на ногах контроллера при цикле записи в EEPROM на соответствие даташиту. |
|
|
Программатор самодельный. Его аналог я видел под названием ProPic2. Программная оболочка ICProg. Работаю с ним второй год. Но вопрос в том, что немогу записать данные в EEPROM ни при программировании ни программно. Возможно в этом контроллере надо что-то устанавливать или наоборот выключать в слове конфигурации или ещё где. Программа довольно простая. Запрещены все прерывания. А может наоборот надо разрешить? Возможно и программиста надо заменить!!! |
|
|
Вот из доки на контроллер, может поможет. Текст не копируется, поэтому прилагаю картинку. |
|
|
VitVas, хотелось бы посмотреть исходник. Если пришлете (picmaniac[@]rambler.ru), попробую помочь. Хотя, если и программатором не пишется... Сколько экземпляров PIC проверяли? В память программ записывается нормально? Я записывал данные в EEPROM PIC16F628 программатором JDM - проблем не возникало. |
|
|
Спасибо. Я как раз этой документацией и пользуюсь. Все-таки может быть напряжение? У меня 4,87 вместо 5. Сегодня привезу другой блок питания и поэкспериментирую. Но неужели эта небольшая разница сыграет? Если так, то я перейду на Atmel или ещё на что-нибудь менее критичное. |
|
|
Ещё раз внимательно прочитал: «EEPROM память данных доступна для записи/чтения в нормальном режиме работы микроконтроллера во всем диапазоне рабочего напряжения питания (Vdd). Там ещё об инициализации и диагностическом режиме. Но тогда, как я понимаю, микроконтроллер вообще не подавал бы признаков жизни, А ведь вся остальная программа работает. И ещё один момент не совсем понятен. В 877-м 4 банка памяти. Специальные регистры раскиданы по разным банкам. Чтобы записать или считать данные или адрес, нам надо переключиться в другой банк. Я понял, что аккумулятор (W) читается во всех банках, независимо от того в каком из них были записаны в него данные. А как себя ведут регистры для временного хранения. Вот конкретный пример, после которого у меня возник этот вопрос: movf ADRESH,W ;берём значение t(град) значение в регистре NumL я смог прочесть только когда после переключения в банк 0 ещё раз повторил команду movwf. |
|
|
VitVas Регистры для временного хранения ведут себя аналогично. В какой банк их поместите - там с ними и работайте. Пример TEMP00 EQU 030h ; Регистр пользователя в банке 0 Если регистр NumL расположен в банке 0, то команды bsf STATUS,RP0 ;вкл банк 1 реально перепишут байт из ADRESL через W не в NumL, а в другой регистр, с адресом на 080h больше, и находящийся на карте памяти "напротив" NumL "правее". По обрывкам кода разбираться нелегко, неужели исходник засекречен? Пришлите мне, или присоедините сюда заархивированный - будет намного легче понять, в чем закавыка. Жаль, что ASD сюда не заходит - он бы получше растолковал... |
|
|
Вот пример - это я учился работать с АЦП PIC16F876. Может быть пригодится. |
|
|
У автора Предко - описан егойный программатор и программное обеспечение к нему (у него на сайте). Не подскажете - они работают? А то собираюсь паять (уже комплектующие купил). |
|
|
Форум про радио — сайт, посвященный обсуждению электроники, компьютеров и смежных тем. pro-radio.online | Обратная связь |
© 2003—2024 |