avr123.nm.ru писал(а):1) Нужен еще оператор присваивания =
Тогда так: PORTB ~ = 0
avr123.nm.ru писал(а):Подробно - соединение UART - rs232 - COM порт ПК - http://avr123.nm.ru/z4.htm и /z5.htm
Тогда понятно, почему я не понял. Я ещё только до 2-го задания дошёл (их же, на сколько я понял нужно выполнять последовательно. Или это не обязательно?)
Что-то я не понял, вот выдержка из описания Меги 16 "Два 8-разрядных таймера/счетчика с отдельным предварительным делителем, один с режимом сравнения Один 16-разрядный таймер/счетчик с отдельным предварительным делителем и режимами захвата и сравнения Счетчик реального времени с отдельным генератором" Так вот, что это за счетчик реального времени и где его настройки в CVavr, или это я гоню?
в авр практически все команды выполняются за 1 такт(список есть, например в книжках) но это асмовские команды
если программа написано например на си... нужно её откомпилировать, и открыть полученый файл асма и там уже посчитать скока асмовских команд получается из одной твоей функции ну и дальше калькулятор частоту процессора знаем(число инструкций в секунду) асм строчки считать умеем
или ещё вариант написать программу и измерить в симуляторе
Myp писал(а):в авр практически все команды выполняются за 1 такт(список есть, например в книжках) но это асмовские команды
если программа написано например на си... нужно её откомпилировать, и открыть полученый файл асма и там уже посчитать скока асмовских команд получается из одной твоей функции ну и дальше калькулятор частоту процессора знаем(число инструкций в секунду) асм строчки считать умеем
или ещё вариант написать программу и измерить в симуляторе
Я вот о чём. У меня энкодер на колесе, но с ним проблема. При малых оборотах на ножке принимаю сигналы 0 и 1, а вот если обороты увеличить, даже не много, никаких сигналов не вижу. Думаю может чип не справляется со скоростью. (ATMEGA 16 - 8Mhz) Схема проста до безобразия. На одну ножку поступают сигналы, на другой смотрю по светодиоду есть ли 0 или 1 на ножке. Как говорил на малых оборотах диод маргает (частота примерно 25-30 герц), когда немного повышу - маргает через раз. Немного ещё увеличиваю - диод молчит. По началу подумал что на глаз не видно моргает ли. Проверил программно поступают ли сигналы - их не было. Сам цикл не большой: пару счётчиков и несколько операторов IF. Я думаю может условия слишком трудоёмки.
r=15; perr=0; poll=PINC.0; polr=PINC.1; while (1) { tmr++; if(tmr>9000){tmr=9000;} clk++; if(clk>30){clk=0;pwm++;if(pwm>30){pwm=0;}} //ШИМ if (polr!=PINC.0){if (polr==0 & PINC.0==1){perr=1;PORTA.4=1;} // индикатор того что энкодер прошел одно деление polr=PINC.0; } else {PORTA.4=0;} // и выводим результат на светодиод if (perr==1){perr=0;tmr=0;} if(tmr>2000){PORTA.5=1;} else{PORTA.5=0;} if(pwm<r){PORTA.0=1;}else{PORTA.0=0;} // вращаем колесо }; }
Почему бредовая? Считаю чем проще - тем лучше. Что тут ещё можно нагромоздить, да и зачем. Излучатель и приёмник это оптопара из мыши. ДатаШита на неё нет.