esempio interrupt

12 Anni 11 Mesi fa #1 da crosby
esempio interrupt è stato creato da crosby
Ciao

Ho studiato con interesse la parte sugli interrupt (La mia esperienza è con quelli della serie 16). Nell'esempio riportato a pag 149-150 viene abilitato il bit PEIE registro INTCON per l'interrupt su periferiche ma non è proprio necessario? ho provato a toglierlo e ricompilare e va bene ugualmente.

Un saluto
fabio Milano

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • crosby
  • Senior Member
  • Senior Member
Di più
12 Anni 11 Mesi fa #2 da Mauro Laurenti
Risposta da Mauro Laurenti al topic Re: esempio interrupt
Ciao Fabio,

il programa funziona ugualmente poiche' di Default il bit PEIE vale 1 (dopo un Reset).
Ho scritto ugualmente l'istruzione come passo concettuale. Visto che in generale questo bit potrebbe per altre ragioni essere disattivato. Ho inoltre preferito mettere il passaggio visto il doppio significato dello stesso, a seconda che si stiano usando o meno i due livelli di priorita'.

Saluti,

Mauro

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Mauro Laurenti
  • Avatar di Mauro Laurenti
  • Moderator
  • Moderator
Di più
12 Anni 10 Mesi fa #3 da crosby
Risposta da crosby al topic Re: esempio interrupt
ti ringrazio

adesso sto lavorando sul capitolo 11, ho preparato un softwarino che fa le cose dell'esempio 1 (+ semplicemente senza fare la media però) usando direttamente le funzioni di libreria.
Ho preparato un file .h dove ho messo tutte le inizializzazioni della scheda (non mi sembra una brutta idea mi fa risprmiare del tempo e poi il main è più "pulito").
La funzione OpenADC riporta (pag. 220) il param config2 che contiene il canale analogico, ma a cosa serve? questa informazione viene poi specifata nella lettura vera e propria (istruzione SetChanADC oppure SelChanConvADC).
Ti segnalo ad inizio capitolo pag.208 riga 5 un termine ditale che dovrebbe essere digitale

un saluto
fabio Milano
freedom.h

main.c

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • crosby
  • Senior Member
  • Senior Member
Di più
12 Anni 10 Mesi fa #4 da crosby
Risposta da crosby al topic Re: esempio interrupt
PERCHE' NON RIESCO AD AGGIUNGERE GLI ALLEGATI?

questo è il main.c

#include "freedom.h"
#include <adc.h>

#define LCD_DEFAULT
#include <LCD_44780.h>

void main()
{
int valore;

InitFreedom();

OpenADC( ADC_FOSC_16 & ADC_RIGHT_JUST & ADC_8_TAD,
ADC_CH1 & ADC_REF_VDD_VSS & ADC_INT_OFF,
ADC_3ANA);

OpenLCD(20);
CursorLCD(TURN_OFF, BLINK_OFF);
HomeLCD();
BacklightLCD(TURN_ON);
WriteStringLCD("valore = ");

while (1)
{
SelChanConvADC(TRIMMER);
//SetChanADC(TRIMMER); ConvertADC();
while (BusyADC() != 0);
valore = ReadADC();

WriteIntLCD(valore, 4);
ShiftCursorLCD(LEFT, 4);
}
}

questo è il freedom.h

/*
freedom.h
=========
*/

#include <p18f4550.h>

#pragma config FOSC = HS
#pragma config WDT = OFF, LVP = OFF, PBADEN = OFF

//

#define BT1 PORTBbits.RB4
#define BT2 PORTBbits.RB5
#define BT3 PORTBbits.RB6
#define BT4 PORTBbits.RB7

#define LED1 LATDbits.LATD0
#define LED2 LATDbits.LATD1
#define LED3 LATDbits.LATD2
#define LED4 LATDbits.LATD3
#define LED5 LATDbits.LATD4
#define LED6 LATDbits.LATD5
#define LED7 LATDbits.LATD6
#define LED8 LATDbits.LATD7

#define PORTA_LED LATD

#define BACK_LIGHT LATCbits.LATC1
#define BUZZER LATCbits.LATC0

#define SENSORE_LUCE ADC_CH0 //AN0
#define TRIMMER ADC_CH1 //AN1
#define SENSORE_TEMPERATURA ADC_CH2 //AN2

void InitFreedom();

void InitFreedom()
{

//ADCON1 = 0x0F; //imposta tutte le porte come I/O digitali
ADCON1 = 0b1100;
INTCON2bits.RBPU = 0; //abilita le R di pull-up sulla porta B
LATA = 0; TRISA = 0b00000111; //analogical input
LATB = 0; TRISB = 0b11110000; //four user buttons
LATC = 0; TRISC = 0b00000000;
LATD = 0; TRISD = 0b00000000; //leds + LCD
LATE = 0; TRISE = 0b00000000;

}

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • crosby
  • Senior Member
  • Senior Member
Di più
12 Anni 10 Mesi fa #5 da Gianni
Risposta da Gianni al topic Re: esempio interrupt
Se può essere utile, ne approfitto per segnalare qui un articolo che ho scritto tempo fa sulla comparazione della gestione degli interrupt sulle varie serie di pic:

www.settorezero.com/wordpress/la-gestion...6-pic18-pic24-dspic/

Sono tutti bravi ad essere "open" con il "source" degli altri.
Un amico è colui che ti dice sempre quando stai sbagliando. Il mio miglior amico è il parser.
SettoreZero

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Gianni
  • Avatar di Gianni
  • Elite Member
  • Elite Member
Di più
Moderatori: Mauro Laurenti

Registrati al sito

Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.

Registrati al sito LaurTec.

Login