XMega ed interrupt

Sezione dedicata ai Microcontrollori e ai Sistemi Embedded

XMega ed interrupt

Postby flz47655 » 13 May 2013, 16:41

Ciao a tutti
Sto trovando difficoltà ad usare gli interrupt, vorrei scatenare un'interrupt sul fronte di discesa di un pin.
Ecco il codice che ho scritto che dovrebbe mostrare un messaggio su un terminale via porta usb/seriale simulata.
Il problema è che funziona in modo abbastanza random, senza fare nulla sembra che l'interrupt viene scatenato in maniera casuale.. :shock:

Code: Select all
// Routine chiamata allo scatenarsi dell'interrupt
ISR(PORTC_INT0_vect)
{
   printf("VSYNC");
}

// Routine presa da AVR1313
void PORT_ConfigureInterrupt0( PORT_t * port, PORT_INT0LVL_t intLevel, uint8_t pinMask )
{
   port->INTCTRL = ( port->INTCTRL & ~PORT_INT0LVL_gm ) | intLevel;
   port->INT0MASK = pinMask;   
}

#define VSYNC   IOPORT_CREATE_PIN(PORTC,2)     // definisco VSYNC come la porta PC2

void main()
{
// inizializzo diversi servizi
ioport_init();   
sysclk_init();
pmic_init();
irq_initialize_vectors();
cpu_irq_enable();  // abilito gli interrupt globali
board_init();
stdio_usb_init();    // inizializzo usb cdc mappata su stdio

//... altro codice

ioport_set_pin_dir(VSYNC, IOPORT_DIR_INPUT);                                  //  imposto VSYNC come input
ioport_set_port_mode(IOPORT_PORTC, 0xFF, IOPORT_MODE_PULLUP);  // attivo la pullup su tutta la PORTC
ioport_set_pin_sense_mode(VSYNC, IOPORT_SENSE_FALLING);             // ascolto il fronte di discesa su VSYNC
PORT_ConfigureInterrupt0( &PORTC, PORT_INT0LVL_HI_gc, 0xFF);        // configuro ed attivo l'interrupt su tutti i pin
}


PS: il micro è un ATXMega32A4U ed utilizzo le librerie ASF 3.5.1
flz47655
 
Posts: 639
Joined: 19 Jan 2012, 21:16

Re: XMega ed interrupt

Postby flz47655 » 13 May 2013, 17:13

Sembra quasi che non funzioni la maschera dei pin e che i pin in alta impedenza scatenino gli interrupt.. ma a cosa serve allora INT0MASK?
Che sia un baco degli XMega? Mi sembra troppo grosso per esserlo..
flz47655
 
Posts: 639
Joined: 19 Jan 2012, 21:16

Re: XMega ed interrupt

Postby deluca » 13 May 2013, 20:33

@flz,
Hai provato con altri micro o solo con ATXMega32A4U.

La gestione degli interrupt INT0 e INT1 è abbastanza semplice e con gli ATxmega128a1 non ho avuto problemi.
Come demo board abbiamo a disposizione la Atxmega128-A1 Xplained.

Purtroppo è l'unico micro della famiglia xmega che mi ritrovo immagazzinato in lab.
Ciao
Il mio sito: http://www.delucagiovanni.com ......e la chat: chat/
User avatar
deluca
Site Admin
 
Posts: 1104
Joined: 19 Jun 2011, 10:44
Location: 95123 - Catania (Italy)

Re: XMega ed interrupt

Postby flz47655 » 13 May 2013, 21:36

Mumble.. ero molto irritato da questo insuccesso e preso dalla disperazione ho:
- aggiornato Atmel Studio alla versione 6.1
- tolto tutte le ottimizzazioni del compilatore lasciando quelle del linker
- fatto nuovamente l'upload
e... sembra tutto funzionare alla meraviglia!
Veramente non mi so spiegare il comportamento anomalo del micro di oggi.. ero disperato perché non avevo altri micro con cui provare

Grazie ugualmente
Ciao
flz47655
 
Posts: 639
Joined: 19 Jan 2012, 21:16


Return to Microcontrollori e microprocessori

Who is online

Users browsing this forum: No registered users and 4 guests