Я так понимаю, что при включении питания выводы RB6 (Clock) и RB7 (Data) должны быть притянуты к нулю, вывод MCLR - к +12в. Счётчик адреса в МК стоит на отметке 0x0000. Далее начинаю тактирование по RB6 с длиной фронта импульса, равно не менее 100нс (т.е. частота ограничена лишь минимальным значением, я правильно понимаю ?). Одновременно по RB7 начинаю выводить информацию, меняя уровень на данном выводе только при низком уровне на RB6. После отсылки 6 байт команды загрузки информации (000010), жду не менее
1мкс, и начинаю принимать 16 бит данных от МК. Далее удерживаю вывод RB6 в низком уровне не менее 1 мкс, и после этого сразу же начинаю отсылать новую команду на чтение данных (000100) по тому же адресу. Если данные верны, даю команду на инкрементирование адреса и начинаю всё по новой.Нап., если мне нужно записать в память программ по адресу
0x02 число 0x36, то после включения питания даю команду 000110, держу 1 мкс вывод RB6 в нуле, далее ещё 1 раз шлю ту же команду (чтобы в счётчике адреса оказалось число 0x02), далее даю команду 000010,жду 1мкс, далее шлю биты 00110110,жду 1мкс,читаю 16 бит, и, если данные верны, инкрементирую адрес и повторяю всё сначала.Если хочу писать в память данных, то повторяю вышеприведдённую процедуру, за исключением того, что непрерывно шлю команду инкрементирования в начале общения до получения нужного мне адреса.
Где в вышеизложенном ошибка ? Я правильно понял, что если посылаю команду чтения/записи, а за ней следуют данные (всегда 16 бит), то затем сразу же можно сдать следующую команду ? Счётчик адреса автоматически обнуляется при достижении числа 0x2000 ? По какому адресу расположен байт конфигурации ?