ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
29 ноября
835753
Dingo (27.04.2018 10:37 - 10:43, просмотров: 3305)
Глюк, ошибка или китайцы? CY7C68013A - не вызывается INT0. http://mojo-market.ru/image/cache/data-mx-sku035539-image3-480x640.jpg
Есть такая платка от восточных товарищей как на картинке, захотел в аппнотовскую прошивку добавить немного функционала по внешнему прерыванию. И - фигвам. Возился долго, по ИНТ0 перерыл весь TRM и ещё несколько книг по х51, но - не смог. Пока не взял и не скопировал пример Firmware\extr_intr. И - заработало! Но только ИНТ1, а ИНТ0,по прежнему - "фигвам". Вот и думаю, что это - ошибка, не вошедшая в эррату(свежачок скачал)(маловероятно), ошибка sdcc (маловероятно - адреса переходов подставляются), неисправная м/сх или вообще подделка? Небольшое дополнение: опрос флага прерывания событие ловит! Может кто сталкивался из вас? Или есть возможность проверить? void ext0_Init(void) { // PA.0 Gonfigure OEA = 0x80; //INT0# and INT1# PORTACFG = 0x03; // PA0 and PA1 are pins for INT0 and INT1 respectively. TCON |= 0x05; // INT0 and INT1 are configured as Edge triggered interrupts. //Enable External Interrupts IE |= 0x05; // Enable External Interrupts 0 and 1 //Clear Flags // EA = 1; // Enable Global Interrupt // Есть дальше перед loop } void ext0_isr(void) __interrupt INT0_VECT { TCON &= 0xFD; // Clear INT0 TCON.1 Flag . This is also automatically cleared by hardware. IOA ^= 0x80; // Toggle pin 0 of PortC } void ext1_isr(void) __interrupt INT1_VECT { TCON &= 0xF7; // Clear INT1 TCON.3 Flag . This is also automatically cleared by hardware. IOA ^= 0x80; // Toggle pin 1 of PortC }