Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: COM порт и AVR
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
ps1x
Сделал таки частотомер, но вот программа для компьютера глючит. Проблема в том что не получается нормально принять данные. АВРка шлет примерно каждую секунду в ком порт частоту, причем она может быть как 0 так и 28000 если на компьютере считывать MSComm1.Input по таймеру, то часто программа вылетает с ошибкой Type mismatch. Кто занимался написанием программ для COM на ПК скажите как?
beer_warrior
Прочитайте вот это http://www.skvozilka.hobi.ru/delphi/doc/com/ComPortRS232.htm, сделайте как написано и будет вам шастие smile.gif
ps1x
Цитата(beer_warrior @ Sep 3 2006, 21:02) *
Прочитайте вот это http://www.skvozilka.hobi.ru/delphi/doc/com/ComPortRS232.htm, сделайте как написано и будет вам шастие smile.gif

Щасьте наступило smile.gif Но обнаружился другой косяк, а именно в вычислении частоты, делаю так:
1) по прерыванию компаратора s4et++;
2) по прерыванию таймера отправляю полученное s4et по Rs232 и сбрасываю.

видимо что то не так с настройками таймера.
частота кварца - 8,901 Мгц как настроить 8 битный таймер на 1 секунду ровно? (туплю в монитор и не понимаю).
По подсчетам получается если делитель стоит на 139,078 Кгц то TCNT1=0x8B и все в шоколаде, но не работает ведь, зараза )
ps1x
Кстати, прерывание компаратора у меня настроенно как output toggle, это верно?
singlskv
Цитата(ps1x @ Sep 3 2006, 21:50) *
частота кварца - 8,901 Мгц как настроить 8 битный таймер на 1 секунду ровно? (туплю в монитор и не понимаю).
По подсчетам получается если делитель стоит на 139,078 Кгц то TCNT1=0x8B и все в шоколаде, но не работает ведь, зараза )


8 витный таймер TCNT1 ? непонял smile.gif
наверное все таки 16 битный ?

Напишите настройки регистров таймера и что Вы хотели получить.
Old1
Цитата(ps1x @ Sep 3 2006, 21:11) *
Кстати, прерывание компаратора у меня настроенно как output toggle, это верно?

Все зависит от того как частоту определяете, если число периодов в секунду то неверно. При output toggle компаратор будет вызывать прерывание дважды за период, и частота будет завышена в два раза. Если это так, то поможет настройка прерывания по переднему или заднему фронту.
ps1x
Цитата(singlskv @ Sep 3 2006, 22:38) *
Цитата(ps1x @ Sep 3 2006, 21:50) *

частота кварца - 8,901 Мгц как настроить 8 битный таймер на 1 секунду ровно? (туплю в монитор и не понимаю).
По подсчетам получается если делитель стоит на 139,078 Кгц то TCNT1=0x8B и все в шоколаде, но не работает ведь, зараза )


8 витный таймер TCNT1 ? непонял smile.gif
наверное все таки 16 битный ?

Напишите настройки регистров таймера и что Вы хотели получить.

Пардон, всетаки TCNT0 ))
А из аналоговой части у меня только 2 конденсатора на оба входа.
Laksus
Цитата
частота кварца - 8,901 Мгц как настроить 8 битный таймер на 1 секунду ровно?
(туплю в монитор и не понимаю).
По подсчетам получается если делитель стоит на 139,078 Кгц то TCNT1=0x8B
и все в шоколаде, но не работает ведь, зараза )

Если при 8,901 МГц и делителе 64 выставить OCR1A = 0x008b получим 1 МИЛЛИсекунду.
А самый длинный период который можно получить от однобайтного счетчика при 8.901МГц:
1024*256/8 901 000 = 0.029 сек (на самом деле немного меньше).
А если надо 1 мсек от таймера0,
то TCNT0 = 256-(0.001/(64/8 901 000))=116.9~~117=0x75.
При TCNT0 = 0x8b = 139 , делителе 64 и частоте 8 901 000,
период будет (256-139)*(64/8 901 000) = 0.000841 сек
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.