|
счетчик импульсов, как организовать счет за 1 секунду |
|
|
|
Jan 4 2008, 23:52
|
Участник

Группа: Участник
Сообщений: 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
|
|
|
|
2 страниц
1 2 >
|
 |
Ответов
(1 - 19)
|
Jan 5 2008, 09:51
|
Участник

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

|
Aesthete Animus мне больше нравится и удобнее Bascom
Непомнящий Евгений Bascom AVR
Ну так что неужели никто не работает в Барсике и не знает как сделать?
Сообщение отредактировал JimBaton - Jan 5 2008, 09:54
|
|
|
|
|
Jan 5 2008, 10:04
|
Знающий
   
Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153

|
Так в чем проблема-то? Вы пишете о некой переменной "R". Что-то в проге я ее не вижу. У вас по-идее при каждом импульсе по входам 0, 1 увеличивается Counter и постоянно выводится на дисплей (это насколько я понял ваш код - в васике я для МК ничего не писал  ). Что конкретно не работает?
|
|
|
|
|
Jan 5 2008, 11:02
|
Участник

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

|
в переменную N считаются логические 1 с INT0 до усёра, а в переменную R должны считаться логические 1 с INT1 так чтобы он считал количество по истечение 1 секунды а потом счетчик INT1 сбрасывался на 0 а INT0 продолжал считать дальше.Еслибы я знал где секунда и кто ее формирует, Евгений Германович, я бы все давно сделал, а дело в том что я еще совсем зеленый в контроллерах и прошу помощи организовать программу.
|
|
|
|
|
Jan 5 2008, 11:34
|
Участник

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

|
да черт с неи с этои пременнои R ну что не определить переменную разве. Dim R as long вот переменная.Режим СТС......я же говорю что я еще мало чего знаю........прошу кусок кода для записи в переменную R количества импульсов с INT1 за 1 секунду.Ну это же должно быть так просто, а я из-за еще недостаточных знании не понимаю как и для меня переполнение регистра 1 раз в секунду ничего не говорит.
|
|
|
|
|
Jan 5 2008, 13:00
|
Участник

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

|
ну ладно.Тогда сможете организовать на чем умеете.На Си как я понимаю?.
|
|
|
|
|
Jan 5 2008, 15:31
|
Участник

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

|
tyro.......ФАК Я.Не умничаи
Да что мне этот даташит.Если я не понимаю как работает таимер, но очень хочу разобратся.На ассемблере или на Си не хочу,хочу на барсике.Я просто нашел этот код в сети и мне бы его с вашеи помощью подработать до нужного мне результата.Примерчик для толчка вот и все
|
|
|
|
|
Jan 5 2008, 16:33
|
Гуру
     
Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823

|
Цитата(JimBaton @ Jan 5 2008, 19:31)  Если я не понимаю как работает таимер, но очень хочу разобратся.... Примерчик для толчка вот и все... Вы противочите сам себе. Или Вы хотите разобраться, или одно из двух. Толчок дан а направлении datasheet. Примерчик есть на С, но я не уверен, что он поможет Вам разобраиться.
--------------------
Уходя, оставьте свет...
|
|
|
|
|
Jan 6 2008, 05:43
|

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

|
Цитата(JimBaton @ Jan 5 2008, 18:31)  tyro.......ФАК Я.Не умничаи
Да что мне этот даташит.Если я не понимаю как работает таимер, но очень хочу разобратся.На ассемблере или на Си не хочу,хочу на барсике.Я просто нашел этот код в сети и мне бы его с вашеи помощью подработать до нужного мне результата.Примерчик для толчка вот и все В общем случае таймер трудится весьма просто: 1 если таймер считает на увеличение то с приходом очередного импульса он увеличивает свое значение на 1 и так до переполнения или достижения заданного значения.При переполнении или достижении ,в зависимости от конструкции может остановиться или сбросится и начать считать с 0 2 на уменьшение тоже самое только уменьшается на 1 Вас не зря просят прочитать описание,кстати за вас этого никто не сделает
|
|
|
|
|
Jan 6 2008, 11:47
|
Участник

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

|
ладна тема закрыта.Я нашел выход из ситуации путем преобразования частоты в напряжение и считывание с ADC.Всем спасибо.
|
|
|
|
|
Jan 6 2008, 18:14
|

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

|
2 JimBaton"Да что мне этот даташит" - Ну-ну... "На ассемблере или на Си не хочу,хочу на барсике" - "Не хочу учиться, хочу жениться... " Если хотите посчитать количество импульсов, то для начала нужно разобраться с таймерами. Если не понятно, что это такое, то следует для начало подергать ногами порта. Иначе у вас ничего не получится. Кодом тут помочь могут. К примеру могу рассказать про подводные грабли внешних прерываний, про тонкости таймеров. Но никто за вас все не напишит. Определитесь с языком, заметьте, мало кто пишет на Bascom. Не задумывались почему? А потому что он способствует непониманию архитектуры контроллера! Нельзя пытаться все охватить сразу, надо декомпозировать задачу! К примеру в вашем случае надо разобраться с таймером, внешними прерываниями и, наверное, с UART`ом - ведь Вы должны куда-то отображать результат. Если Вы не представляете как сделать каждое из этих звеньев, то это задача для вас пока сложная и надо поставить в виде задачи, скажем, работу с таймером. Цитата(JimBaton @ Jan 5 2008, 18:31)  tyro.......ФАК Я.Не умничаи А вот грубить не надо - это mauvais tone!
|
|
|
|
|
Jan 6 2008, 22:29
|
Участник

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

|
Просто не люблю когда умничают.Обязательно разберусь с таимерами.Очень срочно нужно было решить проблему и некогда было разбираться с таимерами.Так как проблема решена другим способом,теперь есть время разобрать таимеры.
Сообщение отредактировал JimBaton - Jan 6 2008, 22:31
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|