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

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

  • michelino
  • Avatar di michelino
  • New Member
  • New Member
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

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

  • Mauro Laurenti
  • Avatar di Mauro Laurenti
  • Moderator
  • Moderator
Di più
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'

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

  • michelino
  • Avatar di michelino
  • New Member
  • New Member
Di più
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

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

  • Mauro Laurenti
  • Avatar di Mauro Laurenti
  • Moderator
  • Moderator
Di più
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

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

  • michelino
  • Avatar di michelino
  • New Member
  • New Member
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