lavoro? io mi diverto!!! grazie a voi due che si riparte...ora che ti muovi agilmente nel mondo eab...riesci ad intravedere le potenzialità del PPTEA? Domani provo la tua risoluzione...ma non vorrei che il problema sia un'altro...forse serve il setup...cioè istallazione con setup.exe del compilatore...non vorrei che hai qualche ocx o dll 'sputtanata'. Questo problema ha le ore contate... Bolle
--------------- Chi sa raccontare bene le bugie ha la verità in pugno (by PinoTux). Un risultato se non è ripetibile non esiste (by qqcreafis).
Allego il codice (dove si utilizza la gestione dei vettori) e lo schema per la realizzazione. Poche linee di codice occorrono per gestire un contatore bcd. Quanto prima allego il video.
CODICE
10 REM CONTATORE DIGITALE BCD
20 DIM DIGIT(10) AS WORD ' Vettore di 10 elementi che definisce i bit relativi ai led da accendere dentro la struttura BCD
30 REM NECESSITA FIRMWARE PPTEA V1.0.2 O SUPERIORE
40 REM NECESSITA DI RESISTENZE DI CONNESSIONE CON I LED BCD DI 470 OHM
50 SETIO=0 ' Setta l'I/O tutte in uscita.
60 CADS=0 ' Elimina i convertitori analogico/digitali cioè setta tutte le uscite in digitale
70 DIGIT(1) = 63 ' Bit che definiscono il digit 0
80 DIGIT(2) =6 ' Bit che definiscono il digit 1
90 DIGIT(3) = 91 ' Bit che definiscono il digit 2
100 DIGIT(4) = 79 ' Bit che definiscono il digit 3
110 DIGIT(5) = 102 ' Bit che definiscono il digit 4
120 DIGIT(6) = 109 ' Bit che definiscono il digit 5
130 DIGIT(7) = 125 ' Bit che definiscono il digit 6
140 DIGIT(8) = 7 ' Bit che definiscono il digit 7
150 DIGIT(9)= 127 ' Bit che definiscono il digit 8
160 DIGIT(10) = 111 ' Bit che definiscono il digit 9
170 ATTESA=100 ' Questo valore indica il tempo di velocità incremento cifra
180 C=0
190 IF C=10 then 180
200 GOSUB 260
210 C++
220 WAITMS ATTESA
230 goto 190
240 '-------------------------------------------------------------------------------------------
250 'ROUTINE CHE VISUALIZZA LA CIFRA C MANDATA IN USCITA
260 V= DIGIT(C+1)
270 OUT=V
280 RETURN
290 '-------------------------------------------------------------------------------------------
Bolle
--------------- Chi sa raccontare bene le bugie ha la verità in pugno (by PinoTux). Un risultato se non è ripetibile non esiste (by qqcreafis).
Allego il codice (dove si utilizza la gestione dei vettori) e lo schema per la realizzazione. Poche linee di codice occorrono per gestire una coppia display a led. Quanto è il video:
CODICE
10 REM CONTATORE DIGITALE A DUE CIFRE
20 DIM DIGIT(10) AS WORD ' Vettore di 10 elementi che definisce i bit relativi ai led da accendere il numero sul display
30 REM NECESSITA FIRMWARE PPTEA V1.0.2 O SUPERIORE
40 REM NECESSITA DI RESISTENZE DI CONNESSIONE CON I LED DI 470 OHM
50 SETIO=0 ' Setta l'I/O tutte in uscita.
60 CADS=0 ' Elimina i convertitori analogico/digitali cioè setta tutte le uscite in digitale
70 DIGIT(1) = 63 ' Bit che definiscono il digit 0
80 DIGIT(2) =6 ' Bit che definiscono il digit 1
90 DIGIT(3) = 91 ' Bit che definiscono il digit 2
100 DIGIT(4) = 79 ' Bit che definiscono il digit 3
110 DIGIT(5) = 102 ' Bit che definiscono il digit 4
120 DIGIT(6) = 109 ' Bit che definiscono il digit 5
130 DIGIT(7) = 125 ' Bit che definiscono il digit 6
140 DIGIT(8) = 7 ' Bit che definiscono il digit 7
150 DIGIT(9)= 127 ' Bit che definiscono il digit 8
160 DIGIT(10) = 111 ' Bit che definiscono il digit 9
165 ATTESA=100 ' Questo valore indica il tempo di velocità incremento cifra
170 'INIZIO CODICE CONTATORE
171 C=0
172 D=0
173 GOSUB 260
174 C++
175 WAITMS ATTESA
176 if C=10 then 180
177 if D=10 then 171
178 GOTO 173
180 D++
181 C=0
182 GOTO 176
240 '-------------------------------------------------------------------------------------------
250 'ROUTINE CHE VISUALIZZA LA CIFRA C MANDATA IN USCITA SU DUE
260 V= DIGIT(C+1)
265 F=DIGIT(D+1)
270 OUT=F*128 OR V
280 RETURN
290 '-------------------------------------------------------------------------------------------
Bolle
--------------- Chi sa raccontare bene le bugie ha la verità in pugno (by PinoTux). Un risultato se non è ripetibile non esiste (by qqcreafis).
in termini più esatti il componente che hai usato è un display a led a 7 segmenti
il display BCD è un 7 segmenti con la decodifica integrata del codice: ha solo 4 ingressi dove entra il codice BCD del numero (lettera) da visualizzare visualizza oltre alle 10 cifre anche le lettere AbCdEF
in termini più esatti il componente che hai usato è un display a led a 7 segmenti
il display BCD è un 7 segmenti con la decodifica integrata del codice: ha solo 4 ingressi dove entra il codice BCD del numero (lettera) da visualizzare visualizza oltre alle 10 cifre anche le lettere AbCdEF
Hai ragione...la vecchiaia e la lontananza dai progettini che facevo qualche decennio fa...i display che ho utilizzato avranno 25 anni come passa il tempo....lo correggo stasera quando inserisco i video! Ciao Bolle
--------------- Chi sa raccontare bene le bugie ha la verità in pugno (by PinoTux). Un risultato se non è ripetibile non esiste (by qqcreafis).
Mi è arrivato il pickit2! Stasera conto di collaudarlo...
CITAZIONE
Hai ragione...la vecchiaia e la lontananza dai progettini che facevo qualche decennio fa...i display che ho utilizzato avranno 25 anni come passa il tempo....lo correggo stasera quando inserisco i video!
Quando si usava il cd 4511..
--------------- "Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza" http://iv3gfn.altervista.org/ http://pptea.altervista.org/
oggi installato compilatore EABASIC (v 0.35) su un altro mio portatile:
la finestra si vede bene sia a 1280x800 che a 1024x768
sono molto sorpreso che su quello mio principale ci siano problemi di visualizzazione; è sempre andato benissimo, nei 2 anni di vita, mai dato problemi di nessun tipo ma adesso comincio anch'io a pensare che abbia qualcosa nel sistema operativo fuori posto
installare i driver più recenti (se ci sono) della scheda video potrebbe avere qualche effetto positivo? proverò
@ Bolle: spero che questo problema della visualizzazione non ti abbia fatto perdere troppo tempo; purtroppo questo mio ritardo nel fare un test con il secondo portatile non era evitabile; ci ho potuto rimettere sopra le mani solo oggi, le 2 settimane precedenti a questa ero in ferie e questo PC è rimasto al lavoro; al ritorno ho avuto altre cose da fare con massima priorità e così .....
sono veramente dispiaciuto di averti fatto tribolare inutilmente
@ Bolle: spero che questo problema della visualizzazione non ti abbia fatto perdere troppo tempo;
Spero tu stia scherzando...metterò un setup.exe a dire il vero già ce l'ho ...ma nel forum non entra perchè è troppo grande la dimensione. Vediamo se si tratta di ocx o dll sputannate oppure se continua a non fungere allora è un problema di drivere della scheda grafica.Cerco di trovare mettere il setup nel sito del forum.
Ciao
--------------- Chi sa raccontare bene le bugie ha la verità in pugno (by PinoTux). Un risultato se non è ripetibile non esiste (by qqcreafis).
nelle note per l'uso dell'EABASIC necessita puntualizzare che per le istruzioni dopo il THEN (nell'istruzione IF) si intende il numero di riga dell'istruzione, non l'istruzione stessa.
123 IF A THEN 234 ...... ...... 234 A=0 ...... questo è il modo corretto di farlo
questo invece non va bene: ...... 345 IF A THEN A=0 ......
abituato con altri linguaggi di programmazione, dove è possibile dopo il THEN eseguire un'operazione sulle / con le variabili, questa particolarità mi ha fatto perdere un po' di tempo.
se vuoi, il setup.exe mandalo per posta elettronica
facendo altri test con il PPTEA ho potuto notare che l'ingresso non connesso viene rilevato come un 1 logico dal PIC (controintuitivamente per il profano)
quindi se l'1 logico è associato ad una tensione alta proveniente dalla periferia è necessario tenere basso l'ingresso (pull down) quando la periferia è in stato di alta impedenza, o comunque la periferia non porta espressamente una tensione di massa, come 0 logico; io l'ho fatto mettendo una resistenza da 10Kohm tra ingresso e massa: va bene quando in input pongo un +5V (con una resistenza da 1Kohm in serie) l'ingresso va regolarmente ad 1 logico.
mi sono spiegato comprensibilmente? se NO: chiedete chiarimenti; cercherò parole più chiare o farò uno schema esplicativo.
è una questione prettamente tecnica: negli schemi di esempio il problema non si porrà perchè saranno già stati progettati in modo da funzionare, con le resistenze di pull down presenti se necessarie;
nelle note per l'uso dell'EABASIC necessita puntualizzare che per le istruzioni dopo il THEN (nell'istruzione IF) si intende il numero di riga dell'istruzione, non l'istruzione stessa.
123 IF A THEN 234 ...... ...... 234 A=0 ...... questo è il modo corretto di farlo
questo invece non va bene: ...... 345 IF A THEN A=0 ......
Si, è esattamente come dici...nel manuale dovrebbe essere specificato: IF expr THEN NLINEA [else NLINEA] poi verifico.
CITAZIONE (mixtrb @ 3/8/2011, 20:37)
se vuoi, il setup.exe mandalo per posta elettronica
Si, lo mando sia a te che a Pino che provvederà a metterlo in linea.
CITAZIONE (mixtrb @ 5/8/2011, 18:31)
facendo altri test con il PPTEA ho potuto notare che l'ingresso non connesso viene rilevato come un 1 logico dal PIC (controintuitivamente per il profano)
quindi se l'1 logico è associato ad una tensione alta proveniente dalla periferia è necessario tenere basso l'ingresso (pull down) quando la periferia è in stato di alta impedenza, o comunque la periferia non porta espressamente una tensione di massa, come 0 logico; io l'ho fatto mettendo una resistenza da 10Kohm tra ingresso e massa: va bene quando in input pongo un +5V (con una resistenza da 1Kohm in serie) l'ingresso va regolarmente ad 1 logico.
mi sono spiegato comprensibilmente? se NO: chiedete chiarimenti; cercherò parole più chiare o farò uno schema esplicativo.
è una questione prettamente tecnica: negli schemi di esempio il problema non si porrà perchè saranno già stati progettati in modo da funzionare, con le resistenze di pull down presenti se necessarie;
Vediamo se ricordo bene, poi ti confermo...gli ingressi dal bit 8 al bit 15 sono in pull up mentre gli ingressi dal bit0 al bit7 sono ingressi che devono essere forzati altrimenti il valore non è definito. Ad esempio nell'elimina code non ho messo nessuna resistenza ( ingresso bit 15 settato come ingresso) e il pulsante quando viene premuto forza a massa...in questo modo si risparmia la resistenza come componente. Spero di essere stato chiaro... Bolle
--------------- Chi sa raccontare bene le bugie ha la verità in pugno (by PinoTux). Un risultato se non è ripetibile non esiste (by qqcreafis).
altri test sulla falsariga di quelli precedenti, fatti per testare le caratteristiche degli ingressi, mi stanno dando indicazioni contraddittorie
(ammesso che il mio PIC da "battaglia" funzioni ancora perfettamente; cosa di cui comincio a non essere troppo sicuro).
cmq, stanotte, se tutto va bene, farò ulteriori test e saprò essere più preciso; nel frattempo ho riprogrammato il PIC sempre con il PPTEA ver 1.0.2 ed i test sono adesso risultati corretti lascio quello che segue per riferimento futuro
usando una procedura del tipo:
CODICE
........ ........ Nriga TEST=INP AND 8 ______'acquisizione stato del 4° ingresso del PIC/PPTEA N+10 IF TEST THEN NrigaX __ 'elaborazione condizionata, se 4° ingresso è = 1, da NrigaX N+20 fai qualcosa __________ 'elaborazione se invece 4° input = 0 ........ ........ NrigaX OUT=&HF00 _________ ' attivo uscite selezionate, per 500ms, poi le spengo NX+10 WAITMS 500 NX+20 OUT=0 ........ ........
il problema che rilevo è una mancata corrispondenza tra l'ingresso teorico che mi sarei aspettato (pin PIC n°5 / bit PPTEA n°4) e quello reale: il PIC/PPTEA hardware funziona correttamente con quel programma ma con l'ingresso pin n°4 / bit PPTEA n°3
invece modificando la procedura così:
CODICE
Nriga TEST=INP AND 16 ______'acquisizione stato del 5° ingresso del PIC/PPTEA
il pin del PIC che lavora è il n°6 (bit PPTEA n°4) come mi aspetterei
quando scrivo che lavora un pin significa: ho fatto la verifica leggendo la tensione sul pin fisico del PIC: non ci sono errori di cablaggio.
nel resto del programma utilizzo il CADS1 pin2 / bit0 e funziona come deve; nel programma non ho fatto modifiche di configurazione dell'uso dei pin (SETIO) o del numero CADS compilatore EABASIC ver 0.35 firmware (.hex) PPTEA ver 1.0.2
l'ultimo test si è concluso con il mancato funzionamento totale del PPTEA, nessun segno di vita sul bus USB era tardi ed ero stanco, così ho piantato lì; vedrò stanotte.
Si, è esattamente come dici...nel manuale dovrebbe essere specificato: IF expr THEN NLINEA [else NLINEA] poi verifico.
sono un po' scettico sull'uso dell' ELSE , a questo punto se mandi l'esecuzione del programma ad una riga (THEN) oppure ad un'altra (ELSE), e se la riga ELSE non è quella successiva al THEN (in questo caso: istruzione inutile) quando mai potrà essere elaborata l'istruzione successiva al THEN?
solo se indirizzata esternamente (GOTO o GOSUB)
se è così mi appare una struttura del programma un po' "contorta"
sarebbe andato bene l' ELSE se fosse stato usato per eseguire elaborazioni sulle variabili, ma se è solo di indirizzamento, potrebbe essere fonte di complicazioni;
a mio modestissimo parere meglio proseguire sempre con la riga dopo l' IF , in caso di mancata corrispondenza della condizione
cosa che si può ottenere anche così com'è adesso, indicando nell' IF (verificato) la riga successiva come destinazione (un salto nullo) e mettendo, in questo caso obbligatoriamente, l' ELSE ad una riga diversa