Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

PIC difettosi o errori nei programmi?

Tipologie, strumenti di sviluppo, hardware e progetti

Moderatore: Foto UtentePaolino

0
voti

[1] PIC difettosi o errori nei programmi?

Messaggioda Foto UtenteMatteo1991 » 8 giu 2013, 19:18

Salve, è da un po' che cerco di far funzionare un mio progetto con un PIC16F883 ma ho dei problemi.
Alla fine ho deciso di provare con un led, ovvero farlo lampeggiare dal PIC in questione.....
se metto il led su RC7 è scrivo:
Codice: Seleziona tutto
#include <xc.h>
#pragma config FOSC = XT /*oscillatore esterno*/
#pragma config WDTE = OFF
#pragma config PWRTE = OFF
#pragma config CP = OFF
#pragma MCLRE = ON
#define _XTAL_FREQ 4000000

void main(void)
{
    TRISCbits.TRISC7 = 0;
    while(1) {/*never ending cycle*/
        PORTCbits.RC7=1;
__delay_ms(1000);
        PORTCbits.RC7=0;
__delay_ms(1000);
}
}

Il led lampeggia che è una meraviglia, ma se provo a cambiare porta (ovvero metto il led in RB5 (ho provato in tutte le porte di PORTB...) non funziona:
Codice: Seleziona tutto
#include <xc.h>
#pragma config FOSC = XT /*oscillatore esterno*/
#pragma config WDTE = OFF
#pragma config PWRTE = OFF
#pragma config CP = OFF
#pragma MCLRE = ON
#define _XTAL_FREQ 4000000

void main(void)
{
    TRISBbits.TRISB5 = 0;
    while(1) {/*never ending cycle*/
        PORTBbits.RB5=1;
__delay_ms(1000);
        PORTBbits.RB5=0;
__delay_ms(1000);
}
}


Ho due PIC identici che danno lo stesso identico problema.... ?% cosa può essere?
"Scrivere la propria storia come si scrive la Storia: con la veemenza di un conquistatore di imperi."
Avatar utente
Foto UtenteMatteo1991
406 2 4 12
Frequentatore
Frequentatore
 
Messaggi: 280
Iscritto il: 28 giu 2012, 16:38

5
voti

[2] Re: PIC difettosi o essori nei programmi?

Messaggioda Foto UtenteTardoFreak » 8 giu 2013, 20:07

E' il solito problema, trito e ritrito :D
Alcuni I/O, dopo il RESET, sono configurati come ingressi analogici.
Nel datasheet c'è scritto ed è bene in vista.
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
Avatar utente
Foto UtenteTardoFreak
73,9k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15754
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

0
voti

[3] Re: PIC difettosi o errori nei programmi?

Messaggioda Foto UtenteMatteo1991 » 8 giu 2013, 22:09

Vero! adesso funge tutto! va sistemato il registro ANSELH! :D
Grazie
"Scrivere la propria storia come si scrive la Storia: con la veemenza di un conquistatore di imperi."
Avatar utente
Foto UtenteMatteo1991
406 2 4 12
Frequentatore
Frequentatore
 
Messaggi: 280
Iscritto il: 28 giu 2012, 16:38

0
voti

[4] Re: PIC difettosi o errori nei programmi?

Messaggioda Foto UtenteMatteo1991 » 9 giu 2013, 19:06

perché se scrivo:
Codice: Seleziona tutto
PORTBbits.RB0 = 0;
__delay_ms(1000);
PORTBbits.RB0 = 1;
__delay_ms(1000);

il led lampeggia, ma , se scrivo:
Codice: Seleziona tutto
PORTB = 0b00000000;
__delay_ms(1000);
PORTB = 0b00000001;
__delay_ms(1000);

il led non lampeggia?
"Scrivere la propria storia come si scrive la Storia: con la veemenza di un conquistatore di imperi."
Avatar utente
Foto UtenteMatteo1991
406 2 4 12
Frequentatore
Frequentatore
 
Messaggi: 280
Iscritto il: 28 giu 2012, 16:38

0
voti

[5] Re: PIC difettosi o errori nei programmi?

Messaggioda Foto UtenteTardoFreak » 9 giu 2013, 20:45

Nel primo caso setti/resetti un singolo bit.
Nel secondo caso imposti il valore a tutti gli 8 bit della porta.
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
Avatar utente
Foto UtenteTardoFreak
73,9k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15754
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

0
voti

[6] Re: PIC difettosi o errori nei programmi?

Messaggioda Foto UtenteMatteo1991 » 9 giu 2013, 22:35

Si lo so, ma , perché nel primo caso il led lampeggia e nel secondo no?
"Scrivere la propria storia come si scrive la Storia: con la veemenza di un conquistatore di imperi."
Avatar utente
Foto UtenteMatteo1991
406 2 4 12
Frequentatore
Frequentatore
 
Messaggi: 280
Iscritto il: 28 giu 2012, 16:38

0
voti

[7] Re: PIC difettosi o errori nei programmi?

Messaggioda Foto UtenteTardoFreak » 9 giu 2013, 22:37

Non saprei. Sono rimasto a quando il LED era collegato al bit 5.

Hai cambiato circuito? :-M
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
Avatar utente
Foto UtenteTardoFreak
73,9k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15754
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

0
voti

[8] Re: PIC difettosi o errori nei programmi?

Messaggioda Foto UtenteMatteo1991 » 10 giu 2013, 12:41

Lavorando sul registro portB, il problema si presenta su qualsiasi bit!
mi spiego meglio se devo far lapeggiare il bit3 se scrivo
perché se scrivo:
Codice: Seleziona tutto
  PORTBbits.RB3 = 0;
    __delay_ms(1000);
    PORTBbits.RB3 = 1;
    __delay_ms(1000);

il led lampeggia, lasciando lo stesso circuito ma caricando il programma che contiene al posto del precedente frammento di codice, il seguente:
Codice: Seleziona tutto
    PORTB = 0b00001000;
    __delay_ms(1000);
    PORTB = 0b0000000;
    __delay_ms(1000);

il led non lampeggia.....

A volte però succede che il PIC sembra non voler proprio partire (carico il programma più volte, poi parte....) non vorrei fosse un problema del pickit3...
"Scrivere la propria storia come si scrive la Storia: con la veemenza di un conquistatore di imperi."
Avatar utente
Foto UtenteMatteo1991
406 2 4 12
Frequentatore
Frequentatore
 
Messaggi: 280
Iscritto il: 28 giu 2012, 16:38

0
voti

[9] Re: PIC difettosi o errori nei programmi?

Messaggioda Foto Utenteclaudiocedrone » 12 giu 2013, 2:04

:-) Codice e configurazione a parte, sei sicuro al 100% che lo hardware sia a posto ? (Connessioni, alimentazione etc.) O_/
"Non farei mai parte di un club che accettasse la mia iscrizione" (G. Marx)
Avatar utente
Foto Utenteclaudiocedrone
21,3k 4 7 9
Master EY
Master EY
 
Messaggi: 15300
Iscritto il: 18 gen 2012, 13:36

0
voti

[10] Re: PIC difettosi o errori nei programmi?

Messaggioda Foto UtenteShockwaver » 12 giu 2013, 11:49

Solo dopo aver seguito il consiglio di Foto Utenteclaudiocedrone, faresti un tentativo con i registri LAT?
Codice: Seleziona tutto
LATB = 0b00001000;
__delay_ms(1000);
LATB = 0b0000000;
__delay_ms(1000);


in passato ho avuto problemi con i registri PORT per quanto riguarda le scritture degli output e da allora li ho usati solo per leggere gli ingressi.

[OT]
ove presenti utilizzate sempre i corrispettivi registri SET INV e CLR, l'operazione risulterà atomica invece che la classica read-modify-write per la scrittura di un registro.
[/OT]

Edit: ma ti sei ricordato di modificare i corrispettivi bit nei registri TRIS e ANSEL per dichiararlo come output digitale?
Anyone who has never made a mistake has never tried anything new
Two things are infinite: universe and human stupidity, and I'm not sure about the former
You did not really understand something unless you can explain it to your grandmother
A. Einstein
Avatar utente
Foto UtenteShockwaver
770 1 5 11
Expert
Expert
 
Messaggi: 859
Iscritto il: 3 mar 2010, 18:56

Prossimo

Torna a Realizzazioni, interfacciamento e nozioni generali.

Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti