- Messaggi: 293
- Ringraziamenti ricevuti 29
Mi sono dato la zappa sui piedi
12 Anni 2 Mesi fa #1
da Tecnica
Mi sono dato la zappa sui piedi è stato creato da Tecnica
Buongiorno a tutti... da qualche tempo mi cimento con la programmazione del pic in particolare dal p18f2550
Ho già effettuato i classici esperimenti e ho postato anche già qualcosa sul forum per avere aiuti.
Ieri mi sono detto "ma si rifaccio la mia scheda perchè devo andare avanti a studiare." quindi mi sono messo e l'ho rifatta cambiando qualcosa, ora vi spiego cosa....
Nella basetta precedente avevo collegato dei pulsanti sulla PORTA e dei led sulla PORTB e tutto funzionava.
A sto giro ho pensato di risparmiare delle resistenze quindi ho invertito i collegamenti spostando i pulsanti su PORTB e i led su PORTA potendo sfruttare cosi le resistenze di pull UP interne al pic, beh non funziona più, ovvero il led si accende e rimane acceso e il pulsante non da alcun segnale.
Ho visto che i pulsanti cosi configurati vanno collegati direttamente al pin e a massa senza resistenza,
ragazzi io vi posto anche il codice perchè magari ometto qualcosa o sbaglio proprio.
Grazie
#include <p18f2550.h>
#pragma config FOSC = HSPLL_HS
#pragma config IESO= ON
#pragma config WDT = OFF
#pragma config LVP = OFF
#pragma config PBADEN = OFF
//OSC = HSPLL_HS Impostato per lavorare ad alta frequenza CON PLL ATTIVATO
//PLL = attivato la divisione
//WDT = OFF Disabilito il watchdog timer
//LVP = OFF Disabilito programmazione LVP
//PBADEN = OFF Disabilito gli ingressi analogici
void main (void){
EnablePullups ();
// Imposto PORTA tutti uscite
TRISA = 0b00000000;
PORTA = 0b00000000;
// Imposto PORTB tutti ingressi
TRISB = 0b11111111;
PORTB = 0b11111111;
// Imposto PORTC tutti uscite
TRISC = 0b00000000;
PORTC = 0b00000000;
if(PORTBbits.RB2==1){
PORTAbits.RA2=0;
}
else{PORTAbits.RA1=1;}
while (1){
}
}
Ho già effettuato i classici esperimenti e ho postato anche già qualcosa sul forum per avere aiuti.
Ieri mi sono detto "ma si rifaccio la mia scheda perchè devo andare avanti a studiare." quindi mi sono messo e l'ho rifatta cambiando qualcosa, ora vi spiego cosa....
Nella basetta precedente avevo collegato dei pulsanti sulla PORTA e dei led sulla PORTB e tutto funzionava.
A sto giro ho pensato di risparmiare delle resistenze quindi ho invertito i collegamenti spostando i pulsanti su PORTB e i led su PORTA potendo sfruttare cosi le resistenze di pull UP interne al pic, beh non funziona più, ovvero il led si accende e rimane acceso e il pulsante non da alcun segnale.
Ho visto che i pulsanti cosi configurati vanno collegati direttamente al pin e a massa senza resistenza,
ragazzi io vi posto anche il codice perchè magari ometto qualcosa o sbaglio proprio.
Grazie
#include <p18f2550.h>
#pragma config FOSC = HSPLL_HS
#pragma config IESO= ON
#pragma config WDT = OFF
#pragma config LVP = OFF
#pragma config PBADEN = OFF
//OSC = HSPLL_HS Impostato per lavorare ad alta frequenza CON PLL ATTIVATO
//PLL = attivato la divisione
//WDT = OFF Disabilito il watchdog timer
//LVP = OFF Disabilito programmazione LVP
//PBADEN = OFF Disabilito gli ingressi analogici
void main (void){
EnablePullups ();
// Imposto PORTA tutti uscite
TRISA = 0b00000000;
PORTA = 0b00000000;
// Imposto PORTB tutti ingressi
TRISB = 0b11111111;
PORTB = 0b11111111;
// Imposto PORTC tutti uscite
TRISC = 0b00000000;
PORTC = 0b00000000;
if(PORTBbits.RB2==1){
PORTAbits.RA2=0;
}
else{PORTAbits.RA1=1;}
while (1){
}
}
Si prega Accedi o Crea un account a partecipare alla conversazione.
- Tecnica
- Autore della discussione
- Visitatori
12 Anni 2 Mesi fa - 12 Anni 2 Mesi fa #2
da shinshi
Risposta da shinshi al topic Re: Mi sono dato la zappa sui piedi
Manca:
#include <portb.h>
Inoltre con il while messo li il controllo viene effettuato solo la prima volta poi il programma si blocca in un loop infinito.
#include <portb.h>
Inoltre con il while messo li il controllo viene effettuato solo la prima volta poi il programma si blocca in un loop infinito.
Ultima Modifica 12 Anni 2 Mesi fa da shinshi.
Si prega Accedi o Crea un account a partecipare alla conversazione.
- shinshi
- Elite Member
Riduci
Di più
12 Anni 2 Mesi fa #3
da Tecnica
Risposta da Tecnica al topic Re: Mi sono dato la zappa sui piedi
Eh veramente dopo l'ho incluso portb.h e while l'ho usato mettendo al suo interno la funzione if e ho fatto anche un conteggio fittizio ma nulla da fare....
Mi sa che devo smontarla e fare un pezzo per volta...
Mi sa che devo smontarla e fare un pezzo per volta...
Si prega Accedi o Crea un account a partecipare alla conversazione.
- Tecnica
- Autore della discussione
- Visitatori
12 Anni 2 Mesi fa #4
da Tecnica
Risposta da Tecnica al topic Re: Mi sono dato la zappa sui piedi
adesso dopo aver scollegato quasi tutto e lasciato solo un pulsante e un led funziona ma il led come avvicino la mano al pulsante si illumina un pò, poi premo e lui si illumina bene.
se alzo la basetta il led man mano che sale si illumina sempre di più....
Il led è collegato verso massa perciò in source mode.
se lo collego verso positivo in sink mode funziona ma al contrario ovvero è subito acceso e premo il pulsante si spegne.
Qualcuno sà spiegarmi????
RI posto il codice
#include <p18f2550.h>
#include <portb.h>
#pragma config FOSC = HSPLL_HS
#pragma config IESO= ON
#pragma config WDT = OFF
#pragma config LVP = OFF
#pragma config PBADEN = OFF
//OSC = HSPLL_HS Impostato per lavorare ad alta frequenza CON PLL ATTIVATO
//PLL = attivato la divisione
//WDT = OFF Disabilito il watchdog timer
//LVP = OFF Disabilito programmazione LVP
//PBADEN = OFF Disabilito gli ingressi analogici
void main (void){
// Imposto PORTA tutti uscite
TRISA = 0b1111101;
// Imposto PORTB tutti ingressi
TRISB = 0b11111111;
INTCON2bits.RBPU=0b11111111;
// Imposto PORTC tutti uscite
TRISC = 0b0000000;
while (1){
if(PORTBbits.RB0==1){
PORTAbits.RA1=0;
}
else{PORTAbits.RA1=1;}
}
}
se alzo la basetta il led man mano che sale si illumina sempre di più....
Il led è collegato verso massa perciò in source mode.
se lo collego verso positivo in sink mode funziona ma al contrario ovvero è subito acceso e premo il pulsante si spegne.
Qualcuno sà spiegarmi????
RI posto il codice
#include <p18f2550.h>
#include <portb.h>
#pragma config FOSC = HSPLL_HS
#pragma config IESO= ON
#pragma config WDT = OFF
#pragma config LVP = OFF
#pragma config PBADEN = OFF
//OSC = HSPLL_HS Impostato per lavorare ad alta frequenza CON PLL ATTIVATO
//PLL = attivato la divisione
//WDT = OFF Disabilito il watchdog timer
//LVP = OFF Disabilito programmazione LVP
//PBADEN = OFF Disabilito gli ingressi analogici
void main (void){
// Imposto PORTA tutti uscite
TRISA = 0b1111101;
// Imposto PORTB tutti ingressi
TRISB = 0b11111111;
INTCON2bits.RBPU=0b11111111;
// Imposto PORTC tutti uscite
TRISC = 0b0000000;
while (1){
if(PORTBbits.RB0==1){
PORTAbits.RA1=0;
}
else{PORTAbits.RA1=1;}
}
}
Si prega Accedi o Crea un account a partecipare alla conversazione.
- Tecnica
- Autore della discussione
- Visitatori
12 Anni 2 Mesi fa #5
da Tecnica
Risposta da Tecnica al topic Re: Mi sono dato la zappa sui piedi
ok ho smontato tutto è rimasto collegato il pulsante di reset il pulsante per il led e il led....
Morale.... led a massa accendo il pic il led è acceso, premo il pulsante il led si spegne....
non dovrebbe essere al contrario??????
Morale.... led a massa accendo il pic il led è acceso, premo il pulsante il led si spegne....
non dovrebbe essere al contrario??????
Si prega Accedi o Crea un account a partecipare alla conversazione.
- Tecnica
- Autore della discussione
- Visitatori
Moderatori: Mauro Laurenti, Matteo Garia
Registrati al sito
Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.