Skip to content

Странное поведение Tiny26 на простых скетчах #6

Description

@SuppaTenko

Так, это у меня тинька26 щучья, или это ядро так себя странно ведёт?

Банальнейший код:

void setup() {
pinMode(PA0, OUTPUT);
pinMode(PB6, INPUT_PULLUP);
}

void loop() {
digitalWrite(PA0, digitalRead(PB6));
}

Результат - постоянная единичка, либо постоянный 0 на PA0 без зависимости от состояния входа.
В целом - то же самое можно сделать и через PORTA/PORTB |=, битвайзы и т.п.

Особые спецэффекты были, когда пробовал залить нечто подобное, но тут я сам мог накосячить, конечно:

конфигурим прерывание и выходы в сетапе:
DDRA = 0xFF; // Порт А - все выходы.
DDRB &= ~(1 << 6); // Порт Б - конфигурим как вход пин 6.
GIMSK |= (1 << PCIE1); // Настраиваем канал Pin Change 1
GIFR &= ~(1 << PCIF); // Снимаем флаг прерывания
sei(); // Разрешаем прерывания

Код прерывания:
ISR(IO_PINS_vect) {
if (PINB & (1 << 6)) { // Проверяем источник прерывания. Пинаем его только если у нас источник - пин PB6.
digitalWrite(PA0, digitalRead(PB6));
}
}

И в итоге, это работает, но как-то невероятно медленно - и с 16МГц PLL, и с внешним камушком на 8.
Подаю импульсы с периодом в 1...10 миллисекунд на PB6 - на PA0 по идее должна быть та же картина, но тиня часть импульсов просто теряет и не видит часть фронтов/спадов. Ощущение такое, что возврат из прерывания занимает какое-то совсем уж конское время...

Всяческая банальщина типа блинка при этом работает. Но если писать прям сразу, условно гворя, 0x00 и 0xFF попеременно в порт а - начинаются некоторые галюны - на всём порту А на выходах появляется меандр частотой чуть больше 100 килогерц.
А если убрать запись в PA3 - то всё норм.

И было бы странно, если бы это было у всех, и ни кто бы так и не пожаловался. Так что, подозреваю, что мои китайские тиньки такие странные. Они ещё и прошиваются только медленным аспом.
Может, была у кого такая дичуга?

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions