Vai al contenuto
Inviato

Salve a tutti,

 

spero che qualche appassionato possa risolvere il mio problema! Devo creare un circuito che accende dei LED secondo una determinata sequenza; ho programmato il mio PIC16F84A senza troppe difficoltà , ma non appena lo inserisco nello zoccolo del circuito, la tensione tra Vdd e Vss scende a 1,3V e il PIC inizia a riscaldarsi (tenendo presente che senza PIC e alimentando il circuito la tensione tra Vdd e Vss è 5V!!!). A questo punto ho pensato che il problema fosse o nel codice o nel PIC, e per togliermi il dubbio ho provato a inserire un PIC vergine, appena acquistato. Con mia sorpresa ho riscontrato lo stesso identico errore, quindi l'errore non è nè nel PIC nè nel codice, ma bensì nel circuito. Purtroppo ho ricontrollato più volte il circuito e non trovo errori! Allego schema, circuito e codice, con la speranza che qualcuno possa aiutarmi! lol

 

***************************************CODICE***************************************

 

PROCESSOR 16F84A

ERRORLEVEL -302

RADIX DEC

INCLUDE "P16F84A.INC"

__CONFIG 3FF1H

CBLOCK 0CH

COUNT1: 1

ENDC

CBLOCK 00H

ENDC

BSF STATUS, RP0

MOVLW 00H

MOVWF TRISB

MOVLW 01H

MOVWF OPTION_REG

BCF STATUS, RP0

 

MAIN

MOVLW 00H

MOVWF PORTB

CALL DELAY

MOVLW 01H

MOVWF PORTB

CALL DELAY

MOVLW 03H

MOVWF PORTB

CALL DELAY

MOVLW 07H

MOVWF PORTB

CALL DELAY

MOVLW 0FH

MOVWF PORTB

CALL DELAY

GOTO MAIN

 

DELAY

MOVLW 6

MOVWF TMR0

MOVLW 125

MOVWF COUNT1

 

DELAY_LOOP

MOVF TMR0, W

BTFSS STATUS, Z

GOTO DELAY_LOOP

MOVLW 6

MOVWF TMR0

DECFSZ COUNT1, 1

GOTO DELAY_LOOP

RETURN

END

Featured Replies

Inviato

Non sono un esperto, qui l'esperto è standardbus ma attualmente è impegnato in un importante progetto per la wii.

 

A me sembra che la resistenza di pull up dell'interruttore sia troppo bassa, dovrebbe essere intorno ai 100k.

I piedini non utilizzati andrebbero poi collegati o a massa oppure a V+, nel tuo caso credo a massa ma dipende anche dal programma, credo.

 

Vss non dovrebbe andare a massa? E' il piedino che tu hai indicato con GND?

 

Qui

http://digilander.libero.it/wgiocoso/si ... azione.gif

c'è un circuito analogo a quello che stai facendo tu e in effetti la resistenza è da 10k (anche se sopra dice che dovrebbe essere intorno ai 100k)

E' simile al tuo per cui penso che ci sia un errore nella realizzazione del circuito. Non è che l'A

 

Le foto del millefori sono un pò sfocate ma li si fermano le mie competenze.

 

Per quanto riguarda il programma credo che vadano stabilite tutte le porte, anche quelle inutilizzate.

Inviato
  • Autore
Il problema della caduta di tensione con surriscaldamento l'ho risolto, avevo invertito sbadatamente Vdd e Vss! :3 Nonostante ciò, anche se il PIC è alimentato con 5V, continua a non funzionare!!! :twisted: Nello schema GND è Vss, esatto! Per quanto riguarda che porte inutilizzate, nel programma sono settate (solo il registro PORTB), mentre il registro PORTA è lasciato di default. Sinceramente non sapevo che andassero a massa le inutilizzate, anche perchè non l'ho visto in nessuno schema, però proverò anche questa e ti farò sapere!
Inviato

Adesso non hai cadute di tensione no?

 

Puoi provare a fare il debug su un emulatore per controllare lo stato delle porte e dove si inchioda il programma.

Mettere a massa o VCC le porte inutilizzate è una buona pratica (specialmente se le usi per leggere segnali dall'esterno) ma in questo caso non credo che sia qui il problema.

 

A questo punto cosa intendi per "non funziona"? Ci sono tensioni strane oppure non si accende neanche un led?

Be' c'è questa pagina che ti può aiutare

http://digilander.libero.it/wgiocoso/si ... ic-asm.htm

e qui un esempio in assembler

http://digilander.libero.it/wgiocoso/si ... azione.asm

Inviato
  • Autore
Per non funziona intendo che non si accende nemmeno un LED, però le saldature sono corrette, perchè se faccio un pò di pressione sul PIC, si illumina qualche LED, ma non secondo la sequenza del programma! Ho pensato ad un'altro possibile "errore", ovvero: l' alimentatore che utilizzo fornisce come corrente massima 130mA, non vorrei che ne servano di più! ???? Inoltre potresti perfavore mandarmi il link di un simulatore, se ne conosci qualcuno?
Inviato

Non è che hai saldature fredde? Mica è normale che facendo pressione sul PIc i led si accendano. Forse il PIC non è inserito bene oppure è al contrario? Hai controllato con il tester che ci sia alimentazione sui piedini e che i piedini della porta b ogni tanto (non so che ritardo hai messo) vadano alti?

 

130mA dovrebbero andare, il PIc consuma pochissimo e i led dovrebbero fare 20mA l'uno ma qui potrei sbagliare, dipende dai led.

 

Puoi anche provare a modificare il programma in modo che accenda un solo led e lo tenga acceso.

 

Hai un messaggio privato.

Inviato
  • Autore
Ho provato ora il simulatore, e il problema non sta nel programma, difatti il registro PORTB si comporta esattamente come voglio! Il PIC è collegato correttamente, ma i piedini non vanno a 5V! PIC guasto?
Inviato

Si, in effetti puoi aver guastato il pic quando lo hai alimentato al contrario.

 

Controlla lo stato delle saldature, anche se dalle foto sembrano buone.

Inviato
  • Autore
Aggiornamento: ho provato con PIC nuovi di zecca, stesso identico problema, ovvero non si accende nulla, però il codice al simulatore funziona e come! ???? ???? ????
Inviato
Allora dovrebbe essere un problema di circuito o a livello di progetto o a livello di realizzazione.
Inviato
  • Autore
Ora lo osservo meglio e ci lavoro un'altro pò, appena ho novità  ti farò sapere! Comunque grazie mille per le dritte! :)
Inviato
  • Autore
Nuovo (strano!) problema! Ho staccato uno dei due condensatori dal quarzo, e adesso la sequenza funziona (con un ritardo diverso da quello che ho dato io!); la cosa strana è che se premo il bottone di RESET la sequenza non riparte da capo, ma è come se andasse in pausa, perchè non appena rilascio il tasto la sequenza riparte da dove si era interrotta. La cosa ancora più strana è che accade la stessa cosa rimuovendo l'alimentazione e ricollegandola!!! 8|
Inviato

Da quello che scrivi sembra ci sia qualche problema con il clock. Io non sono un esperto di PIC ma forse esiste qualche istruzione per abilitare il clock esterno invece di quello interno.

O forse ci sono problemi nel circuito che vanno al di la delle mie capacità .

Crea un account o accedi per lasciare un commento