Von Arduino auf Atmel Studio 7.

#5080551
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?
Gast #5080637
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 ...
Gast #5080641
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.
#5080648
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.
Gast #5080666
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.
Beitrag #5080668 wurde von einem Moderator gelöscht.
#5080780
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.
Gast #5080934
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.
#5081724
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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren