|
|
|
||||||||
| Arcade | Registrazione | Blogs | Regolamento | Feedback | FAQ | Lista Utenti | Calendario | Segna come Letti |
| Ultimi 5 blog pubblicati su PcTuner Blog | ||||||
|
||||||
![]() |
|
|
Strumenti Discussione | Modalità Visualizzazione |
|
|
#1 |
|
Registered User
|
problema con PIC18F2685
Ciao a tutti,
ho un problema con il funzionamento di un pic, il 18F2685. Per programmarlo utilizzo un PICKIT2 e il rispettivo software (v2.61). Per scrivere il codice utilizzo MPLAB e HI-TECH PICC-18 per scrivere in C. Con altri PIC non ho problemi quindi escludo errori di programmazione. Il problema è questo: usando il simulatore Proteus ISIS 7, il circuito/programma funziona perfettamente. E' un circuito che si occupa di far accendere/spegnere dei led collegati tramite registri 74HC595 alla pressione dei rispettivi pulsanti collegati tramite registri 74HC165. Sulla pcb però il programma non da segni di vita. La pcb è stata testata e non ha errori, ha gli stessi collegamenti della simulazione. Inoltre cortocircuitando i pin del pic, è possibile accendere i led manualmente. Ho provato anche a cancellare tutto il codice e programmarlo con un semplice loop che fa lampeggiare un led collegato direttamente al pic, senza registri di mezzo, ma nulla. Ho pensato che l'errore potesse risiedere nella configurazione dei bit del pic. Li ho configurati nel codice in questo modo: __CONFIG(1,XT); __CONFIG(2,BORDIS & WDTDIS); __CONFIG(4,DEBUGDIS & LVPEN & STVRDIS); __CONFIG(5,UNPROTECT); __CONFIG(6,WRTEN); Non ho bisogno di nessuna feature tranne del fatto che voglio utilizzare l'oscillatore esterno (a proposito, non sono riuscito a capire se va bene da 4MHZ per questo PIC). Utilizzo appunto un 4MHZ con i 2 condensatori relativi. Secondo voi dove sta il problema? Potrebbe essere un problema di alimentazione, ovvero non c'è abbastanza corrente per alimentare tutti i led + il pic? (ho notato che al tatto il regolatore 7805 e il relativo condensatore scaldano molto). |
|
|
|
|
|
#2 | ||||||||
|
Credendo Vites
|
Quote:
Quote:
Quote:
Quote:
Quote:
Quote:
Come è possibile che non hai usato i registri ma poco sopra dici che funziona? Quote:
Quote:
Quanti led sono? E soprattutto le loro specifiche tecniche?
Il tempo è il miglior maestro, purtroppo uccide tutti i suoi allievi.
|
||||||||
|
|
|
|
|
#3 |
|
Clokker Strissiante
|
Avendo esperienza sia con il simulatore da te usato e con il PIC 18f4685 (fratello maggiore)
__________________ti posso dire che il simulatore non va benissimo. Mi è già successo che con proteus tutto funziona, monti la breadboard e non succede nulla.... Posta il codice, per far partire quel micro ci ho smadonnato anche io, si tratta solo di disabilitare alcune periferiche che probabilmente non usi. Non capisco perchè usi un micro con 96k di rom per accendere qualche led.......
Esistono solo 2 cose infinite: L'universo e la stupidità umana
|
|
|
|
|
|
#4 |
|
Registered User
|
ciao, scusate per il ritardo nella risposta..
per errori di programmazione intendevo errori nel programmatore, non intendevo errori di codice, in quanto quella è sicuramente la causa del problema.. ho escluso dalla pcb tutte le periferiche accessorie, ho semplicemente collegato un led+resistenza su RC5.. Se tolgo il pic dal socket e collego a 5V il pin dove andrebbe RC5, il led si accende. ecco il codice: Codice:
#include <htc.h>
#define _XTAL_FREQ 4000000
#define FOSC 4000000L
__CONFIG(1,XT);
__CONFIG(2,BORDIS & WDTDIS);
__CONFIG(4,DEBUGDIS & LVPEN & STVRDIS);
__CONFIG(5,UNPROTECT);
__CONFIG(6,WRTEN);
main (void)
{
ADCON1 = 0x0F;
TRISA = 0b00000000;
TRISB = 0b11001000;
TRISC = 0b10000000;
GIE = 1;
PEIE = 1;
RCIE = 1;
RBIE = 1;
TMR0IE = 0;
TMR0ON = 1;
T08BIT = 1;
T0CS = 0;
PSA = 0;
T0PS2 = 0;
T0PS1 = 0;
T0PS0 = 1;
TMR0 = 8;
while(1)
{
RC5 = 1;
delay(1000);
RC5 = 0;
delay(1000);
}
}
![]() ps. non uso un pic da 96k di rom solo per accendere qualche led..uso questo pic perchè questo ha 1024 di eeprom e io bisogno di quasi del 90% e non avevo spazio su pcb per aggiungere moduli aggiuntivi..quello dei led è solo un test Ultima Modifica di Dimitree : 24-07-2012 12.08.20. |
|
|
|
|
|
#5 |
|
Registered User
|
Tutte quelle attivazioni di interrupt non usati potrebbero causarti dei problemi.
__________________Non dovrebbe servire perché RC5 non è un analogico ma io metterei gli ingressi in digitale: ADCON1=0b00001111
Camillo
Internet ti fa vedere tutto ma non ti fa toccare niente. (Camillo Ferrari) |
|
|
|
|
|
#6 |
|
Registered User
|
ti ringrazio, provo appena possibile.
in realtà però quegli interrupt verranno usati nel codice vero e proprio (subito dopo l'attivazione, al posto del while quindi)..devo quindi attivarli prima o poi..come posso risolvere quindi? |
|
|
|
|
|
#7 | |
|
Registered User
|
Quote:
GIE va attivato per ultimo dopo tutti gli altri.
Camillo
Internet ti fa vedere tutto ma non ti fa toccare niente. (Camillo Ferrari) |
|
|
|
|
|
|
#8 | |
|
Registered User
|
ho provato ad utilizzare un PIC16F876A al posto dell'altro pic..avendo stesso pinout.
Quote:
Ora il led lampeggia, ma lampeggia quando gli pare: invece di 100ms, a volte sta acceso 1 secondo, a volte un attimo, a volte anche 10 secondi.. secondo voi è un problema di circuito? non ho uno schema, ma ho semplicemente collegato i pin di alimentazione, il cristallo da 4mhz ai relativi pin (con i 2 condensatori), la resistenza su MCLR come al solito e il led su RC5 tramite una resistenza. edit: ho notato che toccando il cristallo il led lampeggia molto più regolarmente e velocemente (anche se non a 100ms). potrebbe essere quindi un problema di cristallo? vado subito a procurarmene un altro Ultima Modifica di Dimitree : 02-08-2012 15.32.08. |
|
|
|
|
![]() |
Per le vostre immagini su questo forum potete usare PcTunerUp! Iscriviti gratuitamente alla nostra newsletter. |
| Utenti attualmente attivi che stanno leggendo questa discussione: 1 (0 utenti e 1 visitatori) | |
| Strumenti Discussione | |
| Modalità Visualizzazione | |
|
|