Технический форум по робототехнике.
avr123.nm.ru » 01 окт 2011, 23:54
Ну и правильно.
space » 02 окт 2011, 00:10
мда.. не оценимая помощь
boez » 02 окт 2011, 11:34
А чего непонятного? Вешаем клок сдвигового регистра на OCR1A. Данные - на любую ногу любого порта. Ширины импульсов для серв - в массив, в конце "дополняющий" до 20 мс импульс. Указатель текущей сервы - на начало массива.
В прерывании OCR1A:
1. Убираем в исходное состояние ногу OCR1A с помощью бита FOC, как - смотри исходники ORFA для 4017.
2. К OCR1A прибавляем очередную ширину из массива.
3. Если указатель не дошел до конца массива - на ногу данных 0, иначе 1.
4. Перемещаем указатель на следующий элемент (если он уже в конце - в начало).
Все. На N первых выходах сдвигового регистра будут импульсы. Количество серв - чтобы при максимальных ширинах не вылезать за 20 мс.
Вообще, почитай исходники и схему ORFA для 4017 - поймешь как сделать на 595 и как считать ширины импульсов.
CFox » 04 окт 2011, 15:21
Vooon писал(а):Потому что разбирать что ты там понаписал в таком случае - дополнительная трата времени. Я такие сообщения в лучшем случае игнорирую.
ничем не обоснованые слова... Сильно вы поймете что я имел в виду под именем WhileLong
Rigo Legio » 28 ноя 2011, 22:41
Кто может сказать, как в BascomAVR скомиплировать код в .hex, а то, что-то не могу найти.
SkyStorm » 29 ноя 2011, 10:23
Уже год как снес его и не возвращался.
Несмотря на то что мне нравился - Ардуино ИДЕ вытеснило его.
Но никогда никаких проблем с хексом не было.
А в чем он у тебя на текущий момент генерит прошивку?
Rigo Legio » 29 ноя 2011, 21:40
Уже разобрался, видимо, Баском установился криво. Почему то, он hex и еще какие то форматы не компилировал, переустановил Баском и все норм.
space » 23 янв 2013, 01:10
Всем привет=)
Не будет ли кто так любезен, помочь. В авто делаю реле под розжиг галогенок. Основной код уже написан, все работает. Но на этом не успокоился, решил примудрить настройку длительности розжига от 2-4с. Основная проблема в том, что клавиша всего одна в салоне машины. За счет этой клавиши нужно выполнять 3 действия, включение шима, отключение шима и переход к настройки длительности розжига. первые два пункта без проблем
- Код: Выделить всё • Развернуть
Do
Debounce Pind.2 , 0 , Pwmon , Sub
Debounce Pind.2 , 1 , Pwmoff , Sub
Loop
^
|
|
-----в этом цикле надо организовать переход к циклу 4.
- Код: Выделить всё • Развернуть
4:
Do
Debounce Pind.2 , 0 , 2 , Sub
Loop
2:
While Pind.2 = 0
Incra:
Incr A : Waitms 250
If A = 10 Then : Rele = 1 : Wait 1 : Rele = 0 : Incr A : Waitms 250 : End If
If A = 15 Then : Rele = 1 : Wait 1 : Rele = 0 : Incr A : Waitms 250 : End If
If A = 20 Then : Rele = 1 : Wait 1 : Rele = 0 : Incr A : Waitms 250 : End If
If A = 25 Then : Rele = 1 : Wait 1 : Rele = 0 : : A = 0 : Goto Incra : End If
Wend
например за счет коротких двух нажатий на клавишу. Но как это сделать не знаю. Пробовал за счет условий:
- Код: Выделить всё • Развернуть
If On0 = 0 Then : Waitms 150
If On0 = 1 Then : goto 4 : End If : End If
Но так срабатывает через раз, да и еще настройки сбивает изначальные.
avr123.nm.ru » 23 янв 2013, 01:27
опредить что коротко нажата и запустить ожидание таймаута, если нет нового нажатия то значит было 1 нажатие.
space » 23 янв 2013, 01:48
спасибо) уже сделал) Просто добавил отключение шима в условие и все стало работать в точности как и хотел
- Код: Выделить всё • Развернуть
Do
If On0 = 0 Then : Waitms 150 : Debounce Pind.2 , 1 , Pwmoff , Sub
If On0 = 1 Then : Goto 4 : End If : End If
Debounce Pind.2 , 0 , Pwmon , Sub
Debounce Pind.2 , 1 , Pwmoff , Sub
Loop
avr123.nm.ru » 23 янв 2013, 11:29
Браво!