Skip to content

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

@SuppaTenko

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 - то всё норм.

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

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