Atmega328p 中的引脚更改 ISR

问题描述 投票:0回答:0

我/正在尝试为我的 arduino uno 设置一个 ISR,我正在尝试使用较低级别的方法来启用我的中断,以便我确定到底发生了什么。但是我的方法遇到了问题

这是我的代码:

#include <stdint.h>
#include <avr/interrupt.h>

#define RASPI_PORT 4
#define SERVO_PORT 8


void ISR_config(void);


/* ------------------------ Interrupt Functions -------------------*/
ISR (PCINT0_vect);


/* ------------------------ General Functions ---------------------*/
void toggle_spray();

void setup() {
  Serial.begin(9600);
  // Clear interrupts
  cli();
  // enable interrupts
  ISR_config();
  // Enable interrupts
  sei();
}

void loop() {
  // Dummy code
}


    
void ISR_config(void){
  // Set pin 4 as an input pin
  DDRD &= ~(1 << DDD4);
  PORTD |= (1 << PORTD4);
  
   // Enable port[7:0] for interrupts
  PCICR |= 0x1;           //(1 << PCIE0);
  
  // Enable only pin 4 for interrupts
  PCMSK0 |= 0x10;          //(1 << PCINT4);
}


// Interrupt Handller Function
ISR (PCINT0_vect){
  // Call the toggle function
  Serial.println("IN ISR");
  toggle_spray();
}

引脚从外部源切换,但不会触发中断。

任何帮助将不胜感激!

c arduino interrupt avr atmega32
© www.soinside.com 2019 - 2024. All rights reserved.