Теперь перейдем к более печальной части этого проекта:
- Писать программу собираюсь на СИ в CV AVR. СИ начал изучать недано (буквально неделю назад) но уже есть свои плоды: более менеее научился отображать информацию на LCD, опрашивать порты контроллера, зажигать светодиоды, но до совершенства еще конечно далеко. В связи с чем прошу помощи по следующим вопросам( желательно чтобы для каждого вопроса был отдельный пример на СИ (в идеале написанный на CV AVR) ):
- Сколько я не бился у меня так и не получилось корректно обработать повороты энкодера. Перерыл кучу информации и нашел два метода с помощью которых это можно сделать:
1. Опрашивать порты к которым присоединен энкодер и сравнивать это значение с предыдущим и в зависимости от ситуации ++ или -- счетчик энкодера.
2. Использовать прерывания по INT0 или INT1. Но здесь говорят нужно бояться дребезга контактов.
Пробовал написать алгоритмы по обоим методам но ничего толкового не вышло(((
- Т. к. буду использовать клавиатуру с достаточно большим количеством кнопок, подсоеденять ее буду матричным способом. Таким образом я сэкономлю ножки микроконтроллера. Алгоритм по клавиатуре я тоже нащел: вначале порты к которым подсоеденены строки клавиатуры выставляем на вход, а порты к которым присоеденины столбцы - на выход. Далее опррашиваем строки клавиатуры. Если будет нажата какая нибудь клавиша на ножке порта-входа появится еденица в этот момент запоминаем на какой строчке появилась еденица, далее перенастраиваем порты с точностью до наоборот - ножки которые были входами делаем как выходы, а которые были выходами делаем как входы, и опрашиваем столбцы клавиатуры. Таким образом мы получаем еденицу на определенной строке и столбце клавиатуры а потом с помощью IF или CASE проверяем какой кнопке соответствует эта комбинация.
По клавиатуре я нащел примеры только на ассемблере, но не стал разбираться, может у кого нибудь есть примеры работы с матричной клавиатурой на СИ.
- С диспелеем как я уже говорил почти разобрался - единственное что у меня не получается так это вывести на него значение какой нибудь переменной. CV выдает ошибку в строке вывода - типа у вас несоответсвие типов. Подскажите как решить эту проблему.
- Следующая проблема это EEPROM память. Мне она понадобится для хранения настроек системы(баланс, тембры ВЧ, НЧ, Громкость и т. д.) Сразу скажу что я с ней даже не разбирался. По этому пункту также нужен наглядный пример чтобы легче было понять алгоритм записи и чтения из нее.
- И последняя проблема это интерфейс I2C. Алгоритм в общем то мне понятен: сначала нужно выбрать устройство по его уникальному адресу а потом посылать или считывать с него команды. Но для большего пониманияз какой нибудь пример не помешал бы.
Думаю данная тема будет многим интересна, поэтому совместными усилиями надеюсь мы соберем это устройство. Сразу хочу сказать огромное спасибо тем, кто откликнется на мои просьбы))))



