Errore esempio C18 Lezione 13

12 Anni 4 Mesi fa #6 da Mauro Laurenti
Risposta da Mauro Laurenti al topic Re: Errore esempio C18 Lezione 13
Oggi sono tornato a casa ed ho testato nuovamente il programma sia si Freedom II rev. 2 che Freedom II rev. 3 e non ho riscontrato alcun problema.

Personalmente uso

1) PIC18F4550
2) Quarzo da 20Mhz
3) EEPROM 24LC32

Domanda aperta a tutti:

1) Quale PIC stai usando?
2) Che frequenza di clock stai usando?
3) Che EEPROM stai usando?

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 4 Mesi fa #7 da danielix
Risposta da danielix al topic Re: Errore esempio C18 Lezione 13
Ciao io uso la FREEDOM Rev.1 è

PIC18F4680
Quarzo 20MHz
EEPROM 24LC16B


ECCO IL main.c
#include <p18f4680.h>
#include <portb.h>
#include <PCF8563.h>

#define LCD_DEFAULT
#include <LCD_44780.h>


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

//OSC = HS Impostato per lavorare ad alta frequenza
//WDT = OFF Disabilito il watchdog timer
//LVP = OFF Disabilito programmazione LVP
//PBADEN = OFF Disabilito gli ingressi analogici

#define BT1 0b11100000
#define BT2 0b11010000
#define BT3 0b10110000
#define BT4 0b01110000

/******************************************/
// Prototipo di funzione
/******************************************/
void High_Int_Event (void);

//Interrupt vector per modalita' compatibile
#pragma code high_interrupt_vector = 0x08

void high_interrupt (void) {

// Salto per la gestione dell'interrupt
_asm GOTO High_Int_Event _endasm
}

#pragma code


/******************************************/
// Gestione Interrupt
/******************************************/
#pragma interrupt High_Int_Event

// Funzione per la gestione dell'interruzione
void High_Int_Event (void) {

// Indice per il ciclo di pausa
int i;

unsigned char button;

// Controllo che l'interrupt sia stato generato da PORTB
if (INTCONbits.RBIF == 1 ) {

//pausa filtraggio spike
delay_ms (30);

button = PORTB;
button = button & 0xF0;

// Controllo del tasto premuto

switch(button) {

case BT1 & BT3:
increment_minutes_RTCC ();
break;

case BT1 & BT4:
increment_hours_RTCC ();
break;

case BT2:
increment_years_RTCC ();
break;

case BT3:
increment_months_RTCC ();
break;

case BT4:
increment_days_RTCC ();
break;

}

// Resetto il flag d'interrupt per permettere nuove interruzioni
INTCONbits.RBIF = 0;
}

}

/******************************************/
// Programma Principale
/******************************************/

void main (void){

// Variabile per salvare il dato di ritorno
unsigned char data = 0;

// Imposto PORTA tutti ingressi
LATA = 0x00;
TRISA = 0xFF;

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

// Imposto PORTC tutti ingressi, RC1 come output
LATC = 0x00;
TRISC = 0b11111100;

// Imposto PORTD tutte uscite
LATD = 0x00;
TRISD = 0x00;

// Imposto PORTE tutti ingressi
LATE = 0x00;
TRISE = 0xFF;


// Inizializza il modulo I2C a 400KHz @20MHz
OpenI2C(MASTER, SLEW_ON);
SSPADD = 12;

OpenLCD (20);
BacklightLCD (TURN_ON);

// Inizializzo la data
set_days_RTCC (0x30);
set_months_RTCC (0x12);
set_years_RTCC (0x08);

// Inizializzo l'ora
set_hours_RTCC (0x02);
set_minutes_RTCC (0x56);
set_seconds_RTCC (0x33);

// Abilita i resistori di pull-up sulla PORTB
EnablePullups();

// Abilito le interruzioni su PORTB
INTCONbits.RBIE = 1;

// Abilito modalita' compatibile (di default vale gia' 0)
RCONbits.IPEN = 0;

// Abilito l'interrupt globale
INTCONbits.GIE = 1;

// Abilito l'interrupt periferiche
INTCONbits.PEIE = 1 ;

// Ciclo infinito
while (1) {

WriteStringLCD ("Time : ");

WriteVarLCD (get_time_RTCC ());

Line2LCD ();
WriteStringLCD ("Date : ");

WriteVarLCD (get_date_RTCC ());

HomeLCD ();

}
}


grazie

daniele

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

  • danielix
  • New Member
  • New Member
Di più
12 Anni 4 Mesi fa #8 da Mauro Laurenti
Risposta da Mauro Laurenti al topic Re: Errore esempio C18 Lezione 13
Puoi rimuovere la EEPROM 24LC16 e verificare se il problema viene risolto?

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 4 Mesi fa #9 da danielix
Risposta da danielix al topic Re: Errore esempio C18 Lezione 13
sempre la stessa cosa.

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

  • danielix
  • New Member
  • New Member
Di più
12 Anni 4 Mesi fa #10 da Akuryu
Risposta da Akuryu al topic Re: Errore esempio C18 Lezione 13
L'esempio l'ho caricato pari pari sulla freedom e l'hardware è quello che spedisci assieme alla freedom pari pari con il pic 18f4550, ho cambiato il calendare ma il risultato non cambia. Mauro forse sarò io puoi postarmi in che modo deve essere settata la Freedom (parlo dei ponticelli di settaggio quelli vicino alla rs232) per far funzionare bene questo esempio ?

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

  • Akuryu
  • Avatar di Akuryu
  • Premium Member
  • Premium Member
Di più
Moderatori: Mauro LaurentiStefA

Registrati al sito

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

Registrati al sito LaurTec.

Login