BaroneRosso.it - Forum Modellismo

BaroneRosso.it - Forum Modellismo (https://www.baronerosso.it/forum/)
-   Circuiti Elettronici (https://www.baronerosso.it/forum/circuiti-elettronici/)
-   -   PIC 16F877A lento?! (https://www.baronerosso.it/forum/circuiti-elettronici/143411-pic-16f877a-lento.html)

Mrk89 16 agosto 09 15:56

PIC 16F877A lento?!
 
Ciao, ho un problema.
Ho programmato il pic in oggetto per pilotare un display lcd alfanumerico e va lento....:o:
Non mi era mai successo prima!!Praticamente mi scrive un carattere al secondo.
Utilizzo un quarzo da 16MHz ed i condensatori di risonanza sono corretti.
Quale potrebbe essere il problema?Con altri pic non ne avevo mai avuti, nemmeno con ram e rom sfruttate al massimo.
Per favore aiutatemi.
Grazie e Ciao.

illez 16 agosto 09 16:00

Mah'...
bisognerebbe vedere il programma, come pilota il display.
Non credo sia un problema del PIC.

Mrk89 16 agosto 09 19:01

Beh, il programma deve scrivere su display valori letti dagli ingressi ADC.
Poi ha anche un menù sfogliabile con dei tasti...
Sono state create delle funzioni per sfoltire il main, potrebbe essere questo che rallenta?

illez 16 agosto 09 19:04

L'unica cosa che mi sembra strana è il Pic lento.
Se non puoi fare debug, prova a fare qualche test empirico, tipo accendere e spegnere un led ogni 300ms.
Controlla quanto durano eventuali routine di interrupt o se arrivano troppo di frequente...

Mrk89 16 agosto 09 19:09

Citazione:

Originalmente inviato da illez (Messaggio 1680827)
L'unica cosa che mi sembra strana è il Pic lento.
Se non puoi fare debug, prova a fare qualche test empirico, tipo accendere e spegnere un led ogni 300ms.
Controlla quanto durano eventuali routine di interrupt o se arrivano troppo di frequente...

Ecco appunto.....Nel programma all'inizio c'è una routine per far accendere dei leds in sequenza...I led dovrebbero accendersi appena il pic viene alimentato, invece passano 20 e più secondi prima che si accenda il primo, poi gli altri si accendono alla velocità normale, poi rallenta tutto di nuovo.:(

illez 16 agosto 09 19:13

Interrupt?

Flag di compilazione? (hai impostato i valori corretti per il tuo clock? Watchdog?)

Mrk89 16 agosto 09 19:20

Citazione:

Originalmente inviato da illez (Messaggio 1680838)
Interrupt?

Flag di compilazione? (hai impostato i valori corretti per il tuo clock? Watchdog?)

Ricontrollati più volte....o mi è sfuggito qualcosa...oppure non so...

illez 16 agosto 09 19:28

vediamo:
1. il pic è guasto. Carica sopra il classico programmino che fa lampeggiare 1 led e vedi. Se non funziona a dovere, è questa l'ipotesi corretta.
2. hai sbagliato qualcosa. Supponiamo i flag siano corretti. Andrei a vedere gli interrupt ogni quanto arrivano ma soprattutto quanto durano. Un ciclo sbagliato all'interno di un interrupt e sei fregato.
Se ci pensi, se il pic passa il suo tempo gestendo l'int, va lento...

Però solo tu conosci il programma e puoi dare la risposta corretta :wink:

ElNonino 16 agosto 09 20:56

In che linguaggio/compilatore è scritto il programma ?

:yeah:

Mrk89 17 agosto 09 00:10

Citazione:

Originalmente inviato da ElNonino (Messaggio 1680931)
In che linguaggio/compilatore è scritto il programma ?

:yeah:

E' scritto in MikroC.

illez 17 agosto 09 00:22

Tanto ha ragione lui :wink:

Ovvero: sei tu che sbagli :fiu::icon_rofl

(sempre che non sia il pic guasto, ma mi sembra strano)

Mrk89 17 agosto 09 01:18

Citazione:

Originalmente inviato da illez (Messaggio 1681120)
Tanto ha ragione lui :wink:

Ovvero: sei tu che sbagli :fiu::icon_rofl

(sempre che non sia il pic guasto, ma mi sembra strano)

Lo so che ha ragione lui....sempre e comunque!!
Ma appunto, dopo tanti anni di programmazione dei PIC mi da problemi proprio questo che non ho mai utilizzato...:wacko:

marchino65 17 agosto 09 07:25

Citazione:

Originalmente inviato da Mrk89 (Messaggio 1681158)
Lo so che ha ragione lui....sempre e comunque!!
Ma appunto, dopo tanti anni di programmazione dei PIC mi da problemi proprio questo che non ho mai utilizzato...:wacko:

Ciao,
se pensi che non sia un problema sw, prova a cambiare quarzo e condensatori.

saluti

illez 17 agosto 09 09:05

Hai montato il tutto su una breadboard?

Perché potrebbe essere un problema nell'oscillatore che ha difficoltà a partire.
E rileggendo il tuo precedente messaggio sembra sia proprio così...
L'oscillatore non parte, poi inizia ad oscillare ma si riferma... :uhm:
Controlla un po' il collegamento a massa dei condensatori...

:mumble:

Mrk89 17 agosto 09 09:58

Citazione:

Originalmente inviato da illez (Messaggio 1681213)
Hai montato il tutto su una breadboard?

Perché potrebbe essere un problema nell'oscillatore che ha difficoltà a partire.
E rileggendo il tuo precedente messaggio sembra sia proprio così...
L'oscillatore non parte, poi inizia ad oscillare ma si riferma... :uhm:
Controlla un po' il collegamento a massa dei condensatori...

:mumble:

No niente bread board...Circuito dedicato stampato...
Tra un paio di ore mi prendo il datasheet e lo spulcio pagina dopo pagina fino a trovare la soluzione...:uhm:

protomax 17 agosto 09 11:02

Citazione:

Originalmente inviato da Mrk89 (Messaggio 1681246)
No niente bread board...Circuito dedicato stampato...
Tra un paio di ore mi prendo il datasheet e lo spulcio pagina dopo pagina fino a trovare la soluzione...:uhm:

Non conosco bene il chip ma se puoi controlla due cose :

Se hai un oscilloscopio vedi se il segnale dell'oscillatore e' corretto, mi raccomando devi isolarti con un buon sistema per prelevare il segnale perche' potresti perturbarlo.

Seconda cosa potresti provare a cambiare i settaggi per il tipo di oscillatore.cambia in modo inyterrno o esterne con rete rc se puoi sono prove che ti possono permettere di capire se cambia qualcosa.

Poi come ti hanno consigliato sostituisci il programma con un semplice ciclo sul main dove mandi a livello alto e basso un pin e poi lo controlli con l'oscilloscopio e vedi selezionando idiversi tipi di clock che succede.

illez 18 agosto 09 23:00

Allur?

Hai risolto?
:rolleyes:

A questo punto voglio sapere cosa era :fiu:

Mrk89 18 agosto 09 23:11

Citazione:

Originalmente inviato da illez (Messaggio 1682810)
Allur?

Hai risolto?
:rolleyes:

A questo punto voglio sapere cosa era :fiu:

Non so ancora quale sia il problema...Però mi son rotto di rileggerlo e rileggerlo!!!
Sto scrivendo un nuovo sorgente modificando alcuni dati da acquisire così da non dover utilizzare interrupt.:)

illez 18 agosto 09 23:17

mmm....
:uhm:

Allora il pic era ok e anche il clock funzionava correttamente.

Era la gestione degli int che aveva qualche problema.
:asd::azz::ph34r:

Mrk89 18 agosto 09 23:20

Citazione:

Originalmente inviato da illez (Messaggio 1682829)
mmm....
:uhm:

Allora il pic era ok e anche il clock funzionava correttamente.

Era la gestione degli int che aveva qualche problema.
:asd::azz::ph34r:

Si Si....Penso che il problema consiste nel fatto che utilizzo quasi tutti gli interrupt contemporaneamente ( cambio di RB4-7; Overflow TMR0; INT esterno su RB0)con la modifica che sto apportando devo aggiungere un integrato esterno, ma almeno uso solo gli interrupt sul cambio di RB4-7

MSchiepp 18 agosto 09 23:39

Citazione:

Originalmente inviato da Mrk89 (Messaggio 1682831)
Si Si....Penso che il problema consiste nel fatto che utilizzo quasi tutti gli interrupt contemporaneamente

Il micro non è una meraviglia, ma può gestire tutti gli interrupt insieme senza problemi, anzi dato che di fatto ha un solo vettore di interrupt puoi organizzarti tu e gestire le priorità come vuoi!
Prima di aggiungere integrati posta il codice che vediamo cosa c'è che gli fa perdere tutto quel tempo!

Michele


Tutti gli orari sono GMT +2. Adesso sono le 23:44.

Basato su: vBulletin versione 3.8.11
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
E' vietata la riproduzione, anche solo in parte, di contenuti e grafica. Copyright 1998/2019 - K-Bits P.I. 09395831002