Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
30.06.2006, 18:23
|
|
Прохожий
Регистрация: 30.06.2006
Сообщений: 4
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
АЦП и UART
Я программирую Atmega8
КАк подсчитать будет ли успевать UART передавать данные со скоростью 115200 бит/с с АЦП на ЭВМ, если известь что частота преобразования АЦП до 15 тыс. преобразований в секунду при максимальном разрешении, а время преобразования 65-260мкс. АЦП 10-ти разрядный и последовательного приближения. Сигнал принимается только на порт ADC0.
КАк узнать успеет ли UART переслать все данные которые пришли с АЦП
и принять новые?
Как подсчитать сколько времени придётся ждать АЦП, если, всётаки UART не успеет?
|
|
|
|
30.06.2006, 18:44
|
|
Прописка
Регистрация: 11.06.2005
Сообщений: 266
Сказал спасибо: 9
Сказали Спасибо 13 раз(а) в 12 сообщении(ях)
|
Колян, эт ты написал?
Ну и вопросик!!!
|
|
|
|
30.06.2006, 19:10
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.05.2006
Адрес: Москва
Сообщений: 3,559
Сказал спасибо: 76
Сказали Спасибо 326 раз(а) в 230 сообщении(ях)
|
Re: АЦП и UART
Сообщение от Jasper
|
Я программирую Atmega8
КАк подсчитать будет ли успевать UART передавать данные со скоростью 15200 бит/с с АЦП на ЭВМ
|
вот так avr123.nm.ru/z4.htm как раз расчет времени передачи.
"На передачу одного символа (в формате 8N1 ... "
|
|
|
|
01.07.2006, 00:55
|
|
Прохожий
Регистрация: 30.06.2006
Сообщений: 4
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
прочитал! Извините, но я ничего не понял!
Почему 10,11,12 нужно делить на скорость UART?
Получается что если мы разделим 12 на 115200, то на передачу одного символа тратится примерно 104мкс.
А как это связать с АЦП?
ТОгда мне нужно знать сколько времени тратит АЦП на преобразование одного символа!
ТОгда у АЦП 65-260 мкс это и есть время преобразования одного символа?
Пожалуста подтвердите мои предположения. Просто я только начинаю осваивать микроконтроллеры!
Если мои предположения верны, то получается что UART успевает (104‹260)отправлять все данные с АЦП.
Буду рад любой помощи! Большое спасибо!
Возможно ли вам задать вопрос через ICQ?
|
|
|
|
01.07.2006, 10:45
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.05.2006
Адрес: Москва
Сообщений: 3,559
Сказал спасибо: 76
Сказали Спасибо 326 раз(а) в 230 сообщении(ях)
|
Сообщение от Jasper
|
прочитал! Извините, но я ничего не понял!
|
там написано, "вы новичок и не все сразу будет понятно" и совет дан - перечитайте. И
главное записывайте вопросы и ищите ответы на них.
Сообщение от Jasper
|
Получается что если мы разделим 12 на 115200, то на передачу одного символа тратится
примерно 104мкс.
|
Верно. Значит что-то все же поняли !
На передачу 1 символа в формате 8N1 нужно 10 бод, а 12 я советую с учетом того, что МК
занимается и другими задачами - т.е. для спокойствия, с запасом.
Там это объяснено кстати !
Сообщение от Jasper
|
у АЦП 65-260 мкс это и есть время преобразования одного символа?
|
не символа а "сэмпла" т.е. одного измерения или выборки.
Это время рекомендуемое по ДШ, к нему нужно стремится устанавливая частоту тактирования
АЦП выбором коэф. деления частоты кварца (или иного источника такта) - удобно сделать это
с помощью матера начального кода - avr123.nm.ru/z1.htm
АЦП и UART ни как не связаны между собой ! Вы пишите программу которая отправляет
результат АЦП на UART.
Причем в компиляторе CVAVR вы можете читать результат АЦП из виртуального двух-байтного
регистра ADCW.
Сообщение от Jasper
|
Если мои предположения верны, то получается что UART успевает (104‹260)отправлять все
данные с АЦП.
|
Да. Если время преобразования вы сделаете больше времени на отправку одного символа и ЕСЛИ
будете использовать только 8 бит (столько в одном символе) результата АЦП.
========
Кстати 115200 не предел для МК и ПК, если поставить микруху MAX3222 (или аналог) то в 9
раз быстрее можно слать данные.
Сообщение от Jasper
|
Возможно ли вам задать вопрос через ICQ?
|
Это бесполезно - я не всезнайка! Задавайте вопросы в топике "по курсу" и вам помогут.
=========
__________________
Обучалка AVR PIC ARM начинающим программирование курс самоучитель шаг за шагом с нуля, CVAVR, PROTEUS, MPLAB, WinAVR, IAR, KEIL электроника - http://proavr.narod.ru
|
|
|
|
01.07.2006, 13:25
|
|
Прохожий
Регистрация: 30.06.2006
Сообщений: 4
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
У меня МК работает на частоте 7,3728 МГц
Я установил предделитель АЦП на 64. Получается что АЦП работает на частоте 115,2 кГц.
Как найти время преобразования АЦП при такой частоте?
|
|
|
|
01.07.2006, 16:46
|
|
Прописка
Регистрация: 11.06.2005
Сообщений: 266
Сказал спасибо: 9
Сказали Спасибо 13 раз(а) в 12 сообщении(ях)
|
Сообщение от Jasper
|
У меня МК работает на частоте 7,3728 МГц
Я установил предделитель АЦП на 64. Получается что АЦП работает на частоте 115,2 кГц.
Как найти время преобразования АЦП при такой частоте?
|
Цитирую даташит на ATmega8, у меня стр. 196:
"A normal conversion takes 13 ADC clock cycles. The first conversion after the ADC is switched on (ADEN in
ADCSRA is set) takes 25 ADC clock cycles in order to initialize the analog circuitry"
Вольный перевод:
"Обычное преобразование занимает 13 тактов АЦП. Первое преобразование после включения - 25 тактов, так как необходима инициализация АЦП"
Теперь переводя на твой случай: частота, на которой работает АЦП - 115,2 кГц. 1 такт АЦП - примерно 8,7 мкс (1/115200). Умножаешь это число на количество тактов для нормального преобразования - 13*8,7=113 мкс (примерно). Для первого преобразования - 25*8,7=217 мкс (примерно). Хочешь, чтоб быстрее шло преобразование - уменьшай значение предделителя. Но для точности 10 бит частота АЦП должна быть не выше 200 кГц.
|
|
|
|
01.07.2006, 17:58
|
|
Прохожий
Регистрация: 30.06.2006
Сообщений: 4
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Сообщение от Prime
|
Хочешь, чтоб быстрее шло преобразование - уменьшай значение предделителя. Но для точности 10 бит частота АЦП должна быть не выше 200 кГц.
|
Вроде как не надо делать быстрее преобразование, потому что UART и так не успевает передать эти.
Посоветуйте что мне сделать! Установить 8битное преобразование или написать ожидание (в виде пустого цикла) АЦП пока UART не передаст все данные.
И есть ещё один вопрос. Вот кусок из моей программы:
Код:
|
;Инициализация UART
ldi R20,0b00001000 ; устанавливаем бит передачи
out UCSRB,R20 ; (1‹‹TXEN)
ldi R20,3 ;
out UBRRL,R20 ; скорость 115200, частота 7.3728МГц
;Инициализация АЦП
ldi R20,0b11100110 ; включение АЦП в непрерывном режиме
out ADCSRA,R20 ; и поставим коэффициент деления предделителя на 64
; (частота АЦП 115,2 кГц)
Main:
sbis ADCSRA,ADIF ; ждем первого байта
rjmp Main
in R21,ADCL ; сначала считываем 8 бит из ADCL
out UDR,R21 ; передаём сначала 8 бит по UART
in R21,ADCH ; считывает биты из ADCH
out UDR,R21 ; передача на UART
sbi ADCSRA,4
rjmp Main |
Вопрос заключается в следующем. Возможно ли как-нибудь передавать из ADCH не все 8 бит а только 2? Ведь это сократит время передачи UART. Или это не имеет смысла, потому что UART всё расно не будет успевать?
Возможно что где-то что-то в программе не правильно. Поправте если что не так!
|
|
|
|
01.07.2006, 20:40
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.05.2006
Адрес: Москва
Сообщений: 3,559
Сказал спасибо: 76
Сказали Спасибо 326 раз(а) в 230 сообщении(ях)
|
Сообщение от Jasper
|
Вроде как не надо делать быстрее преобразование, потому что UART и так не успевает передать эти.
Посоветуйте что мне сделать! Установить 8битное преобразование или написать ожидание (в виде пустого цикла) АЦП пока UART не передаст все данные.
|
Еще раз повторяю - АЦП молотит не зависимо от UART. Сделайте по типу как на стр. avr123.nm.ru/05a.htm
|
|
|
|
02.07.2006, 07:53
|
|
Прописка
Регистрация: 11.06.2005
Сообщений: 266
Сказал спасибо: 9
Сказали Спасибо 13 раз(а) в 12 сообщении(ях)
|
"Вопрос заключается в следующем. Возможно ли как-нибудь передавать из ADCH не все 8 бит а только 2? Ведь это сократит время передачи UART. Или это не имеет смысла, потому что UART всё расно не будет успевать? "
Минимум ты можешь передавать в режиме 5 битовом. А переключаться из одного режима в другой постоянно - головная боль, не нужно это.
Не лучше ли тебе передавать данные каждый раз, когда АЦП завершит преобразование? Тебе достаточно написать прерывание, которое бы начинало передачу по UART сразу после окончания преобразования. Либо поставь все это на таймер (правда немного будет морока с подсчетом времени, но справишься, я думаю).
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
Включение UART
|
ankar |
Микроконтроллеры, АЦП, память и т.д |
13 |
28.02.2008 02:11 |
АЦП на МК без АЦП
|
zelanez |
Микроконтроллеры, АЦП, память и т.д |
7 |
29.07.2006 09:59 |
Работа с UART
|
Oleg5865 |
Микроконтроллеры, АЦП, память и т.д |
2 |
01.04.2006 08:44 |
UART
|
slawa |
Микроконтроллеры, АЦП, память и т.д |
4 |
19.01.2006 12:44 |
UART
|
xaoc |
Микроконтроллеры, АЦП, память и т.д |
13 |
01.07.2005 09:31 |
Часовой пояс GMT +4, время: 11:37.
|
|