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?
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?
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-
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.
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 ...
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.
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.
Arduino F. schrieb: > Tipp: > Es gibt einige Arduino mit ATmega168p, stelle ein solches Board ein. welch denn, konkret??
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.
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?
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
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
Bernhard S. schrieb: > Auch kein simples > Blink-Programm. Stell mal bitte Dein Test-Blink-Programm (Projekt) ein.
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.
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.
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.
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.
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.
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.
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.