Стал перед задачей эмуляции ипромки 93lc46 в одном устройстве
причём эмулировать надо неполностью, требуется всего лишь подсунуть первые три байта
это можно сделать на основе отсчёта импульсов по линии CLK и выдачи данных по линии DO
ещё одна особенность , линия DO подтянута единицей. соответсвенно выводить надо инверсионно. транзисторным ключём это исправить нельзя, т.к. эта шина используется ещё для передачи данных в сам МК эмулятора(т.е. сначала мк принимает одну информацию - с этим разобрался, а потом выдаёт посылки якобы от ипром - с этим непонятно)
пробовал уже по разному. ну не хочет и всё.
вот пока что один из вариантов эмуляции
interrupt [EXT_INT0] void ext_int0_isr(void) //по восходящему испульсу на линии CLK
{
counter++; // счётчик +1
if(counter>=10 && counter<=18) //1-ый байт
{
DO = ((SL_B[4] << counter - 10) & 0x80);
}
if(counter>=18 && counter<=26) //2-ой
{
DO = ((SL_B[5] << counter - 18) & 0x80);
}
if(counter>=35 && counter<=43) // 3-ий
{
DO = ((SL_B[6] << counter - 35) & 0x80);
}
}
делал на основе осцилограмм линий clk и do при считывании с ипромки.
их скоро выложу, где то потерял в компе.
и вот ещё есть этот алгоритм но он написан на алгоритм билдере
но я его не понимаю.в принципе если кто понимает и алгбилдер и cvavr то буду очень благодарен если поможет перевести на С этот код.
вот ещё дамп из ипромки.
мне нужно передать ячейки в которых : E3 , 87 , 7F
режим 16-bit
Сообщение отредактировал Dj X3 aka A-Droo - Jun 17 2010, 22:31
Эскизы прикрепленных изображений
Прикрепленные файлы
____.zip ( 160 байт )
Кол-во скачиваний: 13