1995kenny как скорость выбираеться(или это пределы скорости)
1995kenny писал(а):
Скорость расчитана и выбирается 3 джамперами из списка(35;30;25;15;10км/ч; 60мс-тест). Проверял пока только дома в перевернутом положении
Моя штукенция работает от 0.24Гц до 21Гц вращения колеса.
И не нашел у тебя датчика положения колеса.
Да и рисунок неудобно вбивать.
Вот сразу выдает готовую матрицу на рисунок в асме(точнее их там две по 128 256точек за оборот)
Выбираются жестко расчитаные частоты "строчной развертки" под скорось вращения, кстати в предидущей прошивке они неправильно расчианы. Давно сам хотел сделать в excel, но лень было сделать. Уже почти дорисовал в нем Biohazard.
Посмотри мой исходник. Намного лучше когда рисунок не зависит от скорости.
Все давольно просто индикация по прерываниям таимера0. В число сравнения загоняется старший бит таимера1. С тиньки2313 для меги8 на асме переписать делать нечего. Только переделать твою индикацию с регистрами.
_________________ Чем больше думаеш, тем дольше уснуть не можеш...
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
It features 32 full color LEDs На каждую строку окружности свой RGB светодиод. Причем, заметьте, можно ставить и 2 и 4 блока на колесо. http://www.monkeylectric.com/
Тоесть таймер должен запускаться по прерыванию, вызванному герконом? Подойдет ли INT1 ?
Что нужно выставить для правильной ео работы кроме частоты таймера-1(например500кгц)? В каком виде таймер выводит данные в регистр?
Или проще может где-то есть исходник на си, чтоб я понял принцип?
Геркон у меня работает не по прерыванию (типа обработчик кнопок)
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 сделать будет тоже самое даже лучше)
_________________ Чем больше думаеш, тем дольше уснуть не можеш...
Если пишеш в С так и писать все в нем(вставки с асма думаю бессмысленно)
// 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; (делители)
_________________ Чем больше думаеш, тем дольше уснуть не можеш...
По поводу питания схемы. Очень хорошо использовать систему как на беспроводных и без батареек мышах. У них на коврике первичная обмотка а в мыше вторичная.
_________________ Никогда не бойся делать то, что ты не умеешь. Ковчег был сооружен любителем. Профессионалы построили "Титаник". Я всегда делаю то, что не умею, иначе как я научусь?! Когда Муза приходит ко мне, то застает меня за работой! - Пикассо.
// 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 про две обмотки уже говарилось(хотя при изменяющихся угловых скоростях обмоток даже не знаю какой разброс напряжений получиться тоже проблема)
_________________ Чем больше думаеш, тем дольше уснуть не можеш...
Если у меня RC Osc на 4 MHz, как посчитать TCCR? Могу еще настроить RC Osc на 8 MHz.
Границы скорости:от 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
При 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
_________________ Чем больше думаеш, тем дольше уснуть не можеш...
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения