ATmega4808 32-контактный - контакт PA0 не установлен ВЫСОКИЙ - PullRequest
1 голос
/ 07 июня 2019

Я использую 32-контактный ATmega4808.У меня есть 2 светодиода, подключенных к контактам PA0 и PA1.Я хочу установить оба высоко.К сожалению, только светодиод PA1 включен.

Я выяснил, что вывод PA0 может быть установлен на EXTCLK по умолчанию.Если это проблема, я не могу найти решение изменить порт на GPIO.

int main(int argc, char** argv) {
    PORTA.DIRSET = PIN0_bm; // Config PA0 as output
    PORTA.DIRSET = PIN1_bm; // Config PA1 as output

    PORTA.OUTSET = PIN0_bm; // Set Pin PA0 to HIGH 
    PORTA.OUTSET = PIN1_bm; // Set Pin PA1 to HIGH 

    while(1){
    }


    return (EXIT_SUCCESS);
}

1 Ответ

0 голосов
/ 15 июня 2019

Конфигурация PIN0 теряется при повторной записи в регистры PORTA.DIRSET и PORTA.OUTSET.

. Попробуйте использовать | (bitwise OR), чтобы не сбрасывать конфигурацию PIN0:

    PORTA.DIRSET  = PIN0_bm; // Config PA0 as output
    PORTA.DIRSET |= PIN1_bm; // Config PA1 as output

    PORTA.OUTSET  = PIN0_bm; // Set Pin PA0 to HIGH
    PORTA.OUTSET |= PIN1_bm; // Set Pin PA1 to HIGH

Или,установить их одновременно:

    PORTA.DIRSET = PIN0_bm | PIN1_bm; // Config PA0 and PA1 as output

    PORTA.OUTSET = PIN0_bm | PIN1_bm; // Set Pin PA0 and PA1 to HIGH
...