я хочу сделать это прерывание смены штырька в arduino uno (atmega328p u).
сначала я покажу свой код.
#include <avr\interrupt.h>
void setup()
{
Serial.begin(9600);
PCICR |= (1 << PCIE0);
PCMSK0 |= (1 << PCINT0);
}
void loop() { }
ISR(PCINT0_vec)
{
Serial.println("a");
}
мои справочные данные здесь
http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-7810-Automotive-Microcontrollers-ATmega328P_Datasheet.pdf
https://www.arduino.cc/en/Hacking/PinMapping168
я подключаю поворотный датчик на 5 В, gnd и фазу А на выводе № 8.
я подумал, что установка регистра управления прерыванием смены контактов (PCICR) на 0b00000001, и это означает, что я буду использовать порт B для прерывания.
и регистр маски смены контактов 0 (PCMSK0) установлен на 0b00000001, поэтому будет прервана при изменении цифрового контакта 8.
, поэтому, когда я поворачиваю энкодер, фаза A будет импульсной, и мой последовательный порт покажет «a» на последовательном мониторе, но не будет.
есть ли проблема в моем коде? или я должен скомпилировать в студии atmel? (я скомпилировал и загрузил этот код в Arduino IDE.) или мои справочные данные неверны?
, пожалуйста, помогите мне.