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

 
 
> счетчик импульсов, как организовать счет за 1 секунду
JimBaton
сообщение Jan 4 2008, 23:52
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 70
Регистрация: 17-12-07
Пользователь №: 33 355



Подскажите как организовать счет импульсов за определенное время.Смысл такои......Допустим на INT0 пускаи считает до бесконечности сколько сможет а на INT1 считает количество импульсов за 1 секунду, записывает в переменную R,сбрасывается на 0 и считает заново.Я что-то недопонимаю, так как только начал работать с контроллерами.Подправте код

' ***************************************************************************
' *
' * Title : int0.bas
' * Program code : BASCOM AVR
' ***************************************************************************
$regfile = "m8def.dat" ' use the Mega8

$crystal = 4000000
Config Lcd = 20 * 4
Config Lcdpin = Pin , Db4 = Portb.1 , Db5 = Portb.2 , Db6 = Portb.3 , Db7 = Portb.4 , E = Portb.5 , Rs = Portb.6

Enable Interrupts
Enable Int0
Enable Int1
Config Int1 = Rising
Config Int0 = Rising
On Int0 Label33
On Int1 Label33
Dim Counter As Long
Dim N As Long
Counter = 0



Do
N = 100 * Counter
Locate 1 , 1
Lcd "Int0: " ; N

Loop

End



Label33:
Incr Counter
Return

Сообщение отредактировал JimBaton - Jan 4 2008, 23:56
Go to the top of the page
 
+Quote Post
2 страниц V   1 2 >  
Start new topic
Ответов (1 - 19)
Aesthete Animus
сообщение Jan 5 2008, 00:40
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 222
Регистрация: 9-06-07
Пользователь №: 28 317



Если только начали работать с контроллерами, может стоит сразу глянуть в сторону AVR-GCC wink.gif ? Если он для вас читабелен, то могу порыться в своих архивах (но только днем wink.gif )...
Go to the top of the page
 
+Quote Post
Непомнящий Евген...
сообщение Jan 5 2008, 09:22
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153



Ого, бейсик для МК появился... А чем компилируете?
Go to the top of the page
 
+Quote Post
JimBaton
сообщение Jan 5 2008, 09:51
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 70
Регистрация: 17-12-07
Пользователь №: 33 355



Aesthete Animus
мне больше нравится и удобнее Bascom

Непомнящий Евгений
Bascom AVR

Ну так что неужели никто не работает в Барсике и не знает как сделать?

Сообщение отредактировал JimBaton - Jan 5 2008, 09:54
Go to the top of the page
 
+Quote Post
Непомнящий Евген...
сообщение Jan 5 2008, 10:04
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153



Так в чем проблема-то? Вы пишете о некой переменной "R". Что-то в проге я ее не вижу.
У вас по-идее при каждом импульсе по входам 0, 1 увеличивается Counter и постоянно выводится на дисплей (это насколько я понял ваш код - в васике я для МК ничего не писал smile.gif ).
Что конкретно не работает?
Go to the top of the page
 
+Quote Post
Евгений Германов...
сообщение Jan 5 2008, 10:43
Сообщение #6


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

Группа: Свой
Сообщений: 1 079
Регистрация: 24-06-07
Из: г.Екатеринбург
Пользователь №: 28 654



А где у вас секунда,кто ее формирует?
Go to the top of the page
 
+Quote Post
JimBaton
сообщение Jan 5 2008, 11:02
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 70
Регистрация: 17-12-07
Пользователь №: 33 355



в переменную N считаются логические 1 с INT0 до усёра, а в переменную R должны считаться логические 1 с INT1 так чтобы он считал количество по истечение 1 секунды а потом счетчик INT1 сбрасывался на 0 а INT0 продолжал считать дальше.Еслибы я знал где секунда и кто ее формирует, Евгений Германович, я бы все давно сделал, а дело в том что я еще совсем зеленый в контроллерах и прошу помощи организовать программу.
Go to the top of the page
 
+Quote Post
Непомнящий Евген...
сообщение Jan 5 2008, 11:14
Сообщение #8


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153



Вы мне лучше скажите, где у вас переменная R???
И кстати, насколько я понял и для int0 и для int1 вы используете один и тот же обработчик. Наверное стоит разные использовать...
Насчет секунды - используйте таймер. К примеру, режим СТС, выставив регистры так, чтобы он переполнялся 1 раз в секунду. В прерывании таймера сбрасываете переменную R.
Go to the top of the page
 
+Quote Post
JimBaton
сообщение Jan 5 2008, 11:34
Сообщение #9


Участник
*

Группа: Участник
Сообщений: 70
Регистрация: 17-12-07
Пользователь №: 33 355



да черт с неи с этои пременнои R ну что не определить переменную разве. Dim R as long вот переменная.Режим СТС......я же говорю что я еще мало чего знаю........прошу кусок кода для записи в переменную R количества импульсов с INT1 за 1 секунду.Ну это же должно быть так просто, а я из-за еще недостаточных знании не понимаю как и для меня переполнение регистра 1 раз в секунду ничего не говорит.
Go to the top of the page
 
+Quote Post
Непомнящий Евген...
сообщение Jan 5 2008, 11:37
Сообщение #10


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153



Вам надо разобраться, как включить таймер и настроить на нем режим СТС так чтобы он срабатывал раз в секунду.
Про таймер и его режимы почитайте в даташите на вашу мегу, я с ней не работал.
Как записать регистры в васике я не знаю - опять же почитайте доку к нему.
Затем делаете обработчик прерывания таймера, в котором пишите R = 0.
В отдельном обработчике прерывания int1 пишете R = R+1.
Собственно все...
Go to the top of the page
 
+Quote Post
JimBaton
сообщение Jan 5 2008, 13:00
Сообщение #11


Участник
*

Группа: Участник
Сообщений: 70
Регистрация: 17-12-07
Пользователь №: 33 355



ну ладно.Тогда сможете организовать на чем умеете.На Си как я понимаю?.
Go to the top of the page
 
+Quote Post
Непомнящий Евген...
сообщение Jan 5 2008, 13:10
Сообщение #12


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153



Вам не уйти от необходимости прочитать даташит smile.gif В нем же наверняка есть и примеры работы с таймером на асме и С... На С малость посложнее будет работать с дисплеем - придется найти где-нибудь библиотеку функций для вашей модели.
Go to the top of the page
 
+Quote Post
tyro
сообщение Jan 5 2008, 13:14
Сообщение #13


Любитель Кошек
*****

Группа: Свой
Сообщений: 1 593
Регистрация: 8-06-06
Пользователь №: 17 873



Цитата(JimBaton @ Jan 5 2008, 16:00) *
ну ладно.Тогда сможете организовать на чем умеете.На Си как я понимаю?.

bb-offtopic.gif Он разрешил! Он сегодня добрый! Спешите ублажить! biggrin.gif bb-offtopic.gif


--------------------
По современному этикету, в левой руке держат вилку, в правой - мышку.
Go to the top of the page
 
+Quote Post
Евгений Германов...
сообщение Jan 5 2008, 14:24
Сообщение #14


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

Группа: Свой
Сообщений: 1 079
Регистрация: 24-06-07
Из: г.Екатеринбург
Пользователь №: 28 654



Вы наверное видели картину Васнецова(если не соврал)"Три богатыря"? Так вот приложите руку к голове как Илья Муромец и направте свой взор на описание вашего контроллера,а именно на тот раздел,который освещает(иногда весьма тускло.)работу таймеров.
Что вам нужно:1 если таймера позволяют задать выдержку в 1Сек напрямую то вам повезло.
Заносите выдержку в регистры таймера,и разрешаете прерывание от него .
Если нет то задаете выдержку кратную секунде разрешаете прерывания и в каком-нибуть регистре подсчитываете число прерываний пока не досчитаете до 1Сек.
Go to the top of the page
 
+Quote Post
JimBaton
сообщение Jan 5 2008, 15:31
Сообщение #15


Участник
*

Группа: Участник
Сообщений: 70
Регистрация: 17-12-07
Пользователь №: 33 355



tyro.......ФАК Я.Не умничаи

Да что мне этот даташит.Если я не понимаю как работает таимер, но очень хочу разобратся.На ассемблере или на Си не хочу,хочу на барсике.Я просто нашел этот код в сети и мне бы его с вашеи помощью подработать до нужного мне результата.Примерчик для толчка вот и все
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Jan 5 2008, 16:33
Сообщение #16


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(JimBaton @ Jan 5 2008, 19:31) *
Если я не понимаю как работает таимер, но очень хочу разобратся....
Примерчик для толчка вот и все...

Вы противочите сам себе. Или Вы хотите разобраться, или одно из двух.
Толчок дан а направлении datasheet.
Примерчик есть на С, но я не уверен, что он поможет Вам разобраиться.


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
Евгений Германов...
сообщение Jan 6 2008, 05:43
Сообщение #17


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

Группа: Свой
Сообщений: 1 079
Регистрация: 24-06-07
Из: г.Екатеринбург
Пользователь №: 28 654



Цитата(JimBaton @ Jan 5 2008, 18:31) *
tyro.......ФАК Я.Не умничаи

Да что мне этот даташит.Если я не понимаю как работает таимер, но очень хочу разобратся.На ассемблере или на Си не хочу,хочу на барсике.Я просто нашел этот код в сети и мне бы его с вашеи помощью подработать до нужного мне результата.Примерчик для толчка вот и все

В общем случае таймер трудится весьма просто:
1 если таймер считает на увеличение то с приходом очередного импульса он увеличивает свое значение на 1 и так до переполнения или достижения заданного значения.При переполнении или достижении ,в зависимости от конструкции может остановиться или сбросится и начать считать с 0
2 на уменьшение тоже самое только уменьшается на 1
Вас не зря просят прочитать описание,кстати за вас этого никто не сделает
Go to the top of the page
 
+Quote Post
JimBaton
сообщение Jan 6 2008, 11:47
Сообщение #18


Участник
*

Группа: Участник
Сообщений: 70
Регистрация: 17-12-07
Пользователь №: 33 355



ладна тема закрыта.Я нашел выход из ситуации путем преобразования частоты в напряжение и считывание с ADC.Всем спасибо.
Go to the top of the page
 
+Quote Post
Aesthete Animus
сообщение Jan 6 2008, 18:14
Сообщение #19


Местный
***

Группа: Свой
Сообщений: 222
Регистрация: 9-06-07
Пользователь №: 28 317



2JimBaton

"Да что мне этот даташит" - Ну-ну...
"На ассемблере или на Си не хочу,хочу на барсике" - "Не хочу учиться, хочу жениться... " lol.gif

Если хотите посчитать количество импульсов, то для начала нужно разобраться с таймерами. Если не понятно, что это такое, то следует для начало подергать ногами порта. Иначе у вас ничего не получится.
Кодом тут помочь могут. К примеру могу рассказать про подводные грабли внешних прерываний, про тонкости таймеров. Но никто за вас все не напишит.

Определитесь с языком, заметьте, мало кто пишет на Bascom. Не задумывались почему? А потому что он способствует непониманию архитектуры контроллера!

Нельзя пытаться все охватить сразу, надо декомпозировать задачу! К примеру в вашем случае надо разобраться с таймером, внешними прерываниями и, наверное, с UART`ом - ведь Вы должны куда-то отображать результат. Если Вы не представляете как сделать каждое из этих звеньев, то это задача для вас пока сложная и надо поставить в виде задачи, скажем, работу с таймером.

Цитата(JimBaton @ Jan 5 2008, 18:31) *
tyro.......ФАК Я.Не умничаи

А вот грубить не надо - это mauvais tone!
Go to the top of the page
 
+Quote Post
JimBaton
сообщение Jan 6 2008, 22:29
Сообщение #20


Участник
*

Группа: Участник
Сообщений: 70
Регистрация: 17-12-07
Пользователь №: 33 355



Просто не люблю когда умничают.Обязательно разберусь с таимерами.Очень срочно нужно было решить проблему и некогда было разбираться с таимерами.Так как проблема решена другим способом,теперь есть время разобрать таимеры.

Сообщение отредактировал JimBaton - Jan 6 2008, 22:31
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 20:17
Рейтинг@Mail.ru


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