Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
25.07.2009, 16:30
|
|
Прописка
Регистрация: 25.03.2009
Сообщений: 137
Сказал спасибо: 22
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
|
Калибровка внутреннего генератора(atmega169)
Всем привет!Хотел написать программу для контроллера,которая будет принимать байт и БЕЗ ИЗМЕНЕНИЯ отправлять его мне назад.А получилось так:например,
tx:5
rx:35 (dec формат)
tx:9
rx:39
...
Я слышал про калибровку внутреннего тактового генератора перед инициализацией uart'а.Что это такое вообще,как ее делают.Просто для atmega16 не видел чтобы кто-то писал про калибровку,а на m169 видимо нужно это делать.С чем это связано,температура влияет на ход генератора?Может кто-нибудь сталкивался с этим на mega169?
код программы ниже.
P.S. Я читал документацию,там нет этого,там просто описывается стандартный для всех мег USART...
;Контроллер принимает байт и тут же его возвращает
;по RS-232
;
;-------------------------------
.include "m169def.inc"
;---------------------------------
.macro outs
ldi r16,@1
sts @0,r16
.endmacro
.macro delay
ldi r21,10
ldi r22,10
ldi r23,10
delay1:
dec r21
brne delay1
dec r22
brne delay1
dec r23
brne delay1
.endmacro
;--------------------------------
.cseg
.org 0
rjmp _RESET
;-----------
.org INT_VECTORS_SIZE
_RESET:
ldi r16,High(RAMEND)
out SPH,r16
ldi r16,Low(RAMEND)
out SPL,r16
USART_Init:
; Set baud rate
ldi r17,0
ldi r16,12
sts UBRRH,r17
sts UBRRL,r16
; Enable receiver and transmitter
ldi r16,(1‹‹RXEN)|(1‹‹TXEN)
sts UCSRB,r16
; Set frame format: 8data, 2stop bit
ldi r16,(1‹‹USBS)|(3‹‹UCSZ0)
sts UCSRC,r16
ldi r16,1‹‹U2X0
sts UCSRA,r16
;-----------
_MAIN:
USART_Receive:
; Wait for data to be received
ldi r16,UCSRA
sbrs r16,RXC
rjmp USART_Receive
lds r16,UDR
mov r18,r16
USART_Transmit:
;Заменяем эту команду командами ниже
;sbis UCSRA,UDRE
lds r16,UCSRA
sbrs r16,UDRE
rjmp USART_Transmit
sts UDR,r18
delay
rjmp _MAIN
|
|
|
|
25.07.2009, 17:06
|
|
Супер-модератор
Регистрация: 13.03.2004
Адрес: Minsk
Сообщений: 2,378
Сказал спасибо: 1,955
Сказали Спасибо 1,328 раз(а) в 578 сообщении(ях)
|
Если хотите работать с USART - используйте кварц. Встроенный RC работает очень нестабильно, так что и калибровка вряд ли поможет. Частота будет плавать и от температуры, и от питания, и от пролетающих над платой мух.
|
|
|
|
25.07.2009, 21:01
|
|
Прописка
Регистрация: 25.03.2009
Сообщений: 137
Сказал спасибо: 22
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
|
Дело в том что я не имею возможности работать с внешним кварцем,так как использую AVR Butterfly атмеловскую демонстрационную отладочную плату...Поэтому мне нужно попробовать откалибровать генератор.
Не опишете процедуру,как это делается?
|
|
|
|
25.07.2009, 23:12
|
|
Супер-модератор
Регистрация: 13.03.2004
Адрес: Minsk
Сообщений: 2,378
Сказал спасибо: 1,955
Сказали Спасибо 1,328 раз(а) в 578 сообщении(ях)
|
Сообщение от Archer07
|
Дело в том что я не имею возможности работать с внешним кварцем,так как использую AVR Butterfly атмеловскую демонстрационную
|
Да... Глянул доку - плата весьма странная. ЖКИ - прекрасно, но на ней вроде как и USART предусмотрен. Может, как демо и сойдет, но в работе я бы такое ни в коем случае не использовал.
Калибровка RC генератора производится, как я понимаю, автоматом - тем числом, что занесено при изготовлении. Подгонять можно изменением OSCCAL - смотриите в даташите.
Так что варианты
1) надеяться на стабильность питания и температуры
2) перешить фузы на внешний кварц, отпаять часовой, припаять кварц и 2*27 пик
|
|
|
|
26.07.2009, 00:48
|
|
Почётный гражданин KAZUS.RU
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
|
Сообщение от Archer07
|
Дело в том что я не имею возможности работать с внешним кварцем,так как использую AVR Butterfly атмеловскую демонстрационную отладочную плату...
|
А ручками припаять, делов на 5 минут...
А если не хотите - то поставить датчик температуры и калибровать генератор в зависимости от измереной температуры корпуса и напряжения питания..
Сообщение от Archer07
|
Поэтому мне нужно попробовать откалибровать генератор.
|
Геммороя НАМНОГО больше чем просто припаять кварц )))))
Сообщение от Archer07
|
Не опишете процедуру,как это делается?
|
А даташиты читаем?.. страница 335 как раз посвящена даному вопросу...
в диапазоне - 40 +80 градусов и напряжении 2-5В частота гуляет от 7 до 8,5 МГЦ .....
Выводим наружу сигнал связаный с частотой кварца, например генератор ШИМ или просто изменения на порту.
Меряем получающуюся частоту в зависимости от температуры и напряжения. Коректируем внутрений генератор.
Как корректировать. Ищем в даташите название регистра корекции гнератора и пишем в него значения пока частота не сравняется с требуемой. Когда наберём статистику влияния температуры и напряжения на частоту - строим табличку и записываем во FLASH.
А у PIC есть серия МК nanoWATT technology, обеспечивают 1% в диапазоне -40 +125 2 - 5,5В ...
Полазил в даташитах некоторых Тини и Мегах.. такого не обнаружил...
-- Прилагается рисунок: --
|
|
|
|
26.07.2009, 09:07
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
|
Зачем так извращаться? У меня во всех проектах все команды имеют вид
F5h - код операции - данные - контрольная сумма
Контроллер смотрит первый байт, и если принято не F5h (11110101) - то частота ушла. Например если принято 11101011 - значит частота забольшая и ее надо понизить через ОСККАЛ, если например 11110010 - частота слишком маленькая. Контроллер корректирует ОСККАЛ и посылает в комп 00h с нулевым 9-м битом - а для компа все ответы от 00hдо 0Fh значит "повторить предыдущую посылку ибо неправильно принята". Синхронизация после включения питания - быстрей 0,1 секунды, в процессе работы - за 10 секунд всего 2-3 повтора. Частота 115200, температура от +10 до +30, пакет данных по 8-16 байт, в одном проекте было по 64. И обязательно контрольная сумма!
|
|
|
|
26.07.2009, 12:19
|
|
Почётный гражданин KAZUS.RU
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
|
Сообщение от niXto
|
Зачем так извращаться?
|
Ваш случай частный, когда есть с чем синхронизироваться. В вашем случае USART.
|
|
|
|
26.07.2009, 16:21
|
|
Прописка
Регистрация: 25.03.2009
Сообщений: 137
Сказал спасибо: 22
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
|
А возможен ли такой вариант:
на плате есть RTC-часы реального времени.
Это отдельный задающий источник импульсов.Может мне синхронизировать с ним?Так можно?
|
|
|
|
26.07.2009, 17:28
|
|
Почётный гражданин KAZUS.RU
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
|
Сообщение от Archer07
|
А возможен ли такой вариант:
на плате есть RTC-часы реального времени.
|
Можно калибровать по ЛЮБОМУ ИСТОЧНИКУ СТАБИЛЬНОЙ ЧАСТОТЫ...
в вашем случае - изеряйте секундные (минутные,часовые) интервалы и подстраивайте внутрений генератор...
|
|
|
|
28.07.2009, 01:34
|
|
Гражданин KAZUS.RU
Регистрация: 24.11.2006
Адрес: ДНР
Сообщений: 612
Сказал спасибо: 553
Сказали Спасибо 314 раз(а) в 142 сообщении(ях)
|
Re: Калибровка внутреннего генератора(atmega169)
Сообщение от Archer07
|
Всем привет!Хотел написать программу для контроллера,которая будет принимать байт и БЕЗ ИЗМЕНЕНИЯ отправлять его мне назад.А
получилось так:например,
tx:5
rx:35 (dec формат)
tx:9
rx:39
...
Я слышал про калибровку внутреннего тактового генератора перед инициализацией uart'а.Что это такое вообще,как ее делают.Просто для atmega16 не видел
чтобы кто-то писал про калибровку,а на m169 видимо нужно это делать.С чем это связано,температура влияет на ход генератора?Может кто-нибудь сталкивался
с этим на mega169?
код программы ниже.
P.S. Я читал документацию,там нет этого,там просто описывается стандартный для всех мег USART...
...
|
Калибровка 169 нужна только в контексте данного проекта - тобишь баттерфляя. Вызвано енто тем, что в нем реализованы RTC - Посему разработчики на пины
23,24 МК прицепили именно низкочастотный генератор 32768 Гц, а не обычный 4/8/16 МГц, как то сделано в большинстве проектов.
А для связи по USART(если мне не изменяет память - в проекте на скорости 9600 сделано) - использован внутр. генератор 8МГц(полеленное на 8
программируемым делитетем) = 1 МГц - на эту частоту МК откалиброван еще на заводе. Калибровка действительно нужна - в диапазоне напряжений питания 2..3 вольта(когда садится батарея) уж очень большой уход частоты внутр. генератора --› соответсвенно погрешность скорости UART. Судя по таблице, после калибровки погрешность скорости уарта на такой частоте очень низкая. А про температуру - учитывая, что плата должна использоваться в ознакомительных целях при комнатной температуре (не в индустриальном температурном диапазоне) - на калибровку по ней разработчики забили(хотя стоило бы сделать).
Пример калибровки внутреннего генратора приведен в ПО, прилагаемой к этой плате(недавно уже была тема про баттерфляй) - если считаете что она поможет.
Функция называется OSCCAL_calibration. Правда написано на Си. А вы я смотрю с асма осваивать начали... (ну может и правильно - спорить не смею)
Сообщение от Archer07
|
А возможен ли такой вариант:
на плате есть RTC-часы реального времени.
Это отдельный задающий источник импульсов.Может мне синхронизировать с ним?Так можно?
|
где вы там микросхему RTC нашли - не пойму! RTC реализовано с помощью МК!. Состав:
The AVR Butterfly Includes
- ATmega169 AVR microcontroller
- 100 segment LCD Display
- 4Mbit Dataflash
- 32kHz oscillator for RTC
- 4-way directional button
- Light sensor (LDR)
- Temperature Sensor (NTC)
- Speaker for Sound Generation
- Access to pheripherals through header connecto
- RS-232 Level Converter
- Voltage Reading 0-5V
Сообщение от picavr
|
А ручками припаять, делов на 5 минут...
А если не хотите - то поставить датчик температуры и калибровать генератор в зависимости от измереной температуры корпуса и напряжения питания..
|
насчет 5 минут - сомнительно(видели бы вы эту плату), а насчет калибровки по температуре - идея! если плату желают использовать где-нить кроме "в доме
" (недайбог конечно) - то можно, тем более что датчик температуры NTC уже на плате есть.
то мона забить в память табличку. Там ее аж 4 Мбита AT45DB (исходники рабочие есть) - и радовайся жизни c ATMEL!
P.S.
Забыл на атмел и пошел на PIC24 и выше. Зачем платить больше?
‹center›
-- Прилагается рисунок: --
‹IFRAME src = "nuke/users_images/28072009/5494592.jpg" frameborder="0" name="fr3191570" scrolling="yes" width="470" height="1074" align="bottom"›[img]nuke/users_images/28072009/5494592.jpg[/img]
‹font color=red›Рисунок не умещается на странице и поэтому сжат!‹/font›
Для того, чтобы просмотреть его полностью, щелкните здесь.
‹/IFRAME›
‹/center›
Прикрепленный файл: 4917782.rar
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 10:23.
|
|