[Risolto]ATMega328P-AU TQFP32 .......ADC6 e ADC7 ?

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

Ciao

EDIT: Sulla domanda ti ha risposto astro

tonid:
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

Si sono previsti e, come hai intuito, sono denominati A6 e A7

Se non sbaglio A8 è collegato col sensore di temperatura interno presente sul 328.
--> Arduino Playground - InternalTemperatureSensor

@flz
Si,so del multiplexer,intendevo che c'erano due pin in più,comunque grazie della puntualizzazione :slight_smile:
@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?

Ciao

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

Ciao

Ok ragazzi,grazie a tutti delle info.
Buona continuazione :wink:

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

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.

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?

Se il tuo chip lavora a 16 MHz sì, puoi lasciare l'Optiboot dell'Arduino Uno.

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.

Ciao Uwe

Bravo Uwe, volevo scrivere Mini. Ho sbagliato.

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 :wink: