Вот вопрос: Есть две переменные alr1 и alr2 типа bit (0 или 1) как сделать так чтобы когда одна из них или обе снаовятся равными 1 выполнялся какойто код. пытался вот так:
Друзья ! Продумывайте функции САМОДИАГНОСТИКИ тех устройств что делаете. Чтоб требовался минимум инструментов для поиска неисправностей. Пример - avr123.nm.ru/z4.htm
Даже простой светодиод может разным режимом мигания выдать кучу сообщений.
====== Предлагаю в этом топике задавать вопросы по МК не требующие создания отдельного топика. Концентрировать таким образом информацию по МК.
====== Внимание ! в Тини и новых мега выше 128 и мега USB CAN PWM Запись
PINx.y = 1; // меняет бит PORTx.y - инвертирует.
Это позволяет "дергать" ногой с частотой такта (кварца например) ! На странице avr123.nm.ru/02.htm - на желтом фоне - перечислены некоторые модели AVR у которых это ДА и у которых НЕТ.
Как в Си работать со строками? Не могу понять блин. Задача такая в ATmega16 по ком порту передаю строку "LED1ON" результат загарается светодиод, если "LED1OFF" светодиод гаснет Дайте ктонибудь пример рабочиего кода чтонибудь похожее если есть. Или не похожее но со строками и попроще
itor писал(а):Как в Си работать со строками? Не могу понять блин. Задача такая в ATmega16 по ком порту передаю строку "LED1ON" результат загарается светодиод, если "LED1OFF" светодиод гаснет Дайте ктонибудь пример рабочиего кода чтонибудь похожее если есть.
Смотрите задачу 5 моего курса - http://avr123.nm.ru/z5.htm - там данные поступающие на UART направляются в буфер, далее вам надо брать из буфера символы и в зависимости от того что там - делать то что нужно. Нескольок последовательный конструкций If else - http://avr123.nm.ru/05.htm
Прием команд для контроллера 8 SERVO сервоприводов есть и в исходниках к задаче 13 - http://avr123.nm.ru/z13.htm
============= Пример "парсинга"-разбора команд есть в PROTEUS в папке SAMPLES\VSM MPLAB Viewer\App Notes\AN696 Это апноут AN696 микрочип - но код на Си ! в прицепе кусочек.
Вот я не понимаю, зачем учиться писать допустим на Си и обязательно в связке с МК, чтобы еще сложней было? Возьмите Керниган и Ритчи и на ПК научитесь!
И более того - очень часто программы для МК пишу так, чтобы они компилились и запускались на компе. Для этого делается простенький HAL (Hardware Abstraction Layer) на макросах. Например:
if (hal_is_btn1_pressed()) hal_led1_on() else hal_led1_off()
Ну в общем думаю смысл понятен. Макросы выносим в hal.h, а для винды пишем свой hal.h, в котором вписываем нужные действия - в зависимости от того что за прога, сообщения там на консоль валим или к каким-то кнопочкам-лампочкам в ГУИ привязываем. Для гуи кстати наша прога должна работать в отдельном потоке, чтоб не тормозило.
И все. Отладка на железе упрощается на порядок, потому что при достаточной сложности софта большая часть багов - чисто софтовые и на эмуляции вылезают и фиксятся. А перекомпилировать и запустить прогу на компе занимает несколько секунд, в отличие от перепрошивки контролера. Плюс иногда удобно работать не в реальном времени, тогда пятиминутный тест проги (какого-нить ПИ-регулятора) можно уложить в секунды. Но для таких задач одними кнопочками в гуях не обойдешься, надо писать эмуляцию регулируемой системы...
Мда, это я уже полез в материи, полезные для тех, кто программировать уже умеет
Добавлено спустя 3 минуты 30 секунд: А - самую главную полезность забыл - на компе есть ОТЛАДЧИК!!! Можно точки останова ставить и переменные смотреть. На атмеге8 это намного сложнее
boez писал(а): самую главную полезность забыл - на компе есть ОТЛАДЧИК!!! Можно точки останова ставить и переменные смотреть. На атмеге8 это намного сложнее
Дак симуляторы ж есть. PROTEUS, VMLAB, MPLAB, AVRstudio, KEIL симулятор
Не могу разобраться с захватом таймера1. Я так понял, чтобы захват заработал, нужно сконфигурировать сответствующую ногу МК под захват. Принцип работы так понял таков, что если на ногу ICP1(PBO для меги8) подается напряжение, то происходит прерывание. В ICR1- запоминается состояние TCNT1. но в ICR1 только 0
Chip type : ATmega8 Program type : Application Clock frequency : 8,000000 MHz Memory model : Small External SRAM size : 0 Data Stack size : 256 *****************************************************/