Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
26.12.2004, 20:59
|
|
RETAS
Гость
|
Kак сделать генер в ~1кгц на PIC16F84A?
Помогите советом.Первый раз щупаю PIC16F84A,почти програму написал,но как просто указать,чтобы
на одном из выводов постояно был-бы 1кгц ? Кварц на 32кгц,но могу поставить и раз в 10 бысокочастотнее.
Спасибо.
|
|
|
|
27.12.2004, 17:19
|
|
li$ergin
Гость
|
А на сколько точноую необходимо иметь частоту?
|
|
|
|
27.12.2004, 20:51
|
|
Прохожий
Регистрация: 03.12.2004
Сообщений: 5
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Kак сделать генер в ~1кгц на PIC16F84A?
Сообщение от RETAS
|
Помогите советом.Первый раз щупаю PIC16F84A,почти програму написал,но как просто указать,чтобы
на одном из выводов постояно был-бы 1кгц ? Кварц на 32кгц,но могу поставить и раз в 10 бысокочастотнее.
Спасибо.
|
Q=32768 kHz
Timer0
prescaller = 32
F= 1000 Hz
somereg B'00001111'
разрешаеш прерывание Timer0 и вперед
Org 0x0
goto main
;IRQ Vector
Org 0x4
bcf intcon,t0if
comf somereg
movf somereg,w
movwf portb
retfie
main
nop
goto main
|
|
|
|
27.12.2004, 23:41
|
|
Почётный гражданин KAZUS.RU
Регистрация: 10.05.2003
Адрес: Москва
Сообщений: 2,531
Сказал спасибо: 737
Сказали Спасибо 1,927 раз(а) в 799 сообщении(ях)
|
точно так не получишь 1000Гц. Надо в регистр таймера константу писать - коррекция времени на те команды - типа, сброс таймера, выдачу сигнала в порт. Одна команда - 4 тика, вот и считай коррекцию
__________________
Опыт - это школа, в которой человек узнает, каким дураком он был раньше.
|
|
|
|
28.12.2004, 01:27
|
|
RETAS
Гость
|
Большое спасибо
Большое спасибо всем ответившым,буду вникать,а точность меня устраивает и в 10%.Главное было понять,как заставить процесор выполять как-бы паралельно две задачи: генерировать
сигнал в 1кгц и одновременно выполнять основную програму.
|
|
|
|
09.01.2005, 18:52
|
|
RETAS
Гость
|
С программой генерации используя прерывания по переполнению счётчика
я вроде разобрался,но как тогда указать с какого места продолжать
основную программу,ибо после каждого сгенерированного импульса
возвращаться надо всё в другое место программы?
Существует ли какой нибудь другой способ сотворения генератора
несчитая его размещения в основном теле программы?
Спасибо.
|
|
|
|
10.01.2005, 01:49
|
|
Почётный гражданин KAZUS.RU
Регистрация: 10.05.2003
Адрес: Москва
Сообщений: 2,531
Сказал спасибо: 737
Сказали Спасибо 1,927 раз(а) в 799 сообщении(ях)
|
возврат из прерывания происходит туда, откуда и уходил. Т.е. для основной программы прозрачно - она и не заметит, что ты в прерывание ушел. Если, конечно, в обработчике не меняешь переменные основной программы.
А по поводу генерации - так всего три метода есть:
1. Внешний генератор - обработка прерывания по ноге. То бишь ловить надо изменение состояния входа. И опять обрабатывать прерывания от таймера Плюс в том, что частоту внешнего генератора можно подогнать любую... И сильно укоротить период счета. И на задержки на выполнение команд можно положить
2. На встроенном счетчике - обработка прерывания по переполнению таймера. Классический вариант. Но нужна коррекция.
3. Программная задержка на циклах. Надо очень много считать - все задержки, все ветвления програмы и прочее. Гемор жуткий. Чем сложнее програма, тем хуже. А если еще и кнопки обрабатываешь, тады ваще ой...
__________________
Опыт - это школа, в которой человек узнает, каким дураком он был раньше.
|
|
|
|
19.02.2005, 10:36
|
|
RETAS
Гость
|
Ребята появилась необходимость ещё в одном (1Гц) генераторе на том же PICе.
Помогите,пжл.,если можете - как сделать два генереатора в одном корпусе?
Точность частоты неимеет значения-это звукоая индикация.
Спасибо.
|
|
|
|
19.02.2005, 18:18
|
|
Прописка
Регистрация: 29.01.2005
Адрес: Киев
Сообщений: 227
Сказал спасибо: 50
Сказали Спасибо 32 раз(а) в 24 сообщении(ях)
|
Сразу приходит на ум програмный делитель в той же процедуре обработки прерывания, которая я думаю у тебя уже есть и включается с частотой примерно килогерц. Вводишь переменную, в которой считаешь количество обращений к прерыванию, как только их станет 1000, это и будет твой 1 герц...
|
|
|
|
04.03.2005, 14:49
|
|
Прописка
Регистрация: 19.08.2004
Сообщений: 156
Сказал спасибо: 0
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
|
Можешь использовать ШИМ в PIC16F627,628 - они кстати дешевле 16F84
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
PIC16F84A
|
макс |
Микроконтроллеры, АЦП, память и т.д |
1 |
11.12.2005 00:01 |
PIC16F84 и PIC16F84A
|
Гость |
Микроконтроллеры, АЦП, память и т.д |
6 |
21.11.2005 05:19 |
PIC16F84A???
|
RETAS |
Микроконтроллеры, АЦП, память и т.д |
7 |
04.03.2005 05:20 |
[Решено] Kак удлинить
|
RETAS |
Делимся опытом |
6 |
04.01.2005 14:04 |
pic16f84a
|
khorght |
Микроконтроллеры, АЦП, память и т.д |
1 |
09.09.2004 20:37 |
Часовой пояс GMT +4, время: 06:54.
|
|