Buon giorno a tutti, mi chiamo andrea, lavoro a Trieste, ma son di udine ed ho la mia bella età.
Ho da un pò aquistato arduino uno, e devo dire che è un bel oggetino, e mi sto divertendo a imparare a programmarlo, dovrei aver aquistato pure il libro..ma non arriva bho, cosi magari chiederò a voi che certamente ne sapete più di me (io son elettronico e non molto informatico :) ) alcune cose, magari che a voi sembreranno banali e stupide...ma abbiate pazienza.
la prima domanda che vorei porvi è la seguente:
se devo settare per esempio alti più uscite contemporaneamente (es 13, 12, 11 ,10) devo scrivere digitalWrite(13, HIGH),...., digitalWire (10, HIGH) ovvero bit per bit, oppure ce un istruzione o cumunque un modo per fare il tutto senza dover ogni volta riscrivere tutto?
si quelal con il for mi era venuta in mente mente scrivevo prima :)
Pensavo ci fosse magari un "qualcosa" magari che ne so passando un byte (0x0000000) e far si che l'intero set vada a zero, ma senza usare "trucchetti", si insomma gia pronto all'uso (è sulo una curiosità ecco grazie :D
I pin del microcontrollore sono mappati internamente a dei registri a 8 bit che si chiamano PORTA PORTB PORTC
se scrivi un numero in PORTB modifichi contemporaneamente tutti i pin dall'8 al13
Credo che le funzioni per agire sui singoli bit esistano "a basso livello", ma questo livello è "nascosto" dalle librerie Arduino per semplificare la programmazione; cioe', invece di ricordarti su quale registro sta un pin, basta che ti ricordi il numero del pin, e ci pensa la libreria ad accedere al bit giusto del registro giusto.
Quindi probabilmente se cerchi setPin() nei sorgenti, trovi le funzioni primitive su cui si basa.
[quote author=Massimo Banzi link=topic=52432.msg374245#msg374245 date=1297867098]
bisogna andare "sotto il cofano" di arduino.
I pin del microcontrollore sono mappati internamente a dei registri a 8 bit che si chiamano PORTA PORTB PORTC
se scrivi un numero in PORTB modifichi contemporaneamente tutti i pin dall'8 al13
m
[/quote]
Si mi ero espresso da cani, ma era proprio questo che volevo sapere (e cercavo)specie come settare contemporaneamente (senza ritardi) i vari bit)....wonderful!! e mi interessava molto :)
un occhio a quanto linkato me lo darò volentieri grazie 1000 a tutti
by Andrea
Facciamo un esempio:
Se vuoi mangiare i tortellini con la ricotta puoi comprarli in negozio e farteli con la salvia.
Puoi anche comprare farina, uova, ricotta, spinaci no, i spinaci no, li prendi dal giardino dove li stai coltivando giá da primavera, sale ecc e farti prima la pasta, il riempimento e poi i tortellini prima di bollirli.
Nel primo caso é semplice, ma devi prendere quello che hanno nel negozio (quello di rio gianni che non ti piacciono tanto).
Nel secondo caso sei lí mezza giornata per fare i tortellini con la antica e segreta ricetta di Tua nonna ma sei libero di scegliere tutto a Tuo piacere.
Il C++ di Arduino Ti da la possibilitá di mettere un uscita su HIGH o LOW senza conoscere tutto il retroscena. Cosa buona per chi inizia o non é interessato ai particolari.
Puoi anche usare i comandi a basso livello ( basso inteso vicino al hardware del controller) e avere piú libertá di schelta ma anche la necessitá di sapre in modo piú dettagliato cosa devi fare. Devi anche sapere manipolare i singoli bit per accendere un solo pin.
Tutti 2 le possibilitá sono valide, ma non per tutti.
si si certo, è ovvio che manipolare i bit è cosa più complessa (un pò mi ricordo dello z80 che studiai a scuola credo nel neolitico...) solo che a volte mi pongo delle domande e fin che non trovo una risposta non so darmi pace (vedessi al lavoro) di solito passa tempo ma alla fine la trovo.
E la risposta di MAssimo è stata illuminate! XD
è chiaro che manipolare i bit cosi è cosa un pò più complessa (ma eccitante) ma l'importante è che si possa fare e che sia documentato.
Approposito (domanda fuori post) io avevo ordinato il librone di arduino a novembre/dicembre ma ancora dovel l'ho orinato dicono che son in attesa che arrivi dal fornitore o roba del genere...devo preoccuparmi? Non ce ancora o non lo hanno loro?
buona giornata a tutti.