Buona serata a tutti.
Con l'Arduino Nano, vorrei utilizzare una porta ad 8 bit senza coinvolgere il pin D1 che è dedicato anche al TX dell'Arduino Nano.
In poche parole, posso utilizzare ad esempio i pin dal D2 al D9 per leggere un ingresso a 8 bit che corrisponde ai caratteri ASCII?
Fino ad ora utilizzavo la Porta "D" dal D0 al D7, ma ora non posso farlo poichè, il pin D1 (TX) mi crea dei problemi e non mi permette di modificare il programma nella scheda senza scollegare lo stesso pin D1.
Grazie dell'eventuale aiuto.
>saverio13: Ti segnalo che, nella sezione in lingua Inglese, si può scrivere SOLO in Inglese ... quindi, per favore, la prossima volta presta più attenzione in quale sezione metti i tuoi post; questa volta esso è stato spostato, da un moderatore della sezione di lingua Inglese, nella sezione di lingua Italiana ... la prossima volta potrebbe venire direttamente eliminato :
Arduino Nano monta un ATmega328P ... i pin che puoi leggere in un sol colpo, leggendo la porta fisica, sono SOLO quelli collegati alla stessa porta ... guarda quindi il pdf allegato per vedere quelli che sono sulla stessa porta della MCU (PB, PC, PD).
Mi scuso per l'errore fatto nel postare il mio messaggio nel sito inglese.
Grazie per il PDF sul Nano. Non lo avevo mai visto.
Da quanto capisco, posso usare come porta a 8 bit, i pin che vanno A0 ad A7 come ingresso al Micro per leggere dei caratteri ASCII.
A parte che teoricamente se sono ASCII ne bastano 7 di bit, comunque dipende anche dalla velocità con cui i dati arrivano. Se hai una porta parallela (perché in sostanza parliam di questo) non hai magari anche un pin che indichi la presenza di un dato valido? Perché altrimenti come fai a capire cosa leggere (ossia quando)?
... mmm ... purtroppo noto che, almeno sulla Nano, l'unica porta che ha 8 bit accessibili è PD0..7, le altre non mi sembra mettona a dispoizione tutti gli 8 bit possibili (PB0..5, PC0..5, PC6 è il reset)
gpb01:
... mmm ... purtroppo noto che, almeno sulla Nano, l'unica porta che ha 8 bit accessibili è PD0..7
Io penso che il problema di leggere "contemporaneamente" più pin sia prima da comprendere, perché non ha senso dire che si vogliono ricevere caratteri ASCII da una porta parallela senza un minimo di handshake/timing, e/o capire con quale velocità cambiano i dati, come dicevo nel mio post precedente (#4)... Io attenderei di sentire l'OP.
Mi sta girando la testa. :o Non trovo la risposta che ho fatto qualche minuto fa. E' forse nel sito inglese?
Nella mio post precedente, sparito, ho scritto che mi sembra di capire che la via più facile è ritornare al semplice micro ATmega328.
Comunque nella lettura dei caratteri ci sono 2 pin per il Busy e lo Strobe.
saverio13:
Comunque nella lettura dei caratteri ci sono 2 pin per il Busy e lo Strobe.
Ah, ecco, ora va un po' meglio, immaginavo che avessi lo Strobe ed il Busy (che comunque è in uscita, non in ingresso..).
Ma quindi sono 8 + 2 di handshake o 6 + 2? Da cosa stai ricevendo i dati? Hai le specifiche della comunicazione?
In teoria tu devi solo attendere l'impulso dello Strobe a LOW, a quel punto leggi i bit dati, entro il tempo specificato dai requisiti (che devi conoscere). Il Busy lo userai tu se Arduino deve fare qualcosa e non deve poter ricevere dati.
gpb01:
... dipende ... tutti i caratteri estesi dovi li lasci ?
... oppure tutti i caratteri dei Windows-1252 Extended ASCII.
Qualcuno ha parlato di "ASCII esteso" a mia insaputa?
Ok, allora gli servono 9 pin in input e 1 in output, ma insomma, 8 o 7 bit io non vedo proprio quale sia il problema. A patto che i dati non cambino a velocità troppo elevata, può anche attendere lo Strobe e quando questo è LOW leggere sequenzialmente i vari pin.
E poi non ho capito bene anche che problemi abbia sul Nano a trovare questi 9+1 pin: non può usare da D2 a D9 per i dati, D10 per Strobe e D11 per Busy (o qualsiasi altra combinazione, in base ad eventuali pin già impegnati)?
Non ho problemi nel ricevere i dati ASCII a 8 bit, il tutto funziona già.
Nel ATmega, userei i pin da PD0 a PD7 come port di ingresso.
Questo micro lo volevo evitare per non montarmi il circuito attorno al microprocessore e per non doverlo smontare ad ogni modifica del programma.
docdoc:
E poi non ho capito bene anche che problemi abbia sul Nano a trovare questi 9+1 pin: non può usare da D2 a D9 per i dati, D10 per Strobe e D11 per Busy (o qualsiasi altra combinazione, in base ad eventuali pin già impegnati)?
La mia domanda iniziale era proprio questa. Posso utilizzare i pin da D2 a D9 per leggere i dati in ingresso una volta sola?
Posso dichiarare in qualche modo un port di ingresso D2-D9 ?
Saverio.
Ma l'hai vista la mappatura e i collegamenti delle porte? ... pensi che puoi cambiare i collegmneti fisici? :o
Devi rinunciare ad usare la USB e la porta seriale, allora hai a disposizione PD0..7 ... è l'unica strada sia su Arduino (PDIP) che Arduino Nano (TQFP).
Avervo tra le mani uno schema dei pnl dell'ATmega dove non riporta la posizione della porta seriale TX.
Però sull'Atmega ho a disposizione la porta PB0 - PB7 o sbaglio?
In questo modo evito il pin TX della porta seriale.
Il problema che mi ha fatto chiedere il vostro aiuto è che ho già fatto un circuito che legge i dati di ingresso al micro Nano e li deve inviare ad una stampante seriale termica TTL attraverso il pin 12 del micro.
Il tutto sembra funzionare ma....
Quando correggo il programma, devo scollegare il pin 1 (TX) della porta "D" .
Se faccio funzionare il circuito la stampante funziona correttamente (naturalmente solo i caratteri dove non viene utilizzato il pin D1).
Quando ricollego il pin D1 al circuito per avere tutti i caratteri disponibili, la stampante non da più segni di vita.
Questo è il motivo per il quale ho deciso di cambiare porta d'ingresso dei dati.