Utilizzo della porta C su micro 18F4550
13 Anni 7 Mesi fa #1
da michelino
Utilizzo della porta C su micro 18F4550 è stato creato da michelino
Buongiorno a tutti. Ho un problema che non riesco a capire.
Premetto che su questo micro utilizzo anche il modulo PWM settato su RC1 e RC2. Ciò che non mi torna è l'utilizzo della porta 3 che il compilatore C18 non mi riconosce (mi risponde che RC3 non esiste) e la totale mancata risposta della porta RC4 e RC5.
Il setup iniziale è il seguente :
// Imposto PORTC tutte uscite
LATC = 0x00;
TRISC = 0b00000000;
Scrivendo PORTCbits.RC3 -> mi ritorna errore il compilatore
Scrivendo sulla porta PORTCbits.RC4 e PORTCbits.RC5 il piedino corrispettivo rimane a 0.
Grazie
Premetto che su questo micro utilizzo anche il modulo PWM settato su RC1 e RC2. Ciò che non mi torna è l'utilizzo della porta 3 che il compilatore C18 non mi riconosce (mi risponde che RC3 non esiste) e la totale mancata risposta della porta RC4 e RC5.
Il setup iniziale è il seguente :
// Imposto PORTC tutte uscite
LATC = 0x00;
TRISC = 0b00000000;
Scrivendo PORTCbits.RC3 -> mi ritorna errore il compilatore
Scrivendo sulla porta PORTCbits.RC4 e PORTCbits.RC5 il piedino corrispettivo rimane a 0.
Grazie
Si prega Accedi o Crea un account a partecipare alla conversazione.
- michelino
- Autore della discussione
- New Member
Riduci
Di più
13 Anni 7 Mesi fa #2
da Mauro Laurenti
Risposta da Mauro Laurenti al topic Re: Utilizzo della porta C su micro 18F4550
Ciao,
potresti postare tutto il codice fino all´utilizzo della porta C (parti dalle direttive #include)?
Potresti anche postare l´errore che hai?
Saluti,
Mauro
potresti postare tutto il codice fino all´utilizzo della porta C (parti dalle direttive #include)?
Potresti anche postare l´errore che hai?
Saluti,
Mauro
Si prega Accedi o Crea un account a partecipare alla conversazione.
13 Anni 7 Mesi fa #3
da michelino
Risposta da michelino al topic Re: Utilizzo della porta C su micro 18F4550
Ecco il codice :
#include <p18f4550.h>
#include <timers.h>
#include <pwm.h>
// Utilizzo la libreria della porta B per evitare su tale porta le resistenze di pull up
#include <portb.h>
// Definisco la libreria del display LCD tenedo presente che tale libreria si trova nella directory di progetto
#define LCD_DEFAULT
#include "LCD_44780.h"
Grazie
// Definisco la funzione delay
#include "delay.c"
#define _XTAL_FREQ 20000000 // Used from delay macro
// Definisco la modalità di utilizzo e programmazione del micro
#pragma config FOSC = HS // Impostato per lavorare ad alta frequenza
#pragma config WDT = OFF // Disabilito il watchdog timer
#pragma config LVP = OFF // Disabilito programmazione LVP
#pragma config PBADEN = OFF // Disabilito gli ingressi analogici
#pragma config CCP2MX = ON // Imposto il modulo CCP sulla porta RC1
#pragma config MCLRE = OFF // Diabilito il comando di reset esterno ed abilito la porta RE3
// Imposto PORTA tutti ingressi tranne RA3, RA4 ed RA5
LATA = 0x00;
ADCON1 = 0x0F;
TRISA = 0b11000111;
// Imposto PORTB tutti ingressi
LATB = 0x00;
TRISB = 0b11111111;
// Disabilito il modulo USB
UCONbits.USBEN = 0;
// Disabilito il transceiver USB
UCFGbits.UTRDIS = 1;
// Imposto PORTC tutte uscite tranne RC4 e RC5
LATC = 0x00;
TRISC = 0b00110000;
// Imposto PORTD tutte uscite
LATD = 0x00;
TRISD = 0b00000000;
// Imposto PORTE tutte ingressi tranne RE2 che è un uscita
LATE = 0x00;
TRISE = 0b11111011;
// Apro il TMR2 per il PWM
OpenTimer2 (TIMER_INT_OFF & T2_PS_1_1 & T2_POST_1_1);
// Imposto la frequenza del periodo PWM a 20 kHz
periodoIpwm=249;
// Apro i canali pwm e li setto a 0
OpenPWM1 (periodoIpwm);
OpenPWM2 (periodoIpwm);
SetDCPWM1 (ipwm);
SetDCPWM2 (ipwm);
// Inizializzo il display LCD con quarzo a 20MHz
OpenLCD (20);
// Attivo l'illuminazione del display
BacklightLCD (TURN_ON);
// Scrivo l'intestazione del display all'avvio del sistema
WriteStringLCD ("- PROVA -");
Line2LCD ();
WriteStringLCD (" TEST PORTE ");
// Al termine dell'avvio (circa 2 secondi) attivo il sistema
while (cntTimer< 25)
{
++cntTimer;
DelayMs(timerAttesa);
}
// Abilito le resistenze di pullup presenti sulla porta B (se si brucia un fotoaccoppiatore o viene a mancare un qualsiasi segnale la porta va' ad 1
EnablePullups();
// Ciclo infinito
for(;
{
// Test della porta RE3
if(PORTEbits.RE3 == 1)
{
DelayMs(timerPulsante);
if(PORTEbits.RE3 == 1)
{
PORTDbits.RD0=1;
}
}
else
{
PORTDbits.RD0=0;
}
// Test della porta RC4
if(PORTCbits.RC4 == 1)
{
DelayMs(timerPulsante);
if(PORTCbits.RC4 == 1)
{
PORTDbits.RD1=1;
}
}
else
{
PORTDbits.RD1=0;
}
// Test della porta RC5
if(PORTCbits.RC5 == 1)
{
DelayMs(timerPulsante);
if(PORTCbits.RC5 == 1)
{
PORTDbits.RD2=1;
}
}
else
{
PORTDbits.RD2=0;
}
}
Ho recuperato anche la porta RE3.
L'errore per la porta RC3:
D:\documenti\Modula versione 2 pic 18F4550\firmware\modula2.c:302:Error [1205] unknown member 'RC3' in '__tag_41'
#include <p18f4550.h>
#include <timers.h>
#include <pwm.h>
// Utilizzo la libreria della porta B per evitare su tale porta le resistenze di pull up
#include <portb.h>
// Definisco la libreria del display LCD tenedo presente che tale libreria si trova nella directory di progetto
#define LCD_DEFAULT
#include "LCD_44780.h"
Grazie
// Definisco la funzione delay
#include "delay.c"
#define _XTAL_FREQ 20000000 // Used from delay macro
// Definisco la modalità di utilizzo e programmazione del micro
#pragma config FOSC = HS // Impostato per lavorare ad alta frequenza
#pragma config WDT = OFF // Disabilito il watchdog timer
#pragma config LVP = OFF // Disabilito programmazione LVP
#pragma config PBADEN = OFF // Disabilito gli ingressi analogici
#pragma config CCP2MX = ON // Imposto il modulo CCP sulla porta RC1
#pragma config MCLRE = OFF // Diabilito il comando di reset esterno ed abilito la porta RE3
// Imposto PORTA tutti ingressi tranne RA3, RA4 ed RA5
LATA = 0x00;
ADCON1 = 0x0F;
TRISA = 0b11000111;
// Imposto PORTB tutti ingressi
LATB = 0x00;
TRISB = 0b11111111;
// Disabilito il modulo USB
UCONbits.USBEN = 0;
// Disabilito il transceiver USB
UCFGbits.UTRDIS = 1;
// Imposto PORTC tutte uscite tranne RC4 e RC5
LATC = 0x00;
TRISC = 0b00110000;
// Imposto PORTD tutte uscite
LATD = 0x00;
TRISD = 0b00000000;
// Imposto PORTE tutte ingressi tranne RE2 che è un uscita
LATE = 0x00;
TRISE = 0b11111011;
// Apro il TMR2 per il PWM
OpenTimer2 (TIMER_INT_OFF & T2_PS_1_1 & T2_POST_1_1);
// Imposto la frequenza del periodo PWM a 20 kHz
periodoIpwm=249;
// Apro i canali pwm e li setto a 0
OpenPWM1 (periodoIpwm);
OpenPWM2 (periodoIpwm);
SetDCPWM1 (ipwm);
SetDCPWM2 (ipwm);
// Inizializzo il display LCD con quarzo a 20MHz
OpenLCD (20);
// Attivo l'illuminazione del display
BacklightLCD (TURN_ON);
// Scrivo l'intestazione del display all'avvio del sistema
WriteStringLCD ("- PROVA -");
Line2LCD ();
WriteStringLCD (" TEST PORTE ");
// Al termine dell'avvio (circa 2 secondi) attivo il sistema
while (cntTimer< 25)
{
++cntTimer;
DelayMs(timerAttesa);
}
// Abilito le resistenze di pullup presenti sulla porta B (se si brucia un fotoaccoppiatore o viene a mancare un qualsiasi segnale la porta va' ad 1
EnablePullups();
// Ciclo infinito
for(;
{
// Test della porta RE3
if(PORTEbits.RE3 == 1)
{
DelayMs(timerPulsante);
if(PORTEbits.RE3 == 1)
{
PORTDbits.RD0=1;
}
}
else
{
PORTDbits.RD0=0;
}
// Test della porta RC4
if(PORTCbits.RC4 == 1)
{
DelayMs(timerPulsante);
if(PORTCbits.RC4 == 1)
{
PORTDbits.RD1=1;
}
}
else
{
PORTDbits.RD1=0;
}
// Test della porta RC5
if(PORTCbits.RC5 == 1)
{
DelayMs(timerPulsante);
if(PORTCbits.RC5 == 1)
{
PORTDbits.RD2=1;
}
}
else
{
PORTDbits.RD2=0;
}
}
Ho recuperato anche la porta RE3.
L'errore per la porta RC3:
D:\documenti\Modula versione 2 pic 18F4550\firmware\modula2.c:302:Error [1205] unknown member 'RC3' in '__tag_41'
Si prega Accedi o Crea un account a partecipare alla conversazione.
13 Anni 7 Mesi fa #4
da Mauro Laurenti
Risposta da Mauro Laurenti al topic Re: Utilizzo della porta C su micro 18F4550
Ciao,
relativamente alle istruzioni associate al modulo USB, cancellale. Di default il modulo USB e´ come se non fosse presente.
Il file modula2.c e´ quello che hai inviato?
Dove usi la porta RC3 nel codice?
Saluti,
Mauro
relativamente alle istruzioni associate al modulo USB, cancellale. Di default il modulo USB e´ come se non fosse presente.
Il file modula2.c e´ quello che hai inviato?
Dove usi la porta RC3 nel codice?
Saluti,
Mauro
Si prega Accedi o Crea un account a partecipare alla conversazione.
13 Anni 7 Mesi fa #5
da michelino
Risposta da michelino al topic Re: Utilizzo della porta C su micro 18F4550
Ciao Mauro, la porta RC3 la ho eliminata ma era gestita come RC4 ed RC5.
Ma così come è configurato deve funzionare?
Grazie
Ma così come è configurato deve funzionare?
Grazie
Si prega Accedi o Crea un account a partecipare alla conversazione.
Moderatori: Mauro Laurenti, Pinna, StefA, Matteo Garia
Registrati al sito
Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.