Re: Pic Programming

Do you have a question? Post it now! No Registration Necessary

Threaded View
Здраствуйте Vadim,

*06.09.03* *22:12:17* Вы писали в *RU.EMBEDDED*
сообщение к *All*
о *"Pic Programming"*.

 VT> Hарод, может, всё же подскажете алгоритм чтения из памят программ
 VT> PIC16F84 ? Из доки микрочипа мало чего понял.

Если речь идет о чтении памяти программ через ICSP, то история такая:
Есть такой зверь, как PIC16Fххх. Если ему подать на вход #MCLR (RA3?)
особое напряжение (например 12 В), то он войдет в режим программирования.
Hа вход CLOCK (RA1) ему подается тактовый сигнал, по спаду которого он
считывает данные с входа DATA (RA0). Поступающий на вход DATA битовый
поток он делит на две части: первые 6 бит - это код команды, остальные
16 бит - данные. Из 16 бит данных реально используются только 14.
Биты 1 и 16 нужны для каких-то внутренних нужд и их значение может быть
любым. При передаче данных первым передается младший бит.
Чтобы считать память программ, нужно послать команду "чтение данных
из памяти программ" (код хх0100b?), после чего вывод DATA станет выходом
и на него по спаду сигнала на входе CLOCK будет выдаваться содержимое
текущей ячейки памяти программ.
После этого нужно инкрементировать текущий адрес соответствующей командой
(код хх0110b?) и считать следующую ячейку памяти. И так пока не надоест :) .

С уважением, Den


Pic Programming
#/▄▄▄▄▄/# · ···─═╗ Привет _Den_ ! Пишет тебе *Vadim* !
_*▀▀▀▀▀*_        ╚═══════════════─────────────────····· · · ·

10 Сен 03 16:07, _Den Y. Borisov_ ══ /Vadim Tzirulnicov/:

Уф ! Hу хоть кто-то откликнулся на моё письмо !!! :)

Доп. вопросы:

MCLR в +12в. перед каждой командой дёргать или можно один раз вывести в +12в и
всё время держать, независимо от того, пользуюсь ли МК (программно, ессно) или
нет ?

Дальше.

Максимальной границей частота импульса не ограничена ? А то в микрочиповской
доке указано "100нс". А мне трудно держать железом программатора импульсы
длительностью короче 1мкс (1кГц)...
После подачи команды необходимо удерживать CLOCK (RB6) в низком уровне не менее
1мкс, так ?

               · ···─═╗ Hу я вроде все сказал... Bye _*Den*_ !
                      ╚═══════════════─────────────────····· · · ·
... А здесь могла бы быть ваша реклама...

Re: Pic Programming
Здраствуйте Vadim,

*16.09.03* *21:21:46* Вы писали в *RU.EMBEDDED*
сообщение к *Den Y. Borisov*
о *"Pic Programming"*.

 DYB>> Если не нужно после чтения/записи "ID locations"'ов,
 VT> Можно поподробней о том, что это такое ? Из доки мало чего понял.

У PIC16Fxxx это 4 7-битных слова, которые можно использовать для
идентификации устройства (например хранить там серийный номер).

 DYB>> слова конфигурации и слова "Device ID"
 VT> ?

Слово конфигурации задает пожизненную :) конфигурацию устройства
(до следующего перепрограммирования): тип осциллятора, работу WDT, и т. д.
Слово "Device ID" можно использовать для проверки, тот ли контроллер
засунули в программатор - в этом слове храниться кодовая комбинация,
уникальная для каждой модели PIC16xxx.


 DYB>> Если загрузить в
 DYB>> указатель адреса число 2000h командой "Load configuration",
 VT> Я думал, этой командой загружаются данные в байт конфигурации пика
 VT> (OSC1,OSC2,WDT,etc...) :)

У указателя адреса два режима работы: первый (включается после ввода
контроллера в режим программирования) позволяет ему указывать на область
памяти программ (0-1FFFh), второй (включается командой "Load Configuration")
позволяет работать  с "ID Locations" (2000h - 2003h),
словом "Device ID" (2006h) и словом конфигурации (2007h).
Команда "Load Configuration" записывает в указатель адрес 2000h.

 DYB>> то этот
 DYB>> указатель будет крутиться вокруг 2000h,
 VT> А именно ? Диапазон ?

Лучше дальше адреса 2007h не лазить, потому что у меня поведение PIC16F630
не соответствует документации :) .

 VT> То есть если я не воспользуюсь данной командой, то
 VT> после достижения 1FFF в счётчике адресов значение последнего установится
 VT> в ноль, а если загружу произвольное число, то при достижении определённой
 VT> границы счётчик сбросится в данное введённое в него число ?

Команда "Load Configuration" выполняет *два* действия: настраивает счетчик на
2000h и заносит в буфер записи величину, которая передается в качестве
параметра. Потом содержимое буфера можно будет записать в память по текущему
адресу соответствующей командой.

 VT> То есть без
 VT> сброса счётчика я могу работать только с "окном" определённого размера ?

Сбор счетчика (аппаратный?) все равно оставит доступные адреса в
диапазоне 0-1FFFh.

 VT> Поясни. Память программ - 0000-1FFF,данных-2008-2FFF,байт

Память данных (EEPROM?) не отражена на общее простанство адресов :/

 VT> конфигурации-2007, для ID-Location'ов (что это такое ?) отведены 4 байта
 VT> с 2000 по 2003, остальные байты зарезервированы ?

Да, для будущих поколений :) .

 VT> Почему "нижняя по документации - 1 мкс" ? В доке указано 100нс. 1мкс - в
 VT> период между вводом командой и получения/отправки данных.

Там много всяких величин, но длительнось удержания сигнала на входе CLK в
низком уровне в *моей* :) доке на PIC16F630/676 должна быть не меньше 1 мкс.

 VT> Ошибся. Импульсы частотой 1кГц имеют длину фронта импульса 1мс, а не
 VT> 1мкс, конечно.

У идеального фронта импульса вообще не должно быть никакой длительности, т. е.
она должна стремиться к 0 :) .

С уважением, Den


Site Timeline