Лучше сделать и жалеть, чем не сделать и жалеть.
Некоторые из моих поделок тут: https://github.com/serge-404
Ну, вы написали длинное (и в то же время нечеткое описание) ссылаясь на некую картинку (хз какую), из которого совершенно не понятно куда ставить конденсатор (думаю, там этих переходных отверстий около преобразователя не одно и не два).
Куда понятнее было бы тупо вырезать в Paint кусок фотки, на которую ссылаетесь, нужное отверстие обвести в кружочек (или пририсовать указывающую стрелочку) и результат художеств сюда запостить.
Лучше сделать и жалеть, чем не сделать и жалеть.
Некоторые из моих поделок тут: https://github.com/serge-404
Понятно. Картинка на Орион:разное #322. А вот насчет нужного отверстия - дак ведь больше 20 лет прошло. И хоть у меня в удостоверении написано " должность - электроник", но я ведь не тот электроник, уже точно не помню.
Последний раз редактировалось Error404; 20.03.2012 в 12:06. Причина: Вставил ссылку на сообщение с картинкой
Я вчера сел писать прошивку и заглох в самом начале. Читать данные с клавиатуры получается (я это делал раньше), а вот с отправкой команд проблемы.
В 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; }
Последний раз редактировалось vinxru; 23.03.2012 в 16:10.
Я нашел проблему. Подтягивающих регистров внутри МК не хватает.И еще я провода data и clock местами перепутал, но вроде я их не один раз уже менял.
Написал первую версию прошивки для ATMega16 на Си. Отлично работает, даже если прерывание вызывать при каждой записи на шине.
Пошел делать плату.
Последний раз редактировалось vinxru; 25.03.2012 в 21:16.
![]()
Пилить текстолит сегодня уже поздно. Плату буду делать завтра.
Делаю плату точно такого же размера, как плата ROM-диска. Разъем клеится на термоклей.
![]()
Последний раз редактировалось vinxru; 25.03.2012 в 22:34.
Что то, внезапно, написал программу, что бы удобно настраивать таблицу преобразования 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
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; 27.03.2012 в 14:46.
vinxru, Хотелось бы соответствия с надписями на клавишах.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)