Ciao a tutti.
Su questo modello ci sono due ADC aggiuntivi rispetto al modello in DIP e sono appunto ADC6(pin19) e ADC7(pin22).
Siccome di SW capisco poco volevo capire se per poterli utilizzare bastava semplicemente chiamarli con l'analogRead ,ad esempio
int a=analogRead(A6);
Non riesco a capire se sono previsti come pin nell'ide oppure se per poterli usare bisogna fare modifiche in qualche file.
Ho provato a fare uno sketch con un'analogRead(A6) e poi anche con A7 e li compila mentre se provo con A8 mi da l'errore,di conseguenza mi viene da pensare che siano previsti ma sono miei supposizioni.
Mi sapete aiutare ?
Ciao e grazie
Non ci sono due ADC aggiuntivi così come anche nell'ATMega328P dip ce n'è uno solo. Sono delle porte multiplexate con l'unico ADC presente, ovvero se usi l'ADC con un pin non puoi utilizzarlo in contemporanea con un'altro
@flz
Si,so del multiplexer,intendevo che c'erano due pin in più,comunque grazie della puntualizzazione @PaoloP
Non conoscevo questa cosa.....interessante,approfondirò @Astro
Ok,grazie....mi giravano le scatole fare una schedina apposta solo per capire 8)
Quindi,se volessi usare questi ulteriori pin analogici come digitali,basterà dichiararli come pinMode(20,OUTPUT) per il pin A6 e pinMode(21,OUTPUT) per il pin A7?
tonid:
Quindi,se volessi usare questi ulteriori pin analogici come digitali,basterà dichiararli come pinMode(20,OUTPUT) per il pin A6 e pinMode(21,OUTPUT) per il pin A7?
Non puoi usare quei pin come gpio, sono esclusivamente ingressi ADC e sono presenti solo negli Atmega 328 in case tqfp32.
Mi sembra che non puoi usarli come pin digitali, sono proprio solo collegati al mux dell'ADC
Il discorso dell'A8 per leggere la temperatura mi sembra che non funziona proprio così.. bisogna lavorare a livello di registri e non basta un'analogRead, la temperatura è quella del core e non esterna, può essere utile però per diagnosticare problemi al micro
PaoloP:
Se non sbaglio A8 è collegato col sensore di temperatura interno presente sul 328.
--> Arduino Playground - HomePage
Sì, ma per accederci bisogna usare i registri in maniera diretta, come spiegato nel tuo link. Con le vecchie versioni dell'IDE, la serie 00xx, si poteva passare A8 e questo era accettato, con le nuove (1.x) l'analogRead accetta solo i valori corrispondenti ai pin fisici realmente presenti nel chip .
astrobeed:
sono presenti solo negli Atmega 328 in case tqfp32.
E non credo tu riesca ad usarli direttamente senza manipolare il core dell'Arduino.
Se apri il file /hardware/arduino/variants/standard/pins_arduino.h vedrai che sono sì definiti A6 e A7 ma trovi anche il numero complessivo di ingressi analogici fissato a 6.
Devi usare il file pins_arduino.h in \hardware\arduino\variants\eightanaloginputs
/*
pins_arduino.h - Pin definition functions for Arduino
Part of Arduino - http://www.arduino.cc/
Copyright (c) 2007 David A. Mellis
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General
Public License along with this library; if not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330,
Boston, MA 02111-1307 USA
$Id: wiring.h 249 2007-02-03 16:52:51Z mellis $
*/
#include "../standard/pins_arduino.h"
#undef NUM_ANALOG_INPUTS
#define NUM_ANALOG_INPUTS 8
Credo ti debba creare una board nel file board.txt
Ciao,ho visto adesso i vostri reply (Paolo e Leo).
Quindi se ho capito bene per fare in modo che i due pin vengano configurati correttamente devo semplicemente cambiare la cartella da attribuire a "variants" da standard a eightanaloginputs nelle boards di testo,se faccio una board apposita posso mantenere anche l'optiboot che si usa sulla uno,ho visto che con il Nano o il Micro il bootloader è un'altro,va comunque bene?
leo72:
Bravo Paolo, mi ero dimenticato di quella variante del core.
Può allora compilare per l'Arduino Nano o Micro con Atmega328, essi usano proprio la eightanaloginputs dato che sono chip in formato Smd.
Il micro ha il ATmega32U4 non il ATmega328.
Gli Arduino mini e Pro mini oltre al Arduino UNO SMD hanno il controller in forma smd ma tutti no portano fuori i pin A6 e A7. Solo l'Arduino nano li porta fuori.
Se il tuo chip lavora a 16 MHz sì, puoi lasciare l'Optiboot dell'Arduino Uno.
Ok,visto che lo userò a 16MHz,mi faccio una nuova board di testo con la modifica nelle variants come detto prima e la chiamo 328p smd,così me la ritrovo