Рисунок на колесе
- SeamaNCOS
- Встал на лапы
- Сообщения: 107
- Зарегистрирован: Ср дек 10, 2008 15:10:59
- Откуда: KPACHO9PCK
- Контактная информация:
1995kenny как скорость выбираеться(или это пределы скорости)
Моя штукенция работает от 0.24Гц до 21Гц вращения колеса.
И не нашел у тебя датчика положения колеса.
Да и рисунок неудобно вбивать.
Вот сразу выдает готовую матрицу на рисунок в асме(точнее их там две по 128 256точек за оборот)
1995kenny писал(а):Скорость расчитана и выбирается 3 джамперами из списка(35;30;25;15;10км/ч; 60мс-тест). Проверял пока только дома в перевернутом положении
Моя штукенция работает от 0.24Гц до 21Гц вращения колеса.
И не нашел у тебя датчика положения колеса.
Да и рисунок неудобно вбивать.
Вот сразу выдает готовую матрицу на рисунок в асме(точнее их там две по 128 256точек за оборот)
- Вложения
-
- matrix1.xls
- (171 КБ) 545 скачиваний
Чем больше думаеш, тем дольше уснуть не можеш...
- SeamaNCOS
- Встал на лапы
- Сообщения: 107
- Зарегистрирован: Ср дек 10, 2008 15:10:59
- Откуда: KPACHO9PCK
- Контактная информация:
Посмотри мой исходник. Намного лучше когда рисунок не зависит от скорости.
Все давольно просто индикация по прерываниям таимера0. В число сравнения загоняется старший бит таимера1. С тиньки2313 для меги8 на асме переписать делать нечего. Только переделать твою индикацию с регистрами.
Все давольно просто индикация по прерываниям таимера0. В число сравнения загоняется старший бит таимера1. С тиньки2313 для меги8 на асме переписать делать нечего. Только переделать твою индикацию с регистрами.
Чем больше думаеш, тем дольше уснуть не можеш...
-
Vovaskin
- Первый раз сказал Мяу!
- Сообщения: 29
- Зарегистрирован: Вт июн 09, 2009 09:25:23
- Откуда: Крым
- Контактная информация:
http://www.webpark.ru/comments.php?id=50811 А вот это, ребята, конечный вариант.
-
Vovaskin
- Первый раз сказал Мяу!
- Сообщения: 29
- Зарегистрирован: Вт июн 09, 2009 09:25:23
- Откуда: Крым
- Контактная информация:
It features 32 full color LEDs На каждую строку окружности свой RGB светодиод. Причем, заметьте, можно ставить и 2 и 4 блока на колесо. http://www.monkeylectric.com/
- SeamaNCOS
- Встал на лапы
- Сообщения: 107
- Зарегистрирован: Ср дек 10, 2008 15:10:59
- Откуда: KPACHO9PCK
- Контактная информация:
Геркон у меня работает не по прерыванию (типа обработчик кнопок)
Cycle:
rcall prov
rcall Display
rcall Press
rjmp Cycle
Press:
CLI
in Temp1,PIND ; чтение порта d
ori Temp1,0b10111111 ;обрезаем по маске
cpi Temp1,0b10111111
breq Press2 ;переход если нажата кнопка(поступил сигнал)
ldi Temp2,0
sei; разрешение глобальных прерываний
ret
Press2:
cpi Temp2,1
breq out1 ;вывод из обработчика при повторном срабатывании кнопки
Изменение индикации по прерыванию таимера0
Tcnt0 совпадения ocr0a
в обработчике кнопок:
in temp1,Tcnt1h ;чтение старшего регистра таимра1
out ocr0a,temp1
в ocr0a записываеться Tcnt1h т.е. время предидущего оборота колеса делим на 256 и вставляем в число сравнения таимера0 ocr0a.
И обнуляем оба таимера.
Это на тиньке а на меге надо переделать под свои таимеры(прерывания от геркона можно и через int1 или int0 сделать будет тоже самое даже лучше)
Cycle:
rcall prov
rcall Display
rcall Press
rjmp Cycle
Press:
CLI
in Temp1,PIND ; чтение порта d
ori Temp1,0b10111111 ;обрезаем по маске
cpi Temp1,0b10111111
breq Press2 ;переход если нажата кнопка(поступил сигнал)
ldi Temp2,0
sei; разрешение глобальных прерываний
ret
Press2:
cpi Temp2,1
breq out1 ;вывод из обработчика при повторном срабатывании кнопки
Изменение индикации по прерыванию таимера0
Tcnt0 совпадения ocr0a
в обработчике кнопок:
in temp1,Tcnt1h ;чтение старшего регистра таимра1
out ocr0a,temp1
в ocr0a записываеться Tcnt1h т.е. время предидущего оборота колеса делим на 256 и вставляем в число сравнения таимера0 ocr0a.
И обнуляем оба таимера.
Это на тиньке а на меге надо переделать под свои таимеры(прерывания от геркона можно и через int1 или int0 сделать будет тоже самое даже лучше)
Чем больше думаеш, тем дольше уснуть не можеш...
- SeamaNCOS
- Встал на лапы
- Сообщения: 107
- Зарегистрирован: Ср дек 10, 2008 15:10:59
- Откуда: KPACHO9PCK
- Контактная информация:
Если пишеш в С так и писать все в нем(вставки с асма думаю бессмысленно)
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped (старт
)
строки нужно записывать (менять) в прерывании // Timer/Counter 2 по совподению OCR2 и TCNT2
// Clock value: Timer 2 Stopped (старт
)
в
// External Interrupt(s) initialization
// INT0: Off
// INT1: on
MCUCR=0xХХ; -- разрешить прерывания(непомню какие)
в // External Interrupt(s) initialization (при сробатывании прерывания INT1) нужно записать в OCR2=TCNT1H
естественно нужно настроить
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;
запретить прерывания по // Timer/Counter 1 и разрешить // Timer/Counter 2
и настроить TCCR1B=0x00; и TCCR2=0x00; (делители)
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped (старт
строки нужно записывать (менять) в прерывании // Timer/Counter 2 по совподению OCR2 и TCNT2
// Clock value: Timer 2 Stopped (старт
в
// External Interrupt(s) initialization
// INT0: Off
// INT1: on
MCUCR=0xХХ; -- разрешить прерывания(непомню какие)
в // External Interrupt(s) initialization (при сробатывании прерывания INT1) нужно записать в OCR2=TCNT1H
естественно нужно настроить
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;
запретить прерывания по // Timer/Counter 1 и разрешить // Timer/Counter 2
и настроить TCCR1B=0x00; и TCCR2=0x00; (делители)
Чем больше думаеш, тем дольше уснуть не можеш...
- 1995kenny
- Вымогатель припоя
- Сообщения: 524
- Зарегистрирован: Ср авг 27, 2008 10:13:19
- Откуда: Украина, Харьков
- Контактная информация:
SeamaNCOS писал(а):// Clock value: Timer 1 Stopped (старт)
Всмысле? таймеры будут остановлены? и таймер0 тоже остановить?
настроить, чтоб делило на мои 64 строки? А потом:и настроить TCCR1B=0x00; и TCCR2=0x00; (делители)
Код: Выделить всё
if(OCR2==TCNT2){всмена строки};- Вложения
-
- AutoPov.c
- Программа, неуверен в работоспособности
- (3.97 КБ) 459 скачиваний
- RUNA
- Прорезались зубы
- Сообщения: 249
- Зарегистрирован: Ср дек 31, 2008 01:55:19
- Откуда: Санкт-Петербург
По поводу питания схемы. Очень хорошо использовать систему как на беспроводных и без батареек мышах. У них на коврике первичная обмотка а в мыше вторичная.
Никогда не бойся делать то, что ты не умеешь. Ковчег был сооружен любителем. Профессионалы построили "Титаник".
Я всегда делаю то, что не умею, иначе как я научусь?! Когда Муза приходит ко мне, то застает меня за работой! - Пикассо.
Я всегда делаю то, что не умею, иначе как я научусь?! Когда Муза приходит ко мне, то застает меня за работой! - Пикассо.
- SeamaNCOS
- Встал на лапы
- Сообщения: 107
- Зарегистрирован: Ср дек 10, 2008 15:10:59
- Откуда: KPACHO9PCK
- Контактная информация:
// Clock value: Timer 1 Stopped (старт
) в смысле запустить(не знаю как на С правильно пишеться) тоже и для Timer 2
TCCR1B=0x00; и TCCR2=0x00; (делители) его нужно будет расчитать в зависимости от частоты кварца чтоб определить границы работы оп скоростям (у меня при 10МГц OCR2=0xFF - 0.24Гц(0.24об/сек) OCR2=0x00 21Гц (21об/сек) при TCCR1B=0x03; и TCCR2=0x03 (0x03 деление частоты на 64))
а строк будет 256 это самое простое по коду и качесто картинки норм.
OCR2=TCNT2 это прерывание оно програмируеться битом TIMSK=0b10000000
хотя на С может и так надо писать if(OCR2==TCNT2){смена строки} (С вааЩе не знаю.... но начинаю учить
)
RUNA про две обмотки уже говарилось(хотя при изменяющихся угловых скоростях обмоток даже не знаю какой разброс напряжений получиться тоже проблема)
TCCR1B=0x00; и TCCR2=0x00; (делители) его нужно будет расчитать в зависимости от частоты кварца чтоб определить границы работы оп скоростям (у меня при 10МГц OCR2=0xFF - 0.24Гц(0.24об/сек) OCR2=0x00 21Гц (21об/сек) при TCCR1B=0x03; и TCCR2=0x03 (0x03 деление частоты на 64))
а строк будет 256 это самое простое по коду и качесто картинки норм.
OCR2=TCNT2 это прерывание оно програмируеться битом TIMSK=0b10000000
хотя на С может и так надо писать if(OCR2==TCNT2){смена строки} (С вааЩе не знаю.... но начинаю учить
RUNA про две обмотки уже говарилось(хотя при изменяющихся угловых скоростях обмоток даже не знаю какой разброс напряжений получиться тоже проблема)
Чем больше думаеш, тем дольше уснуть не можеш...
- 1995kenny
- Вымогатель припоя
- Сообщения: 524
- Зарегистрирован: Ср авг 27, 2008 10:13:19
- Откуда: Украина, Харьков
- Контактная информация:
Если у меня RC Osc на 4 MHz, как посчитать TCCR? Могу еще настроить RC Osc на 8 MHz.
Границы скорости:от 1 до 24 об/сек.
Что записать в обработчик внешнего прерывания[EXT_INT1] ?
И по какому прерыванию у меня будет смена строки? :
На какой частоте запускать таймеры?Или не важно?
Границы скорости:от 1 до 24 об/сек.
Что записать в обработчик внешнего прерывания[EXT_INT1] ?
И по какому прерыванию у меня будет смена строки? :
Код: Выделить всё
TIMER2 COMP //Timer/Counter2 Compare Match
TIMER2 OVF //Timer/Counter2 Overflow
TIMER1 CAPT //Timer/Counter1 Capture Event
TIMER1 COMPA //Timer/Counter1 Compare Match A
TIMER1 COMPB //Timer/Counter1 Compare Match BНа какой частоте запускать таймеры?Или не важно?
- SeamaNCOS
- Встал на лапы
- Сообщения: 107
- Зарегистрирован: Ср дек 10, 2008 15:10:59
- Откуда: KPACHO9PCK
- Контактная информация:
При 4МГц и пределах 0,95Гц - 24Гц(даже больше чем 24) TCCR1B=0x02; и TCCR2=0x02 (считать неохото мозги после ночи не варят просто подобрал в протеусе в своем проекте)
В INT1 надо
1. записать в OCR2 значение TCNT1H
2. обнулить TSNT1H, TSNT1L и TSNT2
ОЧЕНЬ ВАЖНО ЧТОБ INT1 СРОБАТЫВАЛ ТОЛЬКО 1 РАЗ ЗА ОБОРОТ!!!
иначе будут глюки с картинкой.
Сторки будкт меняться в
TIMER2 COMP //Timer/Counter2 Compare Match
В INT1 надо
1. записать в OCR2 значение TCNT1H
2. обнулить TSNT1H, TSNT1L и TSNT2
ОЧЕНЬ ВАЖНО ЧТОБ INT1 СРОБАТЫВАЛ ТОЛЬКО 1 РАЗ ЗА ОБОРОТ!!!
иначе будут глюки с картинкой.
Сторки будкт меняться в
TIMER2 COMP //Timer/Counter2 Compare Match
Чем больше думаеш, тем дольше уснуть не можеш...
- 1995kenny
- Вымогатель припоя
- Сообщения: 524
- Зарегистрирован: Ср авг 27, 2008 10:13:19
- Откуда: Украина, Харьков
- Контактная информация:
Только не TSNT, a TCNT.
В Протеусе, кстати что-то не работает-только тест регистров проходит, а по прерываниям-ничего
В Протеусе, кстати что-то не работает-только тест регистров проходит, а по прерываниям-ничего
- Вложения
-
- autopov.c
- Программа на СИ
- (6.08 КБ) 453 скачивания
-
- 4Proteus .zip
- Всё для проекта в протеусе
- (23.89 КБ) 292 скачивания