Forum: Mikrocontroller und Digitale Elektronik falsche Pinbelegung mit AVR-Burn-O-Mat


von T. P. (Gast)


Lesenswert?

Hallo,

ich bin neu hier und würde mich über Hilfe sehr freuen!

Ich arbeite mich gerade in Arduino ein und würde für den Anfang auch 
gerne dabei bleiben, also statt "echtes" C zu benutzten, meine ich.

Zum Ausprobieren von ersten eigenen Programmen würde ich ferner 
eigentlich gerne das "Atmel Evaluationsboard (Pollin) nehmen, da man mit 
3 Tastern, 2 LEDs und einem Summer viel mehr Möglichkeiten hat, als mit 
dem Arduino-Board selbst - zumindest ohne ein weiteres Steckboard.

Mit Arduino (Version 1.6.12) selbst habe ich es noch nicht geschafft, 
einen Atmel-uC (Attiny 2312, ATmega 8 und 16) direkt auf dem 
"Pollin-Board" zu beschreiben. Ob aus  Unkenntnis über nötige 
Einstellungen oder schlicht nicht möglich scheint zunächst auch fast 
egal, über den Umweg "kompilierte Binärdatei erzeugen" und das 
Beschreiben mit "AVR8-Burn-O-Mat" klappt es eigentlich auch.

Einziges Problem ist dann, dass es ein buntes Durcheinander bei der 
Pinbelegung gibt. Zum Beispiel beim Atmega16 sollen auf dem 
"Pollin-Board" die LEDs an Pin 19 und 20 angeschlossen sein. Genauer 
gesagt sind sie es auch tatsächlich, wenn man das Board "durchmisst". Im 
Programm muss ich aber Pin 13 und 14 wählen, um die LEDs ansteuern zu 
können.
Beim Atmega8 ist der Summer z.B. eigentlich an Pin13 angeschlossen. 
Programmieren, um ihn anzusprechen, muss ich aber Pin7, der in Wahrheit 
aber der VCC-Pin ist.

Was mache ich da falsch bzw. wo kann man das so verstellen, dass es 
stimmt?

Danke!

marc

von Rene K. (xdraconix)


Lesenswert?

T. P. schrieb:
> Was mache ich da falsch

Du machst erstmal eigentlich nichts falsch. Außer das du auf diesen µC 
des Pollins Boards einen Arduino Bootloader flashen musst um ihn aus der 
Arduino Umgebung zu beschreiben.

Zum Thema Pinbelege: Auch da ist das Pollin Board korrekt 
gekennzeichnet. Ardunino hat da so ne ganz dämliche Eigenheit die Pins 
mit Nummern durchzummieren. Dort heißen die Pins halt Digital 1-30 oder 
Analog 1-10 - Das ist aber falsch. Denn die Pins stehen im Datenblatt 
und werden richtig mit Port und Pin bezeichnet. Z.b. Port A - Pin 1 oder 
Port E - Pin 4 etc... Das macht Arduino um alles so leicht wie möglich 
zu halten - aber entbehrt sich sonst jeglicher Logik!

von Leo C. (rapid)


Lesenswert?


von Jim M. (turboj)


Lesenswert?

T. P. schrieb:
> Was mache ich da falsch bzw. wo kann man das so verstellen, dass es
> stimmt?

AVR C Source Code kennt Pin 3 am Port A, aber keinen "Pin 13". Wo das 
GPIO Signal für A3 genau rauskommt, ist vom Package abhängig -> 
Datenblatt.

Auch bei Arduinos muss man nachschauen wo welcher Pin wirklich 
rauskommt. Dort sind die Zuordnungen in den Libraries für irgendein 
anderes fertiges Board gedacht.

von T. P. (Gast)


Lesenswert?

Rene, danke für die Antwort. Aber dumme Nachfrage:
Was mache ich genau, um einen Arduino Bootloader auf das Pollin-Bord zu 
flashen?

von Rene K. (xdraconix)


Lesenswert?

Nicht auf das Board... sondern auf den µC in dem Board. Ich kenne mich 
nun nicht sonderlich mit der Ardunio Umgebung aus, oder wie du das 
Pollin Board mit deinem Rechner ansprichst. Aber üblicherweise haben die 
Arduino MC (Was ja normale Atmel AVRs sind) einen Bootloader.

von T. P. (Gast)


Lesenswert?

ach so, darum wundern wir uns gerade gegenseitig über unsere Antworten.

Nein, das Pollin-Board ist schlicht eine "feste Verschaltung" von 
Tastern, LEDs und Summer, leeren IC-Fassungen für div. Atmel-uCs, 
Eingängen (RS232, ISP, JTAG) sowie einem Wannenstecker zum "externen 
Abgriff" aller IC-Pins. Alles was da an ICs fest drauf ist, ist der 
RS232Chip sowie im weiteren Sinne der Festspannungsregler.

Der große Vorteil ist eben ("nur") dass man nicht etwas wackel-, fehler 
und störanfällig mit einem Steckboard arbeitet, sondern wie gesagt LEDs, 
Summer, Taster fest drauf sind.

Eben gerade drum löst das nicht meine Verwunderung über das 
Pin-Durcheinander. Auch wenn ich in Arduino nicht direkt "hochlade" 
sondern nur eine "Binärdatei exportiere", muss ich vorher dort alle 
Angaben zum gewählten Atmel-uC machen. Beim Atmega 16 gibt es zB. die 
Wahl "Pinout: Standard/Bobuino", was zB. auch die spätere reale 
Pinbelegung verändert (aber bloß nie die eigentlich "richtige" 
hervorbringt.)

Wo sitzt denn dann auf dem Weg zum Atmel-uC nochmal eine 
"Software-Ebene" zwischen, die die Pins ordnen bzw. durcheinanderwürfeln 
kann?

von Frank S. (hobbyist)


Lesenswert?

Etwas weiter oben wurde der Link schon einmal gepostet:

https://www.arduino.cc/en/Hacking/PinMapping168

Dort findest Du die "Übersetzung" welcher Port/Pin welcher Bezeichnung 
zugeordnet wird, die in der Arduino-IDE verwendet wird.

Zum Beispiel unten rechts (Hardware Pin15):
PB1 des Datenblattes entspricht D9 der Arduino IDE

von Rene K. (xdraconix)


Lesenswert?

T. P. schrieb:
> Wo sitzt denn dann auf dem Weg zum Atmel-uC nochmal eine
> "Software-Ebene" zwischen, die die Pins ordnen bzw. durcheinanderwürfeln
> kann?

Die Arduino-Umgebung sitzt dazwischen und würfelt alles durcheinander, 
nur diese.

Wenn du wirklich normal arbeiten willst und eh C nutzt, dann tue dir 
selber einen Gefallen - nutze das AVR / Atmel Studio.

von T. P. (Gast)


Lesenswert?

@Frank:
> Etwas weiter oben wurde der Link schon einmal gepostet:
> https://www.arduino.cc/en/Hacking/PinMapping168
Das hatte ich durchaus schon gelesen, frage mich nur sehr, was das 
helfen kann. Denn um die auf dem Arduino-Board verbauten 168/328 geht es 
ja nun gerade nicht.

@Rene, ja, Danke für den Hinweis mit C. Ich habe seit längerer Zeit 
schon vor bzw. bin dabei, mich einzuarbeiten, "leider" wirklich "von 
Null an". Soweit, mit "AVR / Atmel Studio" zu arbeiten war ich auch 
schon, allerdings nur soweit gehend, fremde, fertige Programme auf die 
Atmel-uCs zu programmieren. Ich glaube, langfristig wird mir C auch 
nicht zu schwer sein. Allerdings habe ich bisher nur Bücher über C 
gefunden, die ich den Autoren am liebsten um die O... h... würde 
(Entschuldigung, kann es nicht anders sagen.)Zum Reinkommen für Anfänger 
(und vor allem um eigene Programme so wie gebraucht zu schreiben) ist 
Arduino nun tatsächlich genial, zudem habe ich hierfür endlich ein 
geniales Buch gefunden, das nicht nur blind und fragmentarisch 
beschreibt, sondern kleinschrittig und verständlich erklärt.

Somit also nach wie vor mein Wunsch, bei Arduino zu bleiben und das 
Pollin-Board zusätzlich zu benutzen.

von Frank S. (hobbyist)


Lesenswert?

Gib bitte als Suchbegriff "pinout atmega8" oder von mir aus "pinout 
attiny 2312" ein. Da bekommst Du alle Bildchen angezeigt.

Beispiel:
http://technikhobby.blogspot.de/2013/01/die-kleinen-attiny-chips-im-arduino-ide.html

Deine Frage bezüglich der Software wurde schon beantwortet.

Was aus Deinem Post nicht so ganz hervorgeht: Hast Du auch das Buch zu 
dem Board?

http://www.pollin.de/shop/dt/Mzg3OTExOTk-/Bauelemente_Bauteile/Bausaetze_Module/Literatur/Buch_AVR_Programmierung_und_Hardware_in_C.html

Ich habe die Kombination und finde es sehr gut gemacht.

: Bearbeitet durch User
von T. P. (Gast)


Lesenswert?

neulich nicht weiter verfolgt. Danke für die Antworten. Ich hatte vor 
allem einen Denkfehler: Ich dachte, dass wenigstens noch "boardintern" 
der sogenannte Pin Nr xy auch mit dem uC Ausgang Pin Nr. xy verbunden 
wird - und erst danach vermischt irgendwas Rätselhaftes die Pins. Aber 
selbst auf dem Board sind die Pinnnummern ja schon durcheinander. Macht 
es zwar nicht einfacher aber verständlicher ;-).

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.