Страница 73 из 304

Re: BASCOM AVR в вопросах и ответах

Добавлено: Пн апр 04, 2011 16:56:26
Igor_67
И какой из этого выход?
З.Ы. при начальном значении таймера: Timer1 = &H0BDF, считает точно вплоть до 25500 Гц, потом начинает врать. Думаю, это все же протеус "не тянет".

Re: BASCOM AVR в вопросах и ответах

Добавлено: Пн апр 04, 2011 17:15:24
edm2007
Нет, так-то и хрен бы с ним, по совпадению проверил - все считает нормально. Но для индикации это очень плохо.

Re: BASCOM AVR в вопросах и ответах

Добавлено: Пн апр 04, 2011 17:18:01
Igor_67
edm2007 писал(а):Нет, так-то и хрен бы с ним, по совпадению проверил - все считает нормально. Но для индикации это очень плохо.
И чем же это плохо?

Re: BASCOM AVR в вопросах и ответах

Добавлено: Пн апр 04, 2011 17:23:18
edm2007
Да тем что пока оно там прыгает с дикой частотой в обработчик - индикация не работает. А если ее в INT1 принудительно разрешить то пропуски импульсов будут...

Re: BASCOM AVR в вопросах и ответах

Добавлено: Пн апр 04, 2011 17:33:10
Igor_67
Выходит, надо искать другой подход. Допустим, включить таймер, принять пачку импульсов на входе внешнего прерывания (INT1), закончить прием, как только таймер переполнится, записать принятое значение в переменную, обработать ее (расписать по разрядам), а потом идти на индикацию, ... наверное так?

Re: BASCOM AVR в вопросах и ответах

Добавлено: Пн апр 04, 2011 17:40:10
edm2007
Так импульсы-то все равно считать... Вот обработка внешнего прерывания все и сбивает. Это ведь не LCD где можно все расчитать и обновить. Тут надо постоянно разряды прогонять.

Re: BASCOM AVR в вопросах и ответах

Добавлено: Пн апр 04, 2011 18:08:28
Igor_67
Ну так пусть индикация и топает себе по TIMER0 со старыми значениями частоты. Ей же ничего мешать не будет. Или по крайней мере можно погасить индикацию на время счета, допустим на 100 мс. Будет не сильно заметно. А расчет привязать к этому периоду.

Re: BASCOM AVR в вопросах и ответах

Добавлено: Пн апр 04, 2011 18:29:09
edm2007
Так не только в этом дело... При большой частоте прерывания INT1 идут одно за другим. С дикой скоростью... В железе бы все это поглядеть, конечно...

Re: BASCOM AVR в вопросах и ответах

Добавлено: Пн апр 04, 2011 18:33:27
Igor_67
Все, решено!
Сейчас уже поздно, завтра соберу макетку, только на 8 меге, так как под панельку проще. И все проверю. Если что, отпишусь.

Re: BASCOM AVR в вопросах и ответах

Добавлено: Пн апр 04, 2011 18:50:56
edm2007
На высоких частотах без внешнего делителя в любом случае не обойтись... Я так думаю...

Re: BASCOM AVR в вопросах и ответах

Добавлено: Пн апр 04, 2011 18:55:31
Igor_67
По крайней мере до 1МГц должен без делителя работать, а выше можно делитель на 10 добавить, например какой-нибудь TTL - счетчик. Но это уже мелочи. Главное заставить его правильно работать до 1МГц! 8)

Re: BASCOM AVR в вопросах и ответах

Добавлено: Пн апр 04, 2011 20:16:36
kip96
A вот этот не пойдёт? Считает точно, я в железе на макетке делал, переводил на ЖК индикатор на 1820вг1
в архиве исходник, но было давно, туда ещё пытался ввести подсчёт периода.
Вообщем эт я учился, и пробывал. В железе на макетке работал.

Re: BASCOM AVR в вопросах и ответах

Добавлено: Пн апр 04, 2011 20:48:43
edm2007
kip96, спасибо. Так у меня и вышло примерно, когда перешел на подсчет импульсов таймером. Только еще до кучи переполнения не задействовал, надо попробовать. :) А Вы какие частоты меряли им?

Re: BASCOM AVR в вопросах и ответах

Добавлено: Пн апр 04, 2011 21:10:02
kip96
Да я соб-но особо не мерял ни чего. Генератор у меня - как-то в "РАДИО" публиковали ГКЧ звуковой частоты, до 50КГц.
А частотомер у меня - частотомер А. Денисова или, Корабельникова :))
Мне кажется на пике проще.

Re: BASCOM AVR в вопросах и ответах

Добавлено: Пн апр 04, 2011 21:36:10
edm2007
На пике определенно проще, но на AVR тоже интересно поковырять. :) Так-то с подсчетом проблем нет, только в железе надо посмотреть как на высоких частотах индикация вести себя будет. С флагом лучше выходит, по крайней мере разгружаются прерывания и индикация молотит нормально... Но это уже не мне проверять. :)

Re: BASCOM AVR в вопросах и ответах

Добавлено: Вт апр 05, 2011 11:08:27
dhouse
Братцы-котоведы! Проконсультируйте вот по какому вопросу. Пытался разобраться в проекте очередных часов, в котором встретил такие инструкции:

Код: Выделить всё

' Программа электронных часов "AVR-WATCH" 
' Микроконтроллер типа ATMEGA8 
' Fuses: 
' CKSEL3...CKSEL0 = 1001 - низкочастотный кварцевый резонатор
............
' Используемый ресурсы микроконтроллера:
' Генератор RC - внутренний 1 МГц, а к TOSC1 and TOSC2 подключен кристалл 32768 Гц
В нем задействован часовой кварц, но при этом контроллер работает на внутреннем генераторе 1 МГц. Объясните вкратце, как это работает!

Re: BASCOM AVR в вопросах и ответах

Добавлено: Вт апр 05, 2011 11:49:01
edm2007
Выводы TOSC1 и TOSC2 используются в данном случае для таймера Т2, работающего в асинхронном режиме. То бишь этот таймер молотит сам по себе, со своей частотой, задаваемой кварцевым резонатором 32768 Гц. Удобно для создания часов реального времени.

Впрочем, можно и просто сконфигурировать таймер на подсчет внешних импульсов на этом кварце.

Re: BASCOM AVR в вопросах и ответах

Добавлено: Вт апр 05, 2011 12:03:12
dhouse
Получается, что второй таймер работает как счетчик. Но ведь фьюзы настроены на кварц низкой частоты, и как получается, что контроллер продолжает работать на внутреннем генераторе в 1 МГц? (аналогичная задача на softclock по адресу http://bascom.at.ua/publ/softovye_chasy ... e/1-1-0-12)

Re: BASCOM AVR в вопросах и ответах

Добавлено: Вт апр 05, 2011 14:33:44
edm2007
Для асинхронного режима таймера не надо конфигурировать фьюзы. Фьюзы тактуют сам МК. В МК есть такой регистр - ASSR. Третий бит этого регистра (AS2) как раз отвечает за то, какой сигнал поступает на вход предделителя таймера. Если там 0 - то на вход предделителя поступает сигнал от внутреннего генератора, если 1 - то таймер считает независимо, забирая сигнал с кварца на выводах TOSC1 и TOSC2. А сам МК может быть настроен на любую частоту. Все это касается таймера, работающего в асинхронном режиме (для меги8 это Т2). Включить этот режим можно записав 1 напрямую в регистр, и работать с таймером как обычно.

Код: Выделить всё

ASSR.3 = 1
Но в баскоме есть такая замечательная штука как Config Clock = Soft. Она не только выставляет нужный бит в ASSR, но и автоматом заводит переменные _sec , _min , _hour, _day , _month , _year.

Отсюда не совсем понятно, зачем в софтовых часах по ссылке, строка

Код: Выделить всё

Config Timer1 = Counter , Edge = Falling , Prescale = 1
Он ничего не считает, ибо софтовые часы работают с асинхронным таймером, а это Т2. И дополнительно его конфигурировать не надо. А в той строке настроен подсчет импульсов на выводе T1. :dont_know:

Re: BASCOM AVR в вопросах и ответах

Добавлено: Вт апр 05, 2011 14:47:48
dhouse
Спасибо, немного понял. Конечно, лучше всего учиться на уже готовых кодах, но они иногда вызывают больше вопросов, чем ответов.