mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Von Arduino auf Atmel Studio 7.


Autor: Bernhard Spitzer (b_spitzer)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,
ich habe ein Projekt mit einem Arduino Uno begonnen und jetzt eigene 
Patinen mit einem ATmega168p gefertigt. Die Projekt-Software wurde mit 
Arduino entwickelt und nutzt dort die Bibliotheken EEPROM.h und Wire.h.
Die Testsoftware (nur Test der I/Os) für meine Platine habe ich mit 
Atmel Studio 7 erstellt und mit dem AVRisp MKII geflasht.

Jetzt will ich das Arduino-Programm anpassen und auf die eigene Platine 
flashen. Leider klappt das nicht. In Arduino wird der AVRisp erkannt, 
beim Hochladen über den Programmieradapter kommt nur eine nichtssagende 
Fehlermeldung in Arduino.
Dann habe ich versucht, die HEX-Dati in Arduino zu erstellen und zu 
exporterien. Die kann ich mit dem AVRisp flashen, aber dann tut sich 
nix. Auch ein testweise in Arduino erstelltes Blink-Programm 
funktioniert nicht beim Flashen mit dem AVRisp.
Als nächstes habe ich versucht, den Arduino-Sketch im Atmel-Studio 7 zu 
importieren. Geht soweit auch, aber beim Kompilieren gibt es 
Fehlermeldungen wegen fehlenden Bibliotheken EEPROM.h und Wire.h.

2 Fragen: könnte der Upload-Fehler in Arduino daran liegen, dass meine 
Platine jetzt einen ATmega168 hat und nicht den 328? (es sind aber nur 
10% des Speichers genutzt). Meine Platine hat auch einen 16MHz-Quarz, 
die Fuses hatte ich mit dem AVRisp passend gesetzt.

Wie kann ich in Atmel Studio7 die Arduino-Bibliotheken einbinden und 
nutzen?

Autor: fifila (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bernhard S. schrieb:
> eine nichtssagende
> Fehlermeldung in Arduino.

Wäre trotzdem schön, wenn du sie angeben könntest, vll ist ja nicht für 
jeden nichtssagend :)

Außerdem fehlt noch eine Beschreibung des restlichen Aufbaus. Was liegt 
zwischen ATmega und dem PC?

Autor: Feldkurat Katz (feldkurat)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
fifila schrieb:
> Außerdem fehlt noch eine Beschreibung des restlichen Aufbaus. Was liegt
> zwischen ATmega und dem PC?

Die Tischplatte aus Buche massiv.
SCNR
-Feldkurat-

Autor: opravo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Feldkurat K. schrieb:
> Die Tischplatte aus Buche massiv.

"Eichen sollst du weichen, Buchen sollst du suchen" -> Buchenholz stößt 
Elektrizität ab -> Daten kommen nicht im ATmega an.




P.S.: Ich übernehme keine  Verantwortung, falls jetzt jemand ernsthaft 
bei nem Gewitter unter ne Buche rennt.

Autor: Dieter F. (jim_quakenbush)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bernhard S. schrieb:
> 2 Fragen: könnte der Upload-Fehler in Arduino daran liegen, dass meine
> Platine jetzt einen ATmega168 hat und nicht den 328? (es sind aber nur
> 10% des Speichers genutzt). Meine Platine hat auch einen 16MHz-Quarz,
> die Fuses hatte ich mit dem AVRisp passend gesetzt.

Hat Dein ATMega-Eigenplatinenteil einen Bootloader? Sonst solltest Du 
den erstmal draufbringen ...

Autor: Arduino Fanboy (ufuf)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bernhard S. schrieb:
> 2 Fragen: könnte der Upload-Fehler in Arduino daran liegen, dass meine
> Platine jetzt einen ATmega168 hat und nicht den 328? (es sind aber nur
> 10% des Speichers genutzt). Meine Platine hat auch einen 16MHz-Quarz,
> die Fuses hatte ich mit dem AVRisp passend gesetzt.

Natürlich wird die Arduino IDE den Upload verweigern, wenn sie den 
falschen Prozessor vorfindet.
Meldungen beim Upload aktivieren, in den Einstellungen.

Tipp:
Es gibt einige Arduino mit  ATmega168p, stelle ein solches Board ein.

Autor: Bernhard Spitzer (b_spitzer)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
a) Die Fehlermeldung war "Programmiervorgang fehlgeschlagen, es ist ein 
Fehler aufgetreten".
b) Zwischen PC und ATmega ist der AVRisp MKII.

Das im Atmel Studio 7 erstellte Test-Programm lässt sich flashen und 
läuft wie erwartet. Auch die Programmierung der Fuses passt zum 16MHz 
Quarz, Clkdiv8 ist auch rausgenommen, die delay(1000) gibt eine Sekunde 
Wartezeit...
Ich möchte jetzt eben "nur" das Arduino-Programm, von mir aus auch über 
Atmel Studio 7, auf der Platine zum laufen bringen. Dazu brauche ich 
EEPROM-Zugriff und I2C-Slave (incl Unterstützung des General-Call) auf 
den Hardware-Pins.
Die serielle Schnittstelle wäre zur Not mit TTL-Pegel verfügbar, der 
Reset-Anschluss liegt aber nur auf dem ISP-Verbinder am Platinenrand. Es 
ist daher eher keine Option, den Arduino-Bootloader (geht der überhaupt 
für den 168?) zu flashen und das Programm über die serielle 
Schnittstelle hochzuladen.

Autor: Bernhard Spitzer (b_spitzer)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Arduino F. schrieb:
> Tipp:
> Es gibt einige Arduino mit  ATmega168p, stelle ein solches Board ein.

welch denn, konkret??

Autor: Bernhard Spitzer (b_spitzer)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dieter F. schrieb:
> Hat Dein ATMega-Eigenplatinenteil einen Bootloader? Sonst solltest Du
> den erstmal draufbringen ...

Den sollte ich beim Flashen per AVRisp aber nicht benötigen.... Arduino 
generiert mir ja auch 2 Hex-Dateien, eine mit Bootloader, eine ohne. 
Beide laufen aber nicht.

Autor: Dieter F. (jim_quakenbush)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bernhard S. schrieb:
> Den sollte ich beim Flashen per AVRisp aber nicht benötigen.... Arduino
> generiert mir ja auch 2 Hex-Dateien, eine mit Bootloader, eine ohne.
> Beide laufen aber nicht.

Hast Du beim Flashen (mit Atmel Studio 7) den richtigen Prozessor 
eingestellt?

Autor: Bernhard Spitzer (b_spitzer)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja. Das in Atmel Studio erstellte Testprogramm läuft ja auch nach 
Flashen per AVRisp. Auch die in Auduio exportierten HEX-Dateien kann ich 
ohne Fehlermeldungen flashen, nur läuft halt nix. Auch kein simples 
Blink-Programm.

: Bearbeitet durch User
Autor: Oliver Ju. (skriptkiddy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Arduino-IDE wird meiner Erfahrung nach immer versuchen über 
Bootloader zu flashen. Dass man in der IDE den AVRISPMKii auswählen 
kann, dient glaube ich nur dem Flashen eines Bootloaders.

Vielleicht hilft es die Boards.txt anzupassen.?

Grüße Oliver

Autor: Dieter F. (jim_quakenbush)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bernhard S. schrieb:
> Auch kein simples
> Blink-Programm.

Stell mal bitte Dein Test-Blink-Programm (Projekt) ein.

Autor: Arduino Fanboy (ufuf)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oliver J. schrieb:
> Die Arduino-IDE wird meiner Erfahrung nach immer versuchen über
> Bootloader zu flashen. Dass man in der IDE den AVRISPMKii auswählen
> kann, dient glaube ich nur dem Flashen eines Bootloaders

Nein!
Es gibt zusätzlich noch den Menüpunkt "Upload mit Programmer", genau für 
diesen Zweck.

Oliver J. schrieb:
> Vielleicht hilft es die Boards.txt anzupassen.?
Wäre in letzter Konsequenz der richtige Weg, eine eigene boards.txt zu
erzeugen.
Wenn man den weiter Arduino nutzen möchte.

: Bearbeitet durch User
Beitrag #5080668 wurde vom Autor gelöscht.
Autor: Oliver Ju. (skriptkiddy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Arduino F. schrieb:
> Nein!
> Es gibt zusätzlich noch den Menüpunkt "Upload mit Programmer", genau für
> diesen Zweck.

Ahh cool! Da habe ich wahrscheinlich nicht lange genug gesucht, als ich 
mir das mal angeschaut habe.

Autor: Bernhard Spitzer (b_spitzer)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dieter F. schrieb:
> Stell mal bitte Dein Test-Blink-Programm (Projekt) ein.

Das Projekt habe ich nicht hier. Aber außer DDRB in Init zu setzen und 
in der Loop einen Pin zu toggeln macht das nichts. Gleicher Quellcode im 
Atmel Studio läuft auf der Platine.

Autor: Bernhard Spitzer (b_spitzer)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Arduino F. schrieb:
> Wäre in letzter Konsequenz der richtige Weg, eine eigene boards.txt zu
> erzeugen.
> Wenn man den weiter Arduino nutzen möchte.

Der Hinweis könnte hilfreich sein. Den Arduino Nano gibt es sowohl mit 
dem 328 als auch mit dem 168. Wenn man den Nano einstellt, kommt ein 
weiterer Menüpunkt bei Werkzeuge, um den Prozessor auszuwählen. Das 
probiere ich morgen mal und vergleiche meine gesetzten Fuses mit den 
Angaben aus der boards.txt für den Nano.

Autor: Dieter F. (jim_quakenbush)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bernhard S. schrieb:
> Das Projekt habe ich nicht hier. Aber außer DDRB in Init zu setzen und
> in der Loop einen Pin zu toggeln macht das nichts. Gleicher Quellcode im
> Atmel Studio läuft auf der Platine.

Ich auch nicht - daher schwer nachvollziehbar.

Autor: Thomas V. (thomasv)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Problem ist dass Du es im Arduino für einen anderen Zielprozessor 
kompiliert hast. Das funktioniert dann nicht wenn Du das HEX File auf 
einen anderen Prozessor flashen möchtest.

Autor: grundschüler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
bau auf deinem laufenden blink-programm auf. zuerst die 
eeprom-funktionalität einbinden: arduino-eeprom.c und eeprom.h laden. 
Alle #includes müssen funktionieren. Wahrscheinlich ist es einfacher, 
die arduino-funktionen durch gcc-funktionen zu ersetzen. In der Regel 
sind das aber nur zwei Funktionen:
eeprom_read und eeprom_write 8 oder 16bit.l

Wenn das funktioniert, weiter mit i2c.

Autor: Bernhard Spitzer (b_spitzer)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es hat jetzt auf Umwegen funktioniert.
In Arduino den Arduino Nano mit ATmega168p ausgewählt, neu compiliert 
und Hex-Datei exportiert. Die lässt sich aus Atmel Studio flashen und 
läuft jetzt.
Problem bei Arduino ist, dass der AVRisp MKII immer noch nicht von 
AVRDude erkannt wird. Wenn ich die Fehlermeldungen für den Upload 
aktiviere, sehe ich jetzt, dass er das USB-Device nicht findet. Im 
Gerätemanager ist der AVRisp aber mit genau der angegebenen VID und PID 
verfügbar (und läuft ja auch im Atmel Studio 7).

Könnte es sein, dass Arduino (bzw. AVRdude) nicht mit der neuen Firmware 
zurecht kommt, die bei der ersten Inbetriebnahme des AVRisp im Atmel 
Studio 7 installiert wurde? Der AVRisp ist übrigens kein Nachbau, 
sondern original.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.