Технический форум по робототехнике.
ALHIMIK » 22 окт 2009, 19:14
а это идея...

правда прога основного чуток усложнится...
Webspider » 10 ноя 2009, 23:25
подскажите, как на меге 8ой, реализовать ручную регулировку частоты импульсов на выходе одного из пинов?
думаю напряжение с питания через переменник подать на АЦП и в обработчике прерывания поместить результат преобразования в какую нибудь переменную, которой в майне потом задать длительность делэя на выходе одного из пинов:
main(){
While(1) {
PORTB.2++;
Delay_ms(переменная);
}
}
так можно?
Можт аппноуты есть какие по этой теме, не подскажите, или посоветуйте что-нибудь по коду?
Последний раз редактировалось
Webspider 10 ноя 2009, 23:29, всего редактировалось 1 раз.
galex1981 » 10 ноя 2009, 23:28
А не проще ли организовать обычный ШИМ: время исполнения сигнала/время задержек
Duhas » 10 ноя 2009, 23:30
нужна регулировка частоты... если МК больше ничего не делает то можно и в мэйне.. а можно и таймером.. поразному можно )
MiBBiM » 10 ноя 2009, 23:47
да, можно. имхо стоит почитать про шим, ибо это скорее всего то, что наиболее подходит для решения вашей задачи (регулирование яркости светодиода, да?)
Webspider » 11 ноя 2009, 13:38
нет. переменная -именно частота моргания того же светодиода. Длительность при заданной частоте =const.
MiBBiM » 11 ноя 2009, 13:41
ну на нет и суда нет. только вот переменная никак не будет частотой

ALHIMIK » 11 ноя 2009, 20:38
есть же частотная модуляция
для таймера 1
в качестве верхнего счёта выбираем OCR1A и всё
по переполнению счётчика обновляем занчение
а за скважность отвечает OCR1B(вроде)
SSG » 12 ноя 2009, 15:39
Неа. OCR1B - регистр сравнения второго канала. При генерации ШИМ сигнал можно гнать просто или неинвертированный, или инвертированный независимо по каждому каналу.
Частота импульсов при изменении регистра сравнения в режиме генерации ШИМ меняться не будет, будет меняться длительность нуля или единицы на выводе ОС.
Частоту можно регулировать используя режим сброс при совпадении (СТС). Тогда частота возникновения прерывания от таймера по переполнению будет зависеть от содержимого регистра сравнения.
Duhas » 12 ноя 2009, 15:44
на сколько показала практика нелинейно )
ALHIMIK » 12 ноя 2009, 19:47
ещё один недочёт евстифееву

Duhas » 12 ноя 2009, 19:50
читать надо не трудно выговариваемые фамилии. а даташиты )
SSG » 12 ноя 2009, 20:32
А чем Евстифеев-то не угодил?

milkpower » 20 ноя 2009, 11:33
прошу помощи разобраться с таймерами, для начала пытаюсь запустить на 50гЦ, Set OC0 при сравнении.
- Код: Выделить всё • Развернуть
.def temp = r16
.ORG $0
rjmp RESET
.ORG $06
rjmp timer0
.ORG $1C
timer0:
push temp
clr temp
out TCNT0,temp
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
out portB,temp
pop temp
reti
reset: ;init 8-bit timer on 50hz
ldi temp,$ff
out ddrB,temp
ldi temp,144
out OCR0,temp
ldi temp,(1<OCIE0)
out TIMSK,temp
ldi temp,(1<COM00)|(1<COM01)|(1<CS02)|(1<CS00) ;set OC0, prescale=1024
out TCCR0,temp
mloop:
rjmp mloop
на пине нет никаких признаков жизни

ps. мк mega16
Последний раз редактировалось
milkpower 20 ноя 2009, 11:54, всего редактировалось 1 раз.
=DeaD= » 20 ноя 2009, 11:34
2milkpower: Переходите уже на ARV Studio + WinAVR, мы вам быстренько поможем всё сделать, асм ужасен для таких задач

да и можно будет взять с ORFA часть работающих вещей уже.