Errore esempio C18 Lezione 13
12 Anni 10 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
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
- Moderator
Riduci
Di più
12 Anni 10 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
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
Riduci
Di più
- Messaggi: 8
- Ringraziamenti ricevuti 0
12 Anni 10 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
Saluti,
Mauro
Si prega Accedi o Crea un account a partecipare alla conversazione.
12 Anni 10 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
Riduci
Di più
- Messaggi: 8
- Ringraziamenti ricevuti 0
12 Anni 10 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
- Autore della discussione
- Premium Member
Riduci
Di più
- Messaggi: 137
- Ringraziamenti ricevuti 3
Moderatori: Mauro Laurenti, StefA
Registrati al sito
Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.