Вход AREF это вход опорного напряжения АЦП. Туда вообще можно подать напряжение относительно которого будет считать АЦП, но обычно используется либо внутренний источник опорного напряжения на 2.56 вольта, либо напряжение на AVCC, поэтому на AREF рекомендуется вешать конденсатор, что немного улучшит качество опорного напряжения АЦП (а от качества опоры зависит адекватность показаний на выходе АЦП).
не успеваю за своими мыслями......
Сообщение отредактировал uwrtey - Среда, 06.03.2013, 00:50
читал про форматы кодирования и обнаружил, что В PPM-кодере каждый канал задается импульсом, длительностью от 700 до 2200 мкс. Среднему положению рулевой машинки соответствует импульс длительностью около 1500 мкс. Я тут же вспомнил, что сервопривод управляется именно таким же сигналом. Тут меня осенило с чем связано это совпадение. Совпадение это связано с историей создания формата кодирования. Когда аппаратура была полностью аналоговая схема просто переключала получаемый сигнал между сервоприводами без всякого декодирования... если я не прав, то бросьте в меня камнем поправьте меня
я думаю, что кодировать буду в PPM формате - так проще
длительность импульса от 1000 700 мкс до 2000 мкс пауза между импульсами // сколько ? сейчас обдумываю алгоритм
АЦП 10-бит ( 1024 значения )
1) читаем значение АЦП первого канала ( газ ) 2) сохраняем данные в озу 3) читаем значение АЦП второго канала ( рысканье ) ( курс ) 4) сохраняем данные в озу 5) читаем значение АЦП второго канала ( тангаж ) 6) сохраняем данные в озу 7) читаем озу 8) каким то образом нужно прочитанное 10-ти битное число преобразовать в длительность импульса // каким ? не успеваю за своими мыслями......
Сообщение отредактировал uwrtey - Четверг, 07.03.2013, 10:32
канал равен=длительность импульса + длительность паузы
таким образом длительность импульса должна варьироваться от 700 до 1700 мкс
ну 10ти битное число это и есть диапазон от 0 до 1023 :-) так что прибавь к прочитанному значению с АЦП 1000 и получишь значение канала от 1000 до 2000... :-)
потом при передаче не забудь уменьшить значение канала на 300 (это размер паузы) - и получишь длительность импульса для передачи канала :-) Виталий (аka ВитГо)
ну все бы хорошо, если бы таймер тикал каждую микросекунду. Тогда придется кварц на 8 МГц ставить и использовать делитель для таймера на 8.
_______________________
с кварцем на 16 МГц немного по другому получается...
тогда придется делитель таймера на 8 использовать = получим тиканье таймера каждые 0,5 мкс и к значению полученному в АЦП (от 0 до 1023) нужно будет прибавить 3000 как то так вроде... не успеваю за своими мыслями......
Сообщение отредактировал uwrtey - Четверг, 07.03.2013, 23:07
тогда придется делитель таймера на 8 использовать = получим тиканье таймера каждые 0,5 мкс и к значению полученному в АЦП (от 0 до 1023) нужно будет прибавить 3000 как то так вроде...
нифига не так! так в обще ерунда получится
Ты правильно сказал, читаем значение АЦП прибавляем 1000 умножаем на 2 вычитаем 600 ( это пауза ) полученное значение записываем в OCR1A ( тут получится значение от 2000 тиков до 4046 тиков )
а каким режимом управлять выводом OC1A удобнее в данном случае? ШИМом или CTC? не успеваю за своими мыслями......
Сообщение отредактировал uwrtey - Четверг, 07.03.2013, 23:23