TardoFreak ha scritto:Non puoi fare un programma sperando che questo si fermi alla fine perché dai per scontato che un programma abbia un inzio ed una fine.
I programmi per i microcontrollori non si scrivono così.
Non basta scrivere un commento "fine main" per immaginare che il programma di debba ... fermare senza problemi e finirla lì.
I programmi per i micro non si possono fermare così, alla cavolo
su questo ti dò ragione, infatti in tutti i miei programmi eseguo ciò che mi serve in un ciclo while(1), qui mi interessava sapere se il PIC trasmetteva correttamente quella sequenza di bit al display; penso che concordi con me se affermo che il display, una volta ricevuta l'informazione, la visualizza fino a nuovo ordine.
Paolino ha scritto:- Codice: Seleziona tutto
#define LCD_RS PORTAbits.RA0 // Register select
#define LCD_EN LATAbits.RA1 // Enable
#define LCD_D4 LATAbits.RA2 // LCD data 4
#define LCD_D5 LATAbits.RA3 // LCD data 5
#define LCD_D6 LATAbits.RA4 // LCD data 6
#define LCD_D7 LATAbits.RA5 // LCD data 7
Ho poi visto che il compilatore non mi permette di usare questi nomi, nel file pic18f1320.h la struttura per i LATCH è diversa dai PORT, per cui devo chiamare i singoli canali "LATAbits.LATA1" eccetera.
Ti ringrazio comunque per le dritte, questo tuo consiglio mi ha fatto funzionare il circuito
- Codice: Seleziona tutto
/* Configuration bits */
#pragma config OSC = INTIO2
#pragma config WDT = OFF
#pragma config LVP = OFF
nonostante io abbia scelto di non impostarli perché pensavo che bastasse impostare OSCCON e vedere il led lampeggiare a tempo.
Dopo svariate prove ho visto che RB0 ha preso a funzionare, forse era un problema di contatto elettrico, mentre RA4 ed RA5 non hanno funzionato...ho poi capito il perché leggendo approfonditamente il datasheet:
- RA4 è di tipo open-drain, difatti gli ho poi fatto pilotare il catodo del led ed ha funzionato, il datashhet dice infatti "Input/output port pin or external clock input for Timer0. Output is open-drain type."
- RA5 in funzione di porta digitale può solo servire da ingresso, nel datasheet viene specificato "Master Clear input or programming voltage input (if MCLR is enabled); input only port pin or programming voltage input (if MCLR is disabled)."
ho invece avuto una perplessità su questo tuo consiglio
ADCON1 = 0xEF; /* Tutti i pin di PORTA e PORTB posti in digitale */
0xEF significa 0b11101111 , quindi così imposto solo AN4 in analogico???
JAndrea ha scritto:Quanto tempo bisogna aspettare nella modalità a 4 bit tra l' invio di un nibble e l' altro
da quanto ho capito sul datasheet del HD44780 occorre attendere "almeno" 4.1 ms la prima volta e 100ns la seconda. Io ho impostato dei tempi doppi.