Ciao,
ho un pin del uP che dovrebbe avere doppia funzione... input e output digitale.. Il funzionamento cambia in base al software caricato. Come possono convivere le due funzionalità?
Qualche brillante idea?
Ciao,
ho un pin del uP che dovrebbe avere doppia funzione... input e output digitale.. Il funzionamento cambia in base al software caricato. Come possono convivere le due funzionalità?
Qualche brillante idea?
Conscio delle conseguenze, "Seru" un bel dì scrisse:
Se non ci dici COME verrà veramente utilizzato tale pin sarà dura risponderti... A livello software è una bazzecola, a livello hardware dipenderà da quel che intendi farci...
Seru:
Brillante e quasi antica. Tutti i microcontrollori hanno la maggior parte dei pin che possono essere programmati sia come entrata che come uscita. Diciamo che la circuiteria di input è sempre abilitata (anche se nei processori più evoluti come gli AVR certi input possono essere "spenti" per avere minori correnti parassite nel caso vengano usati come entrate analogiche), mentre quella di output può essere disabilitata. Con i C-mos, dato che c'è un transistor che "tira" verso massa ed uno verso l'alimentazione è banale farlo: basta "spegnerli" entrambi.
Devi abituarti all'idea che il software, in realtà, *può* danneggiare l'hardware.
F. Bertolazzi:
Anzi, ripensando at 74125, molto antica.
come input digitale 0-5V, cmq filtrato a 1KHz e come output 0-5V da 10mA
E' semplicissimo! Basta ricavare da quell'unico pin una UART software half-duplex alternando il flusso dei dati commutando opportunamente l'I/O del pin. Su questa linea si collegheranno le linee TX-RX di un altro microcontrollore col compito di espandere i pin, utilizzando i suoi. Con un banale protocollo ed un impegno ridicolo si risolve il problema.
Credo...
Piccio.
Conscio delle conseguenze, "Seru" un bel dì scrisse:
Non mi hai capito... COME VERRA' COLLEGATO nel circuito??? Tieni conto che il circuito facente capo all'input influirà su quello dell'outpu e viceversa... Solitamente NON SI USA lo stesso piedino per fare DUE COSE DIVERSE su due SEGNALI DIVERSI.
"Seru" ha scritto nel messaggio news:4b0439a8$0$638$ snipped-for-privacy@reader4.news.tin.it...
Con degli open collector , se è ininfluente che quando hai un input logico ti si ripresenti anche sull output usa delle porte come 74LCX07 non invertente open collector e ideali per questi giochini, se invece vuoi creare un'interdizione la cosa si complica leggermente di più però partirei da ds75451 o 452 secondo se deve essere rigorosamente non invertente o anche invertente, questa famiglia ha due ingressi per ogni porta e uscita open collector con un abile giochetto hardware puoi inibirli a tua scelta:-)) ciao Rusty
nel primo caso abiliti i tristate come ingresso, nell'altro come uscita: a questo punto rimane solo rispettivamente da leggere o scrivere il latch del pin. Per il pic si tratta semplicemente di impostare il bit opportuno del registro TRIS a 1 per avere un ingresso e a 0 per avere un'uscita. Attento:
10mA sono una corrente piuttosto elevata per un pin di un micro, anche se CMOS : leggi bene il datasheet, e attento alle specifiche di sink e source. Immagino che sia per poter usare lo stesso micro in due circuiti diversi. Se invece è per avere un I/O devi spiegarci un po' meglio di cosa si tratta!Per il filtro a 1kHz non ho capito cosa intendi. Per fare un filtro digitale "antirimbalzo" a 1kHz basta semplicemente che leggi l'ingresso ogni ms e te ne sbatti di cosa accade nel frattempo. Un po' meglio leggerlo ogni mezzo ms e confrontarlo con la lettura precedente :) Tutto questo ovviamente se stiamo parlando di un filtro passa-basso.
Ciao CG
E' quello che chiedo.. come devo costuire l'HW attorno? Che il pin possa cambiare direzione via sw è palese. ma l'hw esterno come deve essere fatto?
Si.. ma son a corto di pins..
Non mi son spiegato.. mi serve l'Hardware fuori dal micro per realizzare:
un input digitale 0-5V, cmq filtrato a 1KHz oppure un output 0-5V da 10mA
il dutto deve provenire da uno stesso pin a connettore, e insistere sullo stesso pin del uP
se il micro è alimentato a 5V e la massa è la stessa di quella dell'ingresso non devi fare niente... basta collegarlo.
Se hai bisogno di squadrare il segnale, per esempio con un trigger di schmitt (non mi dilungo sul filtro che non ha senso farlo esterno ma basta qualche riga di codice come ti ho descritto nell'altro mio post), allora dovrai avere l'accortezza di usare qualcosa con uscita open collector (oppure pilotare un transistor). Se hai bisogno di aumentare anche la corrente di uscita devi mettere un altro transistor o due. Vista la situazione assai strana, magari per buttar giù uno schema "utilizzabile" dovresti dirci cosa c'è dopo al micro...
Ciao CG
Conscio delle conseguenze, "Seru" un bel dì scrisse:
La vedo duretta... Il segnale di input va per forza di cose ad influenzare quello di output (a meno che i due segnali non siano contemporanei).
Rusty:
Dice che è a corto di pin. Forse un monostabile, ma, a quel punto, meglio la soluzione di Piccio, oppure, meglio ancora, cambiare modello di controller. Oppure, se proprio non ne esiste uno con più pin (che sia un Basic Stamp o simili?), usare uno shift register e trasferirci tutti gli output possibili.
Mah, a me tutta la faccenda suona assai strana.
"F. Bertolazzi" ha scritto nel messaggio news:i6xxxj72oh37$.1xd3ky91w5zzw$. snipped-for-privacy@40tude.net...
La mia soluzione non comporta usare pin in più:-) Open your mind, quando hai uno stato all'ingresso della scheda lo porti al micro attraverso un open collector poi lo porti a una inibizione della porta d'uscita, su dai un po di logica cablate come ai vecchi tempi, tutti questi micro vi stanno rammollendo:-))
Noo guarda che si fa normalmente:-) ciao Rusty
Si.. ma non ho capito...
"Seru" ha scritto nel messaggio news:4b06f06e$0$34597$ snipped-for-privacy@reader1.news.tin.it...
Due stadi "buffer" uno in ingresso alla scheda, ovviamente la sua uscita deve essere open collector, la porti al pin in-out del micro e ci metti una resistenza di pull-up diciamo da 4,7K dallo stesso nodo prelevi l'uscita, e la porti fuori tramite un secondo "buffer", in questo modo è ovvio che quando l'ingresso cambia di stato questo cambiamento arriva al micro ma viene specchiato sull'uscita, se questa situazione non ti va bene devi fare in modo che i due buffer sia interdicibili, ovvero quando l'IN passa da 1 a
0 (di solito la logica degli ingressi è questa) la variazione viene si portata all'ingresso del micro, ma l'ingresso PRIMA del buffer input viene usato cnahe per interdire il buffer di output, si può applicare la cose anche nella direzione opposta, ovvero quando il micro porta il suo pin I/O in questo momento usato come O a 0 interdice l'ingresso, ovviamente a monte del buffer di input, altrimenti ti "looppi" e non funziona nulla! Non pensare che si faccia con due componenti incrociati servono svariate porte logiche, devi disegnarti una piccola rete logica o le famose logiche cablate che negli anni '70 e buona parte dell'80 sono state il pane degli elettronici, non ricordi quelle belle schede piene zeppe di TTL:-)) ciao RustyHave something to add? Share your thoughts — no account required.
Ask the community — no account required