Correzione e consigli su codice un pulsante x una

13 Anni 8 Mesi fa #1 da Guido
Salve, ho modificato il codice scritto sulla guida C18 Step by Step a pag. 168 in base alle mie esigenze, ora ho bisogno che qualch'uno mi dica se può funzionare, se no, dove ho sbagliato.
Il codice fa emettere una nota alla pressione del pulsante.
Grazie.


#include <p18f4550.h>
#include <portb.h>


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



//OSC = HS Impostato per lavorare ad alta frequenza
//WDT = OFF Disabilitato il Watchdog Timer
//LVT = OFF Disabilitato programmazione LVT
//PBADEN = OFF Disabilitato gli ingrassi analogici


void High_Int_Event (void); // Prototipo di funzione per alta priorità

// Impostazione e Gestione priorità alta //
#pragma code high_vector = 0x08

void high_interrupt (void) {
_asm GOTO High_Int_Event _endasm //Salto x la gestione dell'interrupt alta priorità
}
#pragma code
#pragma interrupt High_Int_Event

void High_Int_Event (void) { // Funzione x la gestione dell'interruzione ad alta priorità

int i; // indice x il ciclo di pausa

if (INTCONbits.RBIF & INTCONbits.TMR0IF == 1 ) { //Controllo che l'interrup sia stato generato da PORTA e TMR0
for (i=0; i<10000; i++) { // Pausa filtraggio spike
}
if (PORTBbits.RB0 == 0) { // Controllo la pressione di RA0

T0CONbits.T08BIT = 0; //Modalità a 16 bit
T0CONbits.T0CS = 0; //Clok interno
T0CONbits.T0SE = 0; // TMR0 Source Edge Select bit: 0=low/high / 1=high/low
T0CONbits.PSA = 1; //Non abilito Prescaler
T0CONbits.T0PS2 = 0; // bits 2-0 PS2:PS0: Prescaler Select bits
T0CONbits.T0PS1 = 0; //
T0CONbits.T0PS0 = 0; //
TMR0H = 0xE0; // preset for Timer0 MSB register
TMR0L = 0x7F; // preset for Timer0 LSB register

LATCbits.LATC1 = 0x0F; // Esce freq. 620Hz
}
INTCONbits.RBIF == 0; //Resetto il flag x permettere nuove interuzioni
INTCONbits.TMR0IF == 0; //Resetto il flag x permettere nuove interuzioni
}
}



void main (void){


unsigned int i; //variabile usata per creare un conteggio fittizio


// Imposto PORTA tutti ingrassi
ADCON1 = 0x0F; // Imposto tutti ingressi digitali
PORTA = 0x00;
LATA = 0x00;
TRISA = 0xFF;


// Imposto PORTB tutti ingressi
PORTB = 0x00;
LATB = 0x00;
TRISB = 0xFF;

//Imposto PORTC tutti ingressi ed RC1 come uscita
PORTC = 0x00;
LATC = 0x00;
TRISC = 0b11111101;

// Imposto PORTD tutti ingressi
PORTD = 0x00;
LATD = 0x00;
TRISD = 0xff;

// Imposto PORTE tutti ingressi

PORTE = 0x00;
LATE = 0x00;
TRISE = 0xFF;

EnablePullups (); //Abilito resistori di pullups

INTCONbits.RBIE = 1; //Abilito le interruzioni su PORTB
INTCON2bits.RBIP = 1; //Abilito le interruzioni su PORTB come alta priorità

INTCONbits.TMR0IE = 1; //Abilito le interruzioni del Timer
INTCON2bits.TMR0IP = 1; //Abilito le interruzioni del Timer come alta priorità
T0CONbits.TMR0ON = 1; //Abilito il Timer0

INTCONbits.GIEH = 1; //Abilito gli interrups ad alta priorità


// Ciclo infinito
for (;;) {

} //end for

} // end main

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

  • Guido
  • Platinum Member
  • Platinum Member
Di più
13 Anni 8 Mesi fa #2 da Guido
Salve, ho provato a simulare il codice con MPLAB, selezzionato Debugger, Select Tool, Mpilab Sim e poi Animate, non succede nulla, dove ho sbagliato?
Grazie.

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

  • Guido
  • Platinum Member
  • Platinum Member
Di più
13 Anni 8 Mesi fa #3 da Mauro Laurenti
Risposta da Mauro Laurenti al topic Re: Correzione e consigli su codice un pulsante x una

Rendering Error in layout Message/Item: array_keys(): Argument #1 ($array) must be of type array, null given. Please enable debug mode for more information.

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

  • Mauro Laurenti
  • Avatar di Mauro Laurenti
  • Moderator
  • Moderator
Di più
13 Anni 8 Mesi fa #4 da Guido
Grazie ho corretto il codice. Ora per vedere se funziona lo posso simulare via softwer?

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

  • Guido
  • Platinum Member
  • Platinum Member
Di più
13 Anni 8 Mesi fa #5 da Mauro Laurenti
Risposta da Mauro Laurenti al topic Re: Correzione e consigli su codice un pulsante x una
Ciao Guido,

se il file si compila senza errori, impostando il simulatore come hai descritto in precedenza dovrebbe funzionare.
Piuttosto che usare la funzione Animate, usa quella step by step, per vedere passo passo le istruzioni eseguite.

Saluti,

Mauro

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

  • Mauro Laurenti
  • Avatar di Mauro Laurenti
  • Moderator
  • Moderator
Di più
Moderatori: Mauro LaurentiPinnaStefAMatteo Garia

Registrati al sito

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

Registrati al sito LaurTec.

Login