"Картинку в студию!"
Вид для печати
Ну, вы написали длинное (и в то же время нечеткое описание) ссылаясь на некую картинку (хз какую), из которого совершенно не понятно куда ставить конденсатор (думаю, там этих переходных отверстий около преобразователя не одно и не два).
Куда понятнее было бы тупо вырезать в Paint кусок фотки, на которую ссылаетесь, нужное отверстие обвести в кружочек (или пририсовать указывающую стрелочку) и результат художеств сюда запостить.
Понятно. Картинка на Орион:разное #322. А вот насчет нужного отверстия - дак ведь больше 20 лет прошло. И хоть у меня в удостоверении написано " должность - электроник", но я ведь не тот электроник, уже точно не помню.
Я вчера сел писать прошивку и заглох в самом начале. Читать данные с клавиатуры получается (я это делал раньше), а вот с отправкой команд проблемы.
В 80% случаев клавиатура не принимает команду. Я уже и задержки разные делал везде. И из интернета программы запускал. Всё одно и то же.
Я вчера даже дизассемблировал прошивку caro, что бы понять, почему оно не работает. Но пока её не запускал.Код:void send(char data) {
setClock0();
delay_us(200);
setData0();
delay_us(20);
setClock1();
waitClock0(); // Ждем 0
char parity=0;
for(char i=0; i<8; i++) {
if(data&1) { setData1(); parity++; } else setData0();
data >>= 1;
waitClock(); // Ждем сначала 1, потом 0 (виснет в 80% тут)
}
// Бит четности
if(parity&1) setData0(); else setData1();
waitClock();
// Стоповый бит
setData1();
waitClock();
// Пропуск ACK
waitClock1(); // Ждем 1
}
void setData1() { DDRC &= ~1; PORTC |= 1; }
void setData0() { PORTC &= ~1; DDRC |= 1; }
Тут отличие в том, что установка setData1() выполняется без изменения DDR... но вроде бы я так пробовал.Код:send: rcall setClock0
rcall delay2
cbi PORTC, DATA_LINE ; setData0();
sbi DDRC, DATA_LINE ; выход данных
rcall delay1
cbi DDRC, CLOCK_LINE ; setClock1();
rcall delay1
ldi r19, 8
clr r2 ; parity = 0;
loc_162: sbic PINC, CLOCK_LINE ; for(8..1) {
rjmp loc_162 ; waitClock0();
ror r21 ; data >>= 1;
brcs loc_168 ; if(carry) { setData1(); parity++; } else setData0();
cbi PORTC, DATA_LINE
rjmp loc_16A
loc_168: sbi PORTC, DATA_LINE
inc r2
loc_16A: sbis PINC, CLOCK_LINE ; waitClock1();
rjmp loc_16A
dec r19
brne loc_162 ; }
loc_16E: sbic PINC, CLOCK_LINE ; waitClock0();
rjmp loc_16E
sbi PORTC, DATA_LINE ; if(parity&1) setData0(); else setData1();
sbrc r2, 0
cbi PORTC, DATA_LINE
loc_173: sbis PINC, CLOCK_LINE ; waitClock1();
rjmp loc_173
loc_175: sbic PINC, CLOCK_LINE ; waitClock0();
rjmp loc_175
sbi PORTC, DATA_LINE ; setData1();
loc_178: sbis PINC, CLOCK_LINE ; waitClock1();
rjmp loc_178
cbi DDRC, DATA_LINE ; вход данных
loc_17B: sbic PINC, CLOCK_LINE ; waitClock0();
rjmp loc_17B
loc_17D: sbis PINC, CLOCK_LINE ; waitClock1();
rjmp loc_17D
ret
void setData1() { PORTC |= 1; }
void setData0() { PORTC &= ~1; }
Я нашел проблему. Подтягивающих регистров внутри МК не хватает. :v2_dizzy_wall: И еще я провода data и clock местами перепутал, но вроде я их не один раз уже менял.
Написал первую версию прошивки для ATMega16 на Си. Отлично работает, даже если прерывание вызывать при каждой записи на шине.
Пошел делать плату.
http://s12.radikal.ru/i185/1203/c0/81bae15077ac.png
Пилить текстолит сегодня уже поздно. Плату буду делать завтра.
Делаю плату точно такого же размера, как плата ROM-диска. Разъем клеится на термоклей.
http://s019.radikal.ru/i602/1203/c4/2a417eb19c2a.jpg
Что то, внезапно, написал программу, что бы удобно настраивать таблицу преобразования 86РК / Орион -> PC.
Работает в окне браузера. (Написано на HTML и JS.)
http://tmaplatform.ru/vinx_home_page/86rk2.html
(Версия 2 от 27-03-2012)
---------- Post added at 14:12 ---------- Previous post was at 13:36 ----------
У ATMega16 еще осталось несколько свободных ног. Добавлю еще порт джойстика.
И еще я не нашел Ъ
---------- Post added at 14:38 ---------- Previous post was at 14:13 ----------
По умолчанию раскладки будут такие. Вы их можете поменять.
Версия 6
http://s019.radikal.ru/i633/1203/38/ed735049b850.png
UPD: На клавишу [' " Э] в английской раскладке повесил SHIFT+2
Английская раскладка
80,88,96,104,112,120,83,68,119,0,0,0,2048,
0,4096,0,99,74,82,90,98,106,114,122,67,75,
66,107,91,89,73,64,342,0,123,595,107,65,78,
126,108,86,102,79,110,77,125,70,95,111,81,0,
72,348,122,67,75,603,1024,76,94,100,116,124,69,
85,93,101,83,594,103,98,106,114,512,87,71,92,
118,84,117,109,99,115,123,512,105,74,82,90,81,
256,0,0,127,0,0,0,256,97,121,113,66,115
Русская раскладка
80,88,96,104,112,120,83,580,631,0,0,0,2048,
0,4096,0,99,74,82,90,98,106,114,122,67,75,
66,107,91,89,73,64,342,0,123,595,107,65,85,
92,110,93,108,117,124,95,111,87,69,71,81,0,
72,348,122,67,75,603,1024,116,79,126,76,70,86,
125,101,100,118,103,615,98,106,114,512,78,119,94,
109,77,102,71,84,68,115,512,105,74,82,90,81,
256,0,0,127,0,0,0,256,97,121,113,66,115
Редактор: http://tmaplatform.ru/vinx_home_page/86rk2.html
vinxru, Хотелось бы соответствия с надписями на клавишах.