Выход AVR настройки несколько раз переключает вывод - PullRequest
0 голосов
/ 06 февраля 2019

Я пишу прошивку для ATMega328 и сталкиваюсь с некоторыми проблемами.После поиска в моей логике в течение нескольких часов я мог свести код к самому базовому примеру и все еще иметь проблему.

Я устанавливаю пин-код на значение переменной.Поскольку я не хочу сохранять копии большого массива, я устанавливаю вывод на одно и то же значение снова и снова, и если переменная меняется, вывод устанавливается в другое состояние.

int main() {
    DDRB |= _BV(PB2);

    while (1) {
        PINB |= _BV(PB2);
        _delay_ms(50);
    }

    return 0;
}

Проблема в том, что с этим кодом штырь включается и выключается каждые 50 мс.

Я мог бы подумать о реструктуризации своего кода, чтобы я мог обнаружить изменение упомянутой переменной без необходимости копирования.Но, в конце концов, я не понимаю проблемы, потому что я снова и снова устанавливаю бит выходного порта на одно и то же значение.

1 Ответ

0 голосов
/ 06 февраля 2019

PINB - это регистр ввода (регистр вывода PORTB).

И да, запись 1 в регистр ввода PINx бит переключения в соответствующем регистре вывода PORTx и значение булавки в современных (почти все) AVR.

...