очень полезный девайс! у меня занкомый сам такой собрал полностью.. извините за огромный офтоп, просто я так за него рад ))) что хочется тут запостить его пост с нашего форума
еще раз сорри
_______________________________
Всем привет.
Давно не виделись.
Обновлю тему, т.к. работы по "созданию" чуда техники продолжаются.
"в предыдущих сериях..."
В феврале все остановилось на том, что вывод информации на ЖК дисплей, показался очень ущербным. После чего, с ближайшей получки, у китайцев был куплен супер-ЖК (супер - потому что Super) телевизор. И началась эра генерения видео-сигнала PAL.
В качестве основного мозга была выбрана та же самая ATMEGA16 (а других альтернатив то и не было).
Непременно было решено делать именно ЦВЕТНОЙ видеоадаптер. Поэтому тут же была применена CXA1145 в качестве кодера RGB-PAL (единственный кодер своего рода, который есть (точнее был) в наличии на местном рынке радиодеталей).
Не знаю почему мне стыдно, но в начале "как обычно" на BASIC, была написана "программа", которая генерила синхроимппульсы, и держала растр. Потом были получены три цветных полосы на экране. Потом от полос нужно было переходить к символам, и их нужно было как-то рисовать. С этого момента я понял, что не бывает такого геморойного сигнала, что бы не было бы еще геморойнее. Это я о видеосигнале, с его черезстрочной развертокой, которую ни как не хотел усваивать мозг. Стыд прошел после того, как стало ясно, что с Basic-ом у меня ничего не получится. Стыд сменился на страх, и нужно было изучить assembler.
После нескольких издевательств над телевизором, у которого после каждой "новой" версии "программы" срывало синхронизацию, выяснилось, что тактовой частоты в 10 мгц - мало. И нужно делать 20 мгц.
Недобрым словом помянув оверклокеров - приступил к "разгону". Впаял кварец на 20 Мгц. Проц заработал, но через пень-колоду. При чем, самое смешное, то что данный проц был с буквой "L", т.е. производитель гарантировал нормальную работу камня до 8 МГц. Повышение напряжения с 5 до 7 вольт ситуацию не изменило, хотя идея и с самого начала была не умной. В ходе экспериментов, нечайно вместо 5 вольт, попутав клему блока питания, на сей девайс было подано 12 вольт. Удивительно, но не дыма, не треска, ни других характерных признаков смерти не последовало, хотя и стабильности на повышенной частоте не добавилось. Видимо буква "L" не хотела соглашаться с разгоном. Далее было принято решение использовать аналогичный проц, без злощастной буквы L. Теперь процессор должен был работать на 16 Мгц (где 16 там и 20), но ***** - не обязан! Вис, тупил, и заикался. Идея с видеоадаптером накрылась медным тазом, и требовала перехода на более быстрый процессор. На улице было темно, радио еще не играло, блеснула мысль организовать внешний тактовый генератор. Побыренькому, на 155ЛН1 двух резисторах и одном кварце, благополучно был запущен новый тактовый генератор на 20 Мгц, который так и оказал решающее влияние на стабильность работы "разогнаной" системы. Теперь все процики, хором (с буквой L и без нее) работали на 20 Мгц.
Оставалось всего ничего, нужно было написать программу и видеоадаптер готов. Как выяснилось ранее, писать программу на Basic было невозможно, т.к. каждую инструкцию необходимо было учитывать по времени ее выполнения (для справки, время выполенния одной инструкции, это маленькая видимая точка на экране телевизора). Короче! Со справочником команд в одной руке, и другой руке в дебаге, при каждой компиляции считая и корректируя длительность написанного кода, была написана программа, которая умела выводить на экран телевизора один символ. Потом и строку, а потом и весь растр заполнился символами. :-) Наступило счастье. Оставалось только сделать интерфейс, что бы в данный девайс извне закидывались буквы. Сделано это было во время строчного синхроимпульса, по USART на 9600. Ну и вот. Получился завершенный видео-девайс, который умел выводить цветные символы разрешением 10 на 25.
Теперь, плата бортового компьютера, имеет на борту вместо одного процессора - два. Один отвечает за сбор информации с датчиков автомобиля, а второй за вывод информации на экран телевизора. т.е. идея (не колхозить корпус, и отказаться от ЖК дисплея) была реализована.
Дальше. Вывел на экран все что можно было вывести (длительность впрыска, одометр, расходометр, вольтаж борт.сети, темпер охл. жижкости, темпер на впуске, обороты, скорость). Счастья не добавилось. Захотелось иметь возможность обнуления одометра, и расходометра. Срочно нужны были кнопки. Первая мысль, тупо припаять 4 кнопки к четырем ногам микроконтроллера. Но куда эти кнопки разместить на панели приборов!? Снова идея "колхоза кнопок" была отодвинута в сторону.
Дело в том, что купленный китайский SUPER-телик, имел в своем комплекте пульт дистанционного управления. И я подумал что неплохо было бы, что бы один пульт, работал бы как с телевизором, так и с контроллером. Сказано - сделано. За 50 руб. купил ИК приемник. Посадил его на последний вход прерывания INT2, задействовал последний таймер микроконтроллера. Подключил приемник к линейному входу звуковой карты. Установил Sound Forge. Записал сигнал с пульта. Проанализировал его. Разобрался в методе кодирования. И все. Теперь у бортового компьютера есть телевизор, и клавиатура. :-) наступило счастье.
Теперь по тихой грусти нужно дописать программку, и вывести те данные которые мне нужны. С этого я как бы все начал, к этому и вернулся. :-)
А пока что дописан одометр. Теперь на экране есть три одометра. Вечный, оперативный, и за текущую поездку с момента включения зажигания. Так же, с пульта можно обнулять оперативный одометр, или вызывать экран с десятью последними поездками.
Продолжать?
А то устал песать чета.
____________________________