Ho un dubbio, ma i pin del ATmega328P corrispondenti ai pin di I/O PB6 e PB7, usati su Arduino UNO per il quarzo, nel caso di standalone con oscillatore interno (... e quindi con quei pin liberi) come si indicano nel IDE Arduino (... ovvero nelle istruzioni che si riferiscono ai pin digitali) ? Perché D0 .. D13, A0(14) .. A7(21) mappano tutti gli altri pin, ma quei due ... non li trovo ...
Possono essere usati solo accedendo direttamente alle porte con PIN e PORT ?
Possono essere usati solo accedendo direttamente alle porte con PIN e PORT ?
Da quello che mi ricordo non c'è modo di usare digitalWrite con quei pin, come pure il pin RST.
Per aggiungerli tocca modificare l'array che viene salvato in FLASH, potrebbe anche essere una idea quella di aggiungerli
solo nel caso sia stata definita una #define RCCLOCK. Dovrebbe funzionare visto che il core viene compilato per ogni progetto.
Grazie Mauro,
ne avevo il sospetto .. per questo chiedevo ...
Mah ... senza mettere mano a pins_arduino.h, faccio prima ad usare direttamente PIN e PORT ... però si potrebbe inserire un suggerimento su github di definirli comunque tutti ...
... Paoloooooooo dove sei ? Tu che sei di casa in quei lidi, suggerisci tu ?
Il fatto è che deve rispettare la numerazione attuale scritta sulle varie schede arduino, e quindi si può solo aggiungere due elementi all'array in flash. Sicuramente stai usando uno standalone, perché su arduino board non credo che i due pin in questione siano collegati agli header.
Mah ... senza mettere mano a pins_arduino.h, faccio prima ad usare direttamente PIN e PORT ... però si potrebbe inserire un suggerimento su github di definirli comunque tutti ...
Si certamente, ma si perde la possibilità/comodità di usare pinMode, digitalWrite e digitalRead e ti ritrovi con codice di basso livello mischiato con codice di alto livello, vero che se vuoi poi risolvere in mille modi ma a quel punto per mantenere continuità conviene modificare pins_arduino.h (sempre che sia li che si deve mettere mani).
Non mi chiedere di fare la modifica perché neanche l'ide ho.
Interessante come "discorso". Ma le istruzioni PIN e PORT, volendole utilizzare nell'ide, cosa devo cercare su "internet"?
Il datasheet spiega tutti e tre i registri, DDRx, PINx e PORTx, dove x è da sostituire con A, B, C ecc.
Nota che sono nomi simbolici equivalenti all'indirizzo di memoria in cui sono mappati le periferiche I/O.
Trovi la corrispondenza tra nomi di registro e indirizzo nel datasheet.
PS: puoi provare a cercare "avr io register"
Ciao.
@gpb01
Dall'avatar hai almeno 30 anni più di me, ma scrivi 30 volte più veloce di me.
Come si spiega sta cosa?
gpb01:
Mmmm ... a parte studiarti il datasheet ... leggi QUI
Guglielmo
Sullo studio del datasheet non dovrei avere problemi, forse, quello che mi "dimentico" quasi sempre sarebbe come inserire i comandi "diretti" all'interno del ide...
Resta comunque il fatto che, nello specifico serve solo in caso di standalone senza quarzo.
Sullo studio del datasheet non dovrei avere problemi, forse, quello che mi "dimentico" quasi sempre sarebbe come inserire i comandi "diretti" all'interno del ide...
Resta comunque il fatto che, nello specifico serve solo in caso di standalone senza quarzo.
PS:Visto che il forum non mi fa fare logout, rispondo.
Dimentico anche io, specie come abilitare la pull-up.
Comunque:
DDRB |= _BV(PB6); // pin come output
DDRB |= ~_BV(PB6); // pin come imput
Mentre per abilitare la pull-up mi pare che si deve usare il registro PIN in scrittura, mentre normalmente si legge da questo registro.
Per scrivere su un registro (ma anche su una variabile):
PORTB |= _BV(PB5) | _BV(PB6); // accende bit 0 e 1 di PORTB
MauroTec: @gpb01
Dall'avatar hai almeno 30 anni più di me, ma scrivi 30 volte più veloce di me.
Come si spiega sta cosa?
... non so quanti ne hai tu, io 59 ... e ... l'esercizio ginnico che ho fatto di più per tutta la vita è stato quello ... della dita sulla tastiera (... o sul pulsante di scatto della macchina fotografica)