avr-gcc-list
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[avr-gcc-list] interrupt in AVR-libc support ATmega32U4 ?


From: 辻野 太郎
Subject: [avr-gcc-list] interrupt in AVR-libc support ATmega32U4 ?
Date: Sun, 17 Apr 2016 16:18:04 +0900

I try to run a basic program LED_INTv2.c about interrupt.

Connection:
PB0 <---> LED <---> GND,
PD0(INT0) <---> Switch (on: connect)<---> GND

normal : LED on --- switch on --- PD0(INT0)=Low (GND) ---> LED off ---> Switch 
off 
----> PD0(INT0)=High ---> return to main routine ---> LED on 

However, after switch on and off, program does not return to main routine, that 
is, LED off ,
PD0(INT0) remains Low level.

In Sec 23.17 Table of the manual "avr-libc 2.0.0 Mon Feb 8 2016 23:59:10"
there is no ATmega32U4 in the list of devices for which INT0_vect is applicable.
Before I can perform a program of same content using ATtiny261.
ATtiny261 is in the list.

My Harware:
Teensy 2.0 (ATmega32U4)
My Software:
aruduino + Teensyduino.(Windows8.1)

What's problem ?

Is <avr/interrupt.h> applicable for Teensy2.0(ATmega32U4) ?

Can I use only Arduino library for interrupt using Teensy2.0 ?

I can perform a program of same content using Arduino library (LED_INTv4.c). 

%%%%% LED_INTv2.c %%%%%%%%%%%%%%%
#include <avr/io.h>
#define CPU_PRESCALE(n) (CLKPR = 0x80, CLKPR = (n))
#define CPU_16MHz 0x00
#include <util/delay.h>
#include <avr/interrupt.h>

ISR(INT0_vect){
PORTB=0x00;
reti();
}
int main( void ){
CPU_PRESCALE(CPU_16MHz);
DDRB=0xff;
DDRD=0x0;
PORTB=0xff;
PORTD=0xff;
cli();

SREG=0b10000000;
EICRA=0b00000000; // Interrupt condition : Low Level
EIMSK=0b00000001; // Enable External Interrupt INT0
sei();
while(1);

}


%%%%   LED_INTv4.c  %%%%
void setup() {
pinMode(0,OUTPUT);
pinMode(5,INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(5),turnoff,LOW);
}

void loop() {
  digitalWrite(0,HIGH);
}

void turnoff() {
  digitalWrite(0,LOW);
}


reply via email to

[Prev in Thread] Current Thread [Next in Thread]