- Messaggi: 4
- Ringraziamenti ricevuti 0
gestione porte PIC
- Federico_d
- Autore della discussione
- Nuovo Utente
-
Less
Di più
5 Anni 9 Mesi fa #1
da Federico_d
Non si può essere sicuri di nulla. Ne sono assolutamente certo!
gestione porte PIC è stato creato da Federico_d
Buongiorno,
come ho scritto nella mia presentazione, sto iniziando a fare i primi esperimenti con un PIC 18F2550 per prendere confidenza col workflow: MPLAB-X 5.2 - PIC Kit 4 - MCU. Ho notato che dopo aver programmato il PIC, se stacco il programmatore e le porte PGD e PGC rimangono "floating", il micro non funziona correttamente. Quindi ho provato a mettere un resistore di pull-down e successivamente ho tolto il resistore e settato le due porte in OUTPUT/LOW. In entrambi i casi tutto sembra funzionare. E' prassi corretta mettere in down queste porte, o ci sono altri accorgimenti che non conosco ?
Grazie,e buona giornata a tutti.
Federico
come ho scritto nella mia presentazione, sto iniziando a fare i primi esperimenti con un PIC 18F2550 per prendere confidenza col workflow: MPLAB-X 5.2 - PIC Kit 4 - MCU. Ho notato che dopo aver programmato il PIC, se stacco il programmatore e le porte PGD e PGC rimangono "floating", il micro non funziona correttamente. Quindi ho provato a mettere un resistore di pull-down e successivamente ho tolto il resistore e settato le due porte in OUTPUT/LOW. In entrambi i casi tutto sembra funzionare. E' prassi corretta mettere in down queste porte, o ci sono altri accorgimenti che non conosco ?
Grazie,e buona giornata a tutti.
Federico
Non si può essere sicuri di nulla. Ne sono assolutamente certo!
Si prega Accesso o Crea un account a partecipare alla conversazione.
- Cosimix
-
- Elit Utente
-
Less
Di più
- Messaggi: 198
- Ringraziamenti ricevuti 26
5 Anni 9 Mesi fa #2
da Cosimix
Risposta da Cosimix al topic gestione porte PIC
Buon pomeriggio!
Cosa fa il micro per non funzionare correttamente?
E' buona regola avere il controllo di tutti i pin del micro, anche di quelli non utilizzati. Se dai un'occhiata agli esempi del testo XC8 Step by Step, troverai sempre delle configurazioni del tipo
In genere si consiglia di impostare i pin non utilizzati come input e, se hai spazio e resistori da consumare, non è sbagliato collegare questi ultimi verso massa (oppure collegando i pin direttamente a massa), evitando di lasciarli floating. Il motivo è legato ad un discorso di consumi e di interferenze che il micro potrebbe captare. Ovviamente dipende dal tipo di applicazione.. Se il circuito andrà in orbita grazie ad un razzo di Elon Musk (tra l'altro il prossimo partirà tra qualche ora) allora è il caso di prendere qualche accorgimento.
Per chi proviene da Arduino è normale porsi la tua domanda perché in ambiente Arduino in genere si impostano solo i pin di interesse attraverso la funzione pinMode(), mentre tutti gli altri di default vengono impostati come input.
Saluti,
Cosimo
Cosa fa il micro per non funzionare correttamente?
E' buona regola avere il controllo di tutti i pin del micro, anche di quelli non utilizzati. Se dai un'occhiata agli esempi del testo XC8 Step by Step, troverai sempre delle configurazioni del tipo
Code:
LATB = 0x00;
TRISB = 0xFF;
In genere si consiglia di impostare i pin non utilizzati come input e, se hai spazio e resistori da consumare, non è sbagliato collegare questi ultimi verso massa (oppure collegando i pin direttamente a massa), evitando di lasciarli floating. Il motivo è legato ad un discorso di consumi e di interferenze che il micro potrebbe captare. Ovviamente dipende dal tipo di applicazione.. Se il circuito andrà in orbita grazie ad un razzo di Elon Musk (tra l'altro il prossimo partirà tra qualche ora) allora è il caso di prendere qualche accorgimento.
Per chi proviene da Arduino è normale porsi la tua domanda perché in ambiente Arduino in genere si impostano solo i pin di interesse attraverso la funzione pinMode(), mentre tutti gli altri di default vengono impostati come input.
Saluti,
Cosimo
Si prega Accesso o Crea un account a partecipare alla conversazione.
5 Anni 9 Mesi fa #3
da Mauro Laurenti
Risposta da Mauro Laurenti al topic gestione porte PIC
Salve Federico,
a meno che tu non stia in fase di debug, quando stacchi il programmatore deve funzionare.
Non ci deve essere l'esigenza di collegare PGD e PGC a massa.
Quale schema elettrico stai utilizzando?
Saluti,
Mauro
a meno che tu non stia in fase di debug, quando stacchi il programmatore deve funzionare.
Non ci deve essere l'esigenza di collegare PGD e PGC a massa.
Quale schema elettrico stai utilizzando?
Saluti,
Mauro
Si prega Accesso o Crea un account a partecipare alla conversazione.
5 Anni 9 Mesi fa #4
da Mauro Laurenti
Risposta da Mauro Laurenti al topic gestione porte PIC
...abbiamo scritto in contemporanea.
Quello che è strano è che non funziona quando stacchi il programmatore.
I miei dubbi sono sulla linea MCLR ed eventualmente il watchdog interno (da disabilitare).
Saluti,
Mauro
Quello che è strano è che non funziona quando stacchi il programmatore.
I miei dubbi sono sulla linea MCLR ed eventualmente il watchdog interno (da disabilitare).
Saluti,
Mauro
Si prega Accesso o Crea un account a partecipare alla conversazione.
- Federico_d
- Autore della discussione
- Nuovo Utente
-
Less
Di più
- Messaggi: 4
- Ringraziamenti ricevuti 0
5 Anni 9 Mesi fa #5
da Federico_d
Non si può essere sicuri di nulla. Ne sono assolutamente certo!
Risposta da Federico_d al topic gestione porte PIC
Posterò lo schema elettrico appena possibile, lo devo disegnare. Nel frattempo aggiungo che il programma fa banalmente lampeggiare un led. Il non-funzionamento si manifesta così: se stacco il PK4 quando il led è spento, questo rimane spento. Se lo stacco a led acceso, questo inizia a sfarfallare esattamente a 50 Hz, misurati da oscilloscopio. Cosa che ovviamente non so spiegare. Mettendo a massa le due suddette porte il led inzia a lampeggiare come mi aspetto. Il pic è impostato per funzionare con l'oscillatore interno a 8 MHz.
Ecco il codice.
#include <stdio.h>
#include <stdlib.h>
#include <pic18f2550.h>
#include <xc.h>
#define DELAY_VALUE 50000
#define FOREVER 1
#pragma config WDT = OFF // Watchdog Timer Enable bit
#pragma config FOSC = INTOSC_EC
int main(int argc, char** argv) {
unsigned long counter = DELAY_VALUE;
TRISA = 0b0000; // set PORTA full output
TRISB = 0b0000; // set PORTB full output
OSCCONbits.IRCF = 0b111; // set internal clock to 8 MHz
PORTBbits.RB6 = 0; // set PGC to down
PORTBbits.RB7 = 0; // set PGD to down
while (FOREVER) {
while(counter)
{
counter--;
}
counter = DELAY_VALUE;
LATAbits.LATA0 = ~LATAbits.LATA0;
}
return (EXIT_SUCCESS);
}
Ecco il codice.
#include <stdio.h>
#include <stdlib.h>
#include <pic18f2550.h>
#include <xc.h>
#define DELAY_VALUE 50000
#define FOREVER 1
#pragma config WDT = OFF // Watchdog Timer Enable bit
#pragma config FOSC = INTOSC_EC
int main(int argc, char** argv) {
unsigned long counter = DELAY_VALUE;
TRISA = 0b0000; // set PORTA full output
TRISB = 0b0000; // set PORTB full output
OSCCONbits.IRCF = 0b111; // set internal clock to 8 MHz
PORTBbits.RB6 = 0; // set PGC to down
PORTBbits.RB7 = 0; // set PGD to down
while (FOREVER) {
while(counter)
{
counter--;
}
counter = DELAY_VALUE;
LATAbits.LATA0 = ~LATAbits.LATA0;
}
return (EXIT_SUCCESS);
}
Non si può essere sicuri di nulla. Ne sono assolutamente certo!
Si prega Accesso 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.
Forum - Ultimi messaggi
-
- progetto can
- da marcelloraja
-
- MODULO GSM SIM900A
- da Mauro Laurenti
-
- Freedom III e compilazioni fallite
- da Mauro Laurenti
-
- Gestione degli errori su comunicazione seriale
- da Mauro Laurenti
-
- Timer0 e interrupt
- da Mauro Laurenti