Arduino ATMega328 Breadboard Pin Definitionen

Gast #5910900
Hallo,

kurz zur Vorgeschichte:
ich habe ein selbst entwickeltes ATMega328 TQFP Board ohne ext. Quarz.

Um das unter Arduino 1.8.x zum Laufen zu bekommen, habe ich mir
den Bootldr breadboard-1-6-x.zip von der Arduino Webseite herunter
geladen und installiert. Der Prozessor läuft auch, fuses sind ok.
In der Trace Konsole kommen Ausgaben. Soweit so gut.

Problem:
Die Port Definitionen scheinen nicht zu stimmen:

void loop() {
  // put your main code here, to run repeatedly:
  delay(100);
  //Serial.println("An");
  digitalWrite(PC1,1);
  //PORTC |= 0x02;
  delay(100);
  //Serial.println("Aus");
  digitalWrite(PC1,0);
  //PORTC &= ~0x02;
}

Pin 24  wackelt nur, wenn ich die
im obigen Beispiel auskommentierten Zeilen aktiviere.
Es scheint, dass der bei digitalWrite übergebene Portname
unbekannt ist.

Frage:
Wie kann ich die korrekten Pin Definitionen aktivieren?
Gast #5910939
>PC1 heisst A1 unter Arduino

Perfekt!
digitalWrite(A1,1);
funktioniert!

Was ich noch nicht verstehe:
In einem anderen Projekt mit Arduino Pro Mini Setup
greife ich auf
PD5,               //Port-Pin Output: SPI select
PD6,               //Port-Pin Output: Reset
PD7,               //Port-Pin Input:  Busy
PB0

zu und es funktioniert problemlos. Daher dachte ich, in diesem
neuen Projekt kann ich via "PC1" auf Pin24 zugreifen.
...aber das muss ich nicht jetzt verstehen :)

Danke nochmal für den Tip!
Gast #5910943
> Perfekt!
> digitalWrite(A1,1);
> funktioniert!

Jeder kleine Pöpelkontroller kann das ohne das Gedöhns tausendmal 
schneller.
Aber die Dummen sind halt anspruchslos.
Gast #5910944
Heinz schrieb:
> Was ich noch nicht verstehe:
> In einem anderen Projekt mit Arduino Pro Mini Setup
> greife ich auf
> PD5,               //Port-Pin Output: SPI select
> PD6,               //Port-Pin Output: Reset
> PD7,               //Port-Pin Input:  Busy
> PB0

Das schaue dir noch mal genau an!

Das digitalWrite() arbeitet mit den Arduino Pinnummern.
Die Atmel Pinbezeichner sind hier falsch!

Kannst du auch verwenden, aber dann nur ohne digitalWrite() !
Gast #5910945
Heinz schrieb:
> Was ich noch nicht verstehe:
> In einem anderen Projekt mit Arduino Pro Mini Setup

Ich wuerde Nummern verwenden, die Definitionen der Namen koennten auch 
fehlerhaft sein. Du hast die Pinbelegungen und die Sourcen - nutze das 
;-)

leo
Gast #5911001
Arduino Fanboy D. schr
Ich habe das Gefühl, dass da etwas nicht richtig ist und mir
direkt auf die Füße fällt wenn ich denke, alles sei fertig.ieb im 
Beitrag #5910944:
> Die Atmel Pinbezeichner sind hier falsch!

hm ist mir noch unklar...

Bzgl. Port A hat mir leo ja weitergeholfen, aber bei Port
D muss ich wieder auf die PDs gehen:

Das hier geht:
pinMode(PD6, OUTPUT);

Das geht nicht:
pinMode(D6, OUTPUT);
Compiler Ausgabe: 'D6' was not declared in this scope

Warum kennt er A1..A5, aber nicht D6?
Wo stehen die Pin-Definitionen und wie wird in der Arduino
IDE die zum Board passende header Datei selektiert?
Gast #5911006
Gast #5911058
Heinz schrieb:
> Wo stehen die Pin-Definitionen und wie wird in der Arduino
> IDE die zum Board passende header Datei selektiert?

Suche mal in deinem Arduino Ordner


arduino\hardware\arduino\avr\variants\standard\pins_arduino.h

pins_arduino.h Da findest du die Arduino Pin Nummern Definition




arduino\hardware\tools\avr\avr\include\avriom328p.h

iom328p.h Hier findest du die Atmel Port/Pin Definitionen
Gast #5911069
Hallo,

versuchs mal mit

  pinMode(LED_BUILTIN, OUTPUT);

 digitalWrite(LED_BUILTIN, LOW);

Steuert die LED, unabhängig welches Board.

(Natürlich mußt Du das Board auswählen und es muss unterstützt sein.
Gast #5911079
Heinz schrieb:
> Wie kann ich die korrekten Pin Definitionen aktivieren?

Schaue Dir den Schaltplan eines Arduino-Nano an.

Der Vorteil der A*-Umgebung ist der, dass ich mich nicht um die 
tatsächlichen Ports oder Hardware des ATMega kümmern muß:

digitalWrite (7, LOW); setzt den Pin, der am Board mit D7 bezeichnet 
ist. Dass 7 zufällig PD7 ist, aber 8 dann PB0, muß ich nicht wissen.

irgendwas = analogRead (5); liest den Wert von PC5 ein, den selben Port 
kann ich mit z.B. digitalWrite (19, LOW); aber auch digital benutzen.

Nochmal: Arduino trennt den Anwender von der realen Hardware ab!

Deine Fragestellung lässt mich fast vermuten, dass Du mehr über den 
AT328 weisst als der klassische Arduino und vielleicht direkt auf eine 
professionellere Umgebung umschwenken solltest.
Gast #5911319
Manfred schrieb:
> Arduino trennt den Anwender von der realen Hardware ab
>digitalWrite (7, LOW); setzt den Pin, der am Board mit D7 bezeichnet
>ist.

Das habe ich verstanden. Ich habe ein selbst entwickeltes Board, da
steht naturgemäß nicht dieselbe Pinbeschriftung drauf wie auf einem
Standard-Arduino Board:
https://github.com/tinytronix/homeautomation/tree/master/Hardware/LoraInwallShutter

Natürlich kann ich mir den Schaltplan eines Arduino-Nano ansehen.
Das wäre eine Lösung. Aber als Entwickler würde ich lieber die
entsprechende Header-Datei sehen und verstehen, wie die Arduino
IDE von A1 auf Pin24 des ATMega328 TQFP mappt.

Aber ich sehe auch ein, dass die Arduino-IDE genau diese Informationen
absichtlich vor dem Anwender versteckt. Vielleicht muss man damit leben, 
an gewisse Dokumentations-Grenzen zu stossen, wenn man es genauer wissen 
möchte.
Gast #5911329
Heinz schrieb:
> Aber ich sehe auch ein, dass die Arduino-IDE genau diese Informationen
> absichtlich vor dem Anwender versteckt. Vielleicht muss man damit leben,
> an gewisse Dokumentations-Grenzen zu stossen, wenn man es genauer wissen
> möchte.

Ich habe dir gezeigt wo diese Dateien auf deinem Rechner zu finden sind.

Da ist NICHTS geheim.
Du schaust nur nicht hin..

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 7 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.