реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> COM порт и AVR, обработка данных
ps1x
сообщение Sep 3 2006, 13:22
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 300
Регистрация: 15-03-06
Из: Москва
Пользователь №: 15 284



Сделал таки частотомер, но вот программа для компьютера глючит. Проблема в том что не получается нормально принять данные. АВРка шлет примерно каждую секунду в ком порт частоту, причем она может быть как 0 так и 28000 если на компьютере считывать MSComm1.Input по таймеру, то часто программа вылетает с ошибкой Type mismatch. Кто занимался написанием программ для COM на ПК скажите как?
Go to the top of the page
 
+Quote Post
beer_warrior
сообщение Sep 3 2006, 17:02
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 065
Регистрация: 8-10-05
Из: Kiev, UA
Пользователь №: 9 380



Прочитайте вот это http://www.skvozilka.hobi.ru/delphi/doc/com/ComPortRS232.htm, сделайте как написано и будет вам шастие smile.gif


--------------------
Вони шукають те, чого нема,
Щоб довести, що його не існує.
Go to the top of the page
 
+Quote Post
ps1x
сообщение Sep 3 2006, 17:50
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 300
Регистрация: 15-03-06
Из: Москва
Пользователь №: 15 284



Цитата(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 и все в шоколаде, но не работает ведь, зараза )
Go to the top of the page
 
+Quote Post
ps1x
сообщение Sep 3 2006, 18:11
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 300
Регистрация: 15-03-06
Из: Москва
Пользователь №: 15 284



Кстати, прерывание компаратора у меня настроенно как output toggle, это верно?
Go to the top of the page
 
+Quote Post
singlskv
сообщение Sep 3 2006, 18:38
Сообщение #5


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



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


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

Напишите настройки регистров таймера и что Вы хотели получить.
Go to the top of the page
 
+Quote Post
Old1
сообщение Sep 3 2006, 19:32
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 697
Регистрация: 26-07-05
Из: Могилев
Пользователь №: 7 095



Цитата(ps1x @ Sep 3 2006, 21:11) *
Кстати, прерывание компаратора у меня настроенно как output toggle, это верно?

Все зависит от того как частоту определяете, если число периодов в секунду то неверно. При output toggle компаратор будет вызывать прерывание дважды за период, и частота будет завышена в два раза. Если это так, то поможет настройка прерывания по переднему или заднему фронту.
Go to the top of the page
 
+Quote Post
ps1x
сообщение Sep 3 2006, 20:13
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 300
Регистрация: 15-03-06
Из: Москва
Пользователь №: 15 284



Цитата(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 конденсатора на оба входа.
Go to the top of the page
 
+Quote Post
Laksus
сообщение Sep 3 2006, 22:17
Сообщение #8


Частый гость
**

Группа: Участник
Сообщений: 146
Регистрация: 16-05-05
Пользователь №: 5 069



Цитата
частота кварца - 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 сек
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 09:04
Рейтинг@Mail.ru


Страница сгенерированна за 0.01381 секунд с 7
ELECTRONIX ©2004-2016