Forum: Mikrocontroller und Digitale Elektronik Arduino Nano Anfängerfrage Pins A6 & A7


von Jan (Gast)


Lesenswert?

Hallo Forum,

ich möchte in einer Schaltung einen Arduino Nano einsetzen der dort eine 
einfache Steuerungsaufgabe übernimmt. Seit vielen Jahren nicht mit µCs 
beschäftigt, bin daher momentan in der Einlernphase, seit bitte 
nachsichtig ;-)
Meine Schaltung hat 6 Eingänge (Schalter mit Pulldown an A2-A7) und 
mehrere Ausgänge an den Digitalpins. Damit mir die Zuordnung im Sketch 
leichter fällt habe ich den Pins Namen zugeordnet, die Analogpins werden 
als Digitale Eingänge verwendet. Das sieht dann so aus:

>#define REL_ENABLE 2
>#define 0R_REL 3
>#define +6DB_REL 4
>#define +12dB_REL 5

.....

Später im loop aufgerufen z.B. so:

>// 0R Schalter gedrückt
>
>if(0R==HIGH){
>  if(100R==LOW){
>    digitalWrite(0R_SW, HIGH);
>    digitalWrite(100R_SW, LOW);
>      if(MUTE==LOW){
>      digitalWrite(0R_REL, HIGH);
>      digitalWrite(100R_REL, HIGH);
>    }
>  }
>}

Ich habe mich ans Nano Pinout gehalten:

http://www.pighixxx.com/test/wp-content/uploads/2014/11/nano.png

A6 & A7 kann ich auf die weiße aber nicht als Digitale Eingänge 
definieren, die haben im oberen Dokument auch keine passende 
Bezeichnung.
Wie kann ich der SW möglichst einfach sagen das diese Pins als reguläre 
Digitale Eingänge zu verwenden sind und ihnen einen Namen zuordnen? Gibt 
es da eine einfache Lösung?

Danke!

Gruß,
Jan

von Einer K. (Gast)


Lesenswert?

Jan schrieb:
> Wie kann ich der SW möglichst einfach sagen das diese Pins als reguläre
> Digitale Eingänge zu verwenden sind und ihnen einen Namen zuordnen? Gibt
> es da eine einfache Lösung?

Das sind reine analog Input.
Nichts sonst.

PS:
Warum glaubst du dem Datenblatt nicht?

von Harlekin (Gast)


Lesenswert?

Jan schrieb:
> Gibt es da eine einfache Lösung?

Nein, einfach nicht, aber es gibt eine Lösung als AD-Wandler betreiben.

http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-9223-Automotive-Microcontrollers-ATmega48PA-ATmega88PA-ATmega168PA_Datasheet.pdf

von Jan (Gast)


Lesenswert?

Danke für Eure Antworten!

Sehr schade, dann muss ich mich gleich mit dem ADC auseinander setzen. 
Hatte gehofft das beim ersten µC Projekt vermeiden zu können.

Dem Datenblatt glaube ich natürlich, auch wenn ich das vom Mega32 nicht 
ganz gelesen habe.

von Einer K. (Gast)


Lesenswert?

Jan schrieb:
> Dem Datenblatt glaube ich natürlich, auch wenn ich das vom Mega32 nicht
> ganz gelesen habe.

Solltest du aber mal tun, dann wirst du feststellen, dass ADC6 und ADC7 
des Mega32 sowohl analog können, als auch vollwertige digital Pins (PA6 
und PA7) sind.

von sumo (Gast)


Lesenswert?

Jan schrieb:
> auch wenn ich das vom Mega32 nicht
> ganz gelesen habe.

Aber du hast keinen Mega32, sondern einen Mega328P...

Jan schrieb:
> in einer Schaltung einen Arduino Nano einsetzen

von Harlekin (Gast)


Lesenswert?

sumo schrieb:
> Jan schrieb:
>> auch wenn ich das vom Mega32 nicht
>> ganz gelesen habe.
>
> Aber du hast keinen Mega32, sondern einen Mega328P...
>
> Jan schrieb:
>> in einer Schaltung einen Arduino Nano einsetzen

Auf dem Schema V2.3 zum Arduino Nano habe ich den Atmega168-20au 
gefunden.
Gibt es noch andere Versionen?

von Einer K. (Gast)


Lesenswert?

Harlekin schrieb:
> Gibt es noch andere Versionen?
Üblich ist der ATMega328P

Der Nano mit ATMega168, ist meines Wissens nach, ausgestorben.
Schon lange keinen mehr im Handel gesehen(aber das heißt nix)

von Jan (Gast)


Lesenswert?

>Solltest du aber mal tun, dann wirst du feststellen, dass ADC6 und ADC7
>des Mega32 sowohl analog können, als auch vollwertige digital Pins (PA6
>und PA7) sind.

Dann verstehe ich nicht wie du das vorher meintest?

"Das sind reine analog Input.
Nichts sonst."

http://www.pighixxx.com/test/pinouts/boards/nano.pdf

Ich habe jetzt weit genug ins Datenblatt geschaut und gesehen das dort 
alle Analogpins auch als Digitale I/Os verwendet werden können. Laut der 
verlinkten Grafik vom Nano Pinout (rotes Ausrufezeichen) ist das aber 
wohl nicht so. Könnt ihr mir verraten warum? Scheine da einen Denkfehler 
zu haben?

Danke nochmal!

von Jan (Gast)


Lesenswert?

Auf meinem Board ist der Mega328P in irgend einem vermutlich QFN 
Package.

von Einer K. (Gast)


Lesenswert?

Jan schrieb:
> Dann verstehe ich nicht wie du das vorher meintest?
>
> "Das sind reine analog Input.
> Nichts sonst."
Vorher sprachest du von einem Arduino Nano!?!?
Und dazu ist meine Aussage korrekt.

Und danach sprachst du vom Mega32.
Und dazu ist meine zweite Aussage korrekt.


Tipp:
Drücke dich klar aus, dann bekommst du auch eindeutige Antworten.
Eierst du rum, dann ....

von sumo (Gast)


Lesenswert?

Jan schrieb:
> Ich habe jetzt weit genug ins Datenblatt geschaut und gesehen das dort
> alle Analogpins auch als Digitale I/Os verwendet werden können.

Das weiße Ausrufezeichen im roten Dreieck sagt dir nichts?

von Harlekin (Gast)


Angehängte Dateien:

Lesenswert?

Jan schrieb:
> Auf meinem Board ist der Mega328P in irgend einem vermutlich QFN
> Package.

Dann dürfte folgendes Schema passen.
https://www.arduino.cc/en/uploads/Main/Arduino_Nano-Rev3.2-SCH.pdf
Wahrscheinlich wurden die Anschlüsse A6/A7 nicht angepasst.

Folgendes Datenblatt hat die Beschreibung "ATmega328/P AVR MCU with 
picoPower Technology" und ist auffällig neu:
http://ww1.microchip.com/downloads/en/DeviceDoc/ATmega328_P%20AVR%20MCU%20with%20picoPower%20Technology%20Data%20Sheet%2040001984A.pdf

Gemäss dem Pinout müssten die Anschlüsse A6 und A7 auch digital 
konfigurierbar sein.

von Einer K. (Gast)


Lesenswert?

Harlekin schrieb:
> Gemäss dem Pinout müssten die Anschlüsse A6 und A7 auch digital
> konfigurierbar sein.
Sind sie nicht.
No!
Kannste knicken.
Ein Irrtum.
Wird nix.
Nada.

von Jan (Gast)


Lesenswert?

>Drücke dich klar aus, dann bekommst du auch eindeutige Antworten.
>Eierst du rum, dann ....

Sorry, die rede ist weiterhin vom Nano.

>Das weiße Ausrufezeichen im roten Dreieck sagt dir nichts?

Wenn ich ins Zusammengefasste Datenblatt (Seite 11) vom 328P schaue sehe 
ich dort Pin 19 und 22 die beim Arduino A6 und A7 entsprechen.

http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-42735-8-bit-AVR-Microcontroller-ATmega328-328P_Summary.pdf

Im Datenblatt sind diese als ADC bezeichnet, mich hat verwirrt das sie 
dort auch (durch die Zuordnung mit den Farben) Als Digital Pin verwendet 
werden können. Vermutlich ist gemeint das diese auch mit entsprechender 
Auswertung im Sketch einen Digitalen Eingang abgeben können, anders kann 
es ja nicht sein.

Von meiner Seite aus ist es jetzt klar, ich lese mich in die Auswertung 
der ADC Pins ein und versuche es. Danke nochmal für die Hilfe!

von Stefan F. (Gast)


Lesenswert?

Das hatten wir schonmal vor ein paar Wochen durchgekaut. Dieses Bild im 
DB ist fehlerhaft. Die Pins sind nur über den ADC abzufragen.

von Einer K. (Gast)


Lesenswert?

Jan schrieb:
> anders kann es ja nicht sein.
Die Farbgebung ist ein Irrtum.
Mehr nicht....

Irgendein Grafiker/Bildchenmaler hat seinen Auftrag ausgeführt.
Dank mangelnder Sachkenntnis, oder Sorgfalt, eben nicht 100% richtig.

Ich vermute:
Das wird innerhalb der nächsten 2 Jahre korrigiert werden.
Im Moment haben sie noch wichtigeres zu tun...

von Harlekin (Gast)


Lesenswert?

Stefan U. schrieb:
> Das hatten wir schonmal vor ein paar Wochen durchgekaut. Dieses Bild im
> DB ist fehlerhaft. Die Pins sind nur über den ADC abzufragen.

Das sehe ich jetzt auch so. Es gibt keine Register, wo man den Zustand 
abfragen könnte.

von Jan (Gast)


Lesenswert?

Gemeine Falle für einen Anfänger, da denkt man eher an ein Problem mit 
dem "User" vor dem Schirm.

von Manfred (Gast)


Lesenswert?

Jan schrieb:
> A6 & A7 kann ich auf die weiße aber nicht

Ich auch nicht, meine sind schwarz.

Jan schrieb:
> Sehr schade, dann muss ich mich gleich mit dem ADC auseinander setzen.

Es ist in der Tat extrem schwierig, nach Stunden im Internet:

int Messwert = analogRead(7);
if (Messwert > 800) {
  mache irgendwas
}

Harlekin schrieb:
> Auf dem Schema V2.3 zum Arduino Nano habe ich den Atmega168-20au
> gefunden.
> Gibt es noch andere Versionen?

Kann man immer noch in China kaufen. Tue ich aber nicht, schon seit 
Jahren ist der 328 verbreitet.

Jan schrieb:
> Ich habe jetzt weit genug ins Datenblatt geschaut und gesehen das dort
> alle Analogpins auch als Digitale I/Os verwendet werden können.

Alle außer 6 und 7.

Jan schrieb:
> Gemeine Falle für einen Anfänger, da denkt man eher an ein Problem mit
> dem "User" vor dem Schirm.

Genau das ist es letztendlich auch: Wenn man Arduino einsetzt, hält man 
sich an deren Beschreibungen - da sind A7 und A7 als nicht-digital 
benannt. Dank der Hochsprache ist man von dem eigentlichen Controller 
entfernt und muß sich um dessen Interna nur rudimentär kümmern.

Selbst wenn der µC das könnte, wer sagt uns, dass die A*-IDE das 
unterstützen würde?

von Einer K. (Gast)


Lesenswert?

Manfred schrieb:
> Selbst wenn der µC das könnte, wer sagt uns, dass die A*-IDE das
> unterstützen würde?

Die Arduino IDE unterstützt in Sachen µC offensichtlich nahezu alle 
Varianten, denen man C++ aufdrücken kann.
Auf irgendwelche Pins kommts da nicht so an.
Denn da gibts zu jeder Hardware einen Order "variants" mit den diversen 
pins_arduino.h.
Also, wenn man es der IDE verkaufen kann/will dann da.

von Apollo M. (Firma: @home) (majortom)


Lesenswert?

hi,
ich verwende den analog input auch als "langsamen" digital input.
hier der code als startpunkt ...

mt

//********************************************************************** 
*****************
//inline uint8_t digitalReadADC(uint8_t ch) 
__attribute__((always_inline));
uint8_t digitalReadADC(uint8_t ch) {
//********************************************************************** 
*****************
  ADMUX |= ch - 14; //arduino defined a0=14, a1=15 ...
  sbi(ADCSRA, ADSC); //start adc
  while (!ADCSRA & ADIF) continue;
  sbi(ADCSRA, ADIF); //clear conversion complete flag
  return ADCH? 1:0; //>0 always logical high!
}

von Einer K. (Gast)


Lesenswert?

Ich weiß nicht genau....
Aber wenn ich zu solchen Tricks greifen müsste, hätte ich das Gefühl was 
falsch gemacht zu haben.
Zumindest würde ich versuchen ein paar Digitalpins frei zu schaufeln.
z.B. mit Charlie- oder Multiplexing
Oder SPI/I2C Erweiterungen.
Oder einen anderen µC wählen

von Manfred (Gast)


Lesenswert?

Arduino F. schrieb:
> Aber wenn ich zu solchen Tricks greifen müsste, hätte ich das Gefühl was
> falsch gemacht zu haben.

Ich habe ein Projekt in Arbeit, wo mir am Nano die Ports ausgehen. Da 
habe ich 9 Tasten mit 8 Widerständen und einem Pullup an einen 
Analogport geklemmt, bislang hatte ich keinerlei Fehlfunktionen. Die 
Unterroutine mit switch und case benötigt irgendwas unter 2 
Millisekunden, um die Tastennummer auszurechnen. Zuvor lasse ich mir 
15ms für Tastenbeep und Prellerkennung, also sehe ich keinerlei Problem, 
einen A-Port zu verwenden.

von Stefan F. (Gast)


Lesenswert?

> Aber wenn ich zu solchen Tricks greifen müsste, hätte ich das Gefühl
> was falsch gemacht zu haben.

Dann hast du noch keine 32bit Controller gesehen. Versuche mal bei einem 
STM32F103 die USB Schnittstelle zu programmieren.

Berufliche Software-Entwickler bauen ständig Workarounds, die meisten 
Programme bestehen in ganz wesentlichen Teilen aus solchen hässlichen 
Konstrukten. Das tun wir Entwickler nicht, weil wir doof sind, sondern 
weil wir müssen. Denn wenn das Programm am Liefertermin nicht tut, was 
es soll, gibt's keine Brötchen.

Als Softwareentwickler kannst du nicht sagen: Geht nicht, die Hardware 
ist Schuld. Das interessiert niemanden. Als Softwareentwickler hängt du 
immer am Ende einer langen Entwicklungskette. Du musst die Fehler deiner 
Vorgänger ausbügeln und dabei mit der Zeit auskommen, die sie Dir übrig 
gelassen haben.

Das kostet Nerven, deswegen ist der Job gut bezahlt.

Aber du kannst gerne einen idealen µC für deine Anwendung suchen - wenn 
es ein Hobby ist und Zeit keine Rolle spielt. Im Berufsleben läuft es 
leider nicht so.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.