Show Posts
Pages: [1]
1  International / Deutsch / USB Host Shield / Leonardo Kaufempfehlung? on: April 14, 2013, 06:33:27 pm
Hallo Ihr Lesenden!

Ich will mit Hilfe eines Arduino Leonardo (oder kompatiblem) und einem USB-Host-Shield ein kleines Gerät basteln, das ich zwischen ein USB-Gerät (hier: AKAI MPD24, so ein MIDI-über-USB-Teil) und einen PC schalten will. Dabei sollen die hin- und hergeschickten Signale modifiziert werden, und zusätzliche Pins vom Leonardo (und eventuell auch vom Shield) sollen zusätzliche Funktionen (wie z.B. ein zusätzliches Midi-In-Out-Buchsenpaar oder ein paar Fußschalter) ansteuern.

Die entsprechenden Code-Libraries scheinen dafür ja im Netz schon zu existieren.

Nun habe ich mich zwecks Bestellung im Internet umgeschaut und bin verwirrt. Da gibt es reihenweise USB-Host-Shields mit den verschiedenen Platinenlayouts, eine wahre Fülle von Möglichkeiten. Bei einigen steht dran, daß man sie wegen Inkompatibiltäten in bestimmten Fälle erst umlöten muß. Nicht genug damit, es gibt inzwischen auch eine ganze Menge verschiedener Leonardo-Nachbauten mit geringfügigen Modifikationen. Egal was ich jetzt bestelle, es scheint mir irgendwie, daß die sofortige Funktion (also einfach aufeinanderstecken und loslegen) irgendwie Glücksache sein wird ...  smiley-roll-sweat

Kann mir irgend jemand von seinen Erfahrungen berichten? Hat jemand so eine Konfiguration schon mal zusammengestöpselt?

Welche Boards sind a) sofort und ohne Probleme lauffähig, b) in Deutschland problemlos erhältlich, und c) auch noch preiswert (ich bin Schwabe! smiley)?

Vielen Dank für Euere Tips.

Euer LateNight
2  International / Deutsch / Re: "Falschen" Prozessor nutzen on: October 19, 2012, 01:28:16 am
Was avrdude vs. avrdude2 angeht: was hindert Dich daran die Datei avrdude2 auf avrdude zu kopieren? Oder stehe ich gerade auf dem Schlauch.
Nix, genau das habe ich natürlich auch gemacht, damit es funktioniert.

Trotzdem wüsste ich halt ganz gerne, wozu dieses andere "avrdude.exe" da ist, und wie man in den Prozess der Generierung eingreifen kann, sprich, wo die Makefiles (?) stehen, in denen steht, daß das Ergebnis des Generierungsprozesses zu Guter Letzt irgendwo in einem temporären Build-irgendwas-Verzeichnis landet und nicht da, wo ich es eben gerne hätte. Man ist ja schließlich - weit über die Lösung eines akuten Problemes hinaus - immer wissbegierig und optimierungsfreudig, oder? smiley-wink

Außerdem dachte ich, es interessiert vielleicht eventuelle Mitleser, auf welche Weise ich mein Problem gelöst habe.

Quote
Nett, das Du die Gelegenheit nutzt, um Werbung für Dein Buch zu machen, das hilft mir aber gerade nicht WIRKLICH weiter. smiley-wink
Schon klar, kostenlosen Support darf ich immer gerne machen. Ein Buch schreiben, weil hier einige danach gefragt haben, darf ich auch gerne. Einen kostenlosen Blog auch. Darauf hinweisen aber nicht...
Wer sagt denn, daß Du nicht dürftest? Natürlich darfst Du. Klar. Musst Dir halt nur gefallen lassen, daß man es dann auch schmunzelnd kommentiert. Take it easy! smiley-grin

Gruß

Late_night
3  International / Deutsch / Re: "Falschen" Prozessor nutzen on: October 18, 2012, 05:28:32 am
Danke für den Tip, Udo. Habe ich gleich gemacht.

Das Problem liegt wohl daran, daß die IDE zum Brennen das Programm "C:\Programme\Arduino\hardware/tools/avr/bin/avrdude.exe" aufruft. Dieses ist nur 9kB groß und startet die besagte Dialogbox (wohl durch Aufruf von avrdudefix.exe). Wenn man statt "avrdude.exe" das Programm "avrdude2.exe" mit der gleichen Kommandozeile startet, dann wird prima gebrannt. Die Datei "avrdude2.exe" ist übrigens identisch mit der eigentlichen Datei "avrdude.exe", wie sie z.B. mit WinAVR installiert wird. Sie wurde von den Entwicklern der IDE wohl einfach nur umbenannt, damit das eigene Programm gestartet werden kann, und jetzt nicht mehr gefunden.

Daß es mit meinen anderen Brennprogrammen funktioniert, liegt einfach daran, daß die eine Kopie von "avrdude.exe" finden und benutzen, die sich im Verzeichnis von WinAVR befindet, das auf meinem Rechner ebenfalls installiert ist.

Wie kann ich der IDE beibringen, daß sie bitteschön zum Brennen "avrdude2.exe" aufrufen soll, wie es sich gehört?

Das zweite Problem war mit dem Tracing des Compilierlaufes nicht zu lösen, allenfalls habe ich die Bestätigung für die von mir oben beschriebene Verwendung der Inhaltsverzeichnisse gefunden. Mein Wunsch wäre es ja, die hier aufgerufenen Kommandozeilen nicht nur zu verstehen (das tue ich), sondern so zu ändern, daß sie das tun, was ich gerne hätte, nämlich die Outputfiles des Compilers (HEX, EEP, ELF, ..) direkt neben meinen Quellcode (*.INO) zu schreiben.

Normalerweise stehen solche Kommandozeilen irgendwo in einem Make-File oder Batch-File oder so, wo man dran herumspielen kann ... ich habe es aber nicht gefunden ...  smiley-cry

Und wenn Du es wirklich ganz genau wissen willst: in meinem Buch gibt es ein Kapitel "hinter den Kulissen", da trete ich das richtig breit smiley-wink
Nett, das Du die Gelegenheit nutzt, um Werbung für Dein Buch zu machen, das hilft mir aber gerade nicht WIRKLICH weiter. smiley-wink

Gruß

Late_night
(ganz gegen meine Gewohnheiten tagsüber)
4  International / Deutsch / Re: "Falschen" Prozessor nutzen on: October 17, 2012, 03:01:26 pm
Vielen Dank auch von mir bei Allen, die etwas zur Klärung der Sachlage beigetragen haben. Daß ein Programm, daß ich in der Arduino-IDE geschrieben habe, auch ohne das Vorhandensein eines Bootloaders läuft, war mir nicht so wirklich klar.

Mit dieser Erkenntnis ausgestattet, würde nun sehr gerne meinen USBasp ständig am Arduino angeschlossen lassen und mein Programm immer mit seiner Hilfe "brennen und sofort starten". Aber die Entwickler der Arduino-IDE werfen mir da ein paar Steine in den Weg.  smiley-cry

Wenn ich die Funktion "Upload mit Programmer" aufrufe, dann bekomme ich grundsätzlich eine Messagebox mit dem folgenden Text:
Quote from: Arduino IDE
The connection to the Board failed. This tool can try to fix the issue by disabling and re-enabling the related device.
Auch ein Klicken auf den Button "Fix" führt zu keinem Erfolg.

Wenn ich dagegen meinen ISP-Brenner (wie erwähnt, ein USBasp, was ich natürlich auch im Menü der Arduino-IDE angegeben habe) von einem anderen Programm aus starte (wie z.B. Khazama AVR Programmer oder eXtreme Burner AVR), dann funktioniert er ganz prima und schreibt mir nach Herzenslust HEX-Files in den ATMega. Es liegt also wohl nicht an der Hardware.

Nun könnte ich ja auch einfach auf das Brennen aus der Arduino-IDE heraus verzichten und mein HEX-File mit Hilfe eines dieser Programme "zu Fuss" brennen. Aber dazu muss ich es erst einmal finden.

Eine Suche nach der Stelle, an der ich suchen soll, führte mich zu der folgenden Information:
Quote from: Arduino Cookbook
The compiler produces a number of object files (files with an extension of .o that will be combined by the link tool). These files are stored in /tmp on Mac and Linux.
On Windows, they are in the applet directory (a folder below the Arduino install directory).

The object files are then linked together to make a hex file to upload to the board. Avrdude, a utility for transferring files to the Arduino controller, is used to upload to
the board.
Auf meinen PC mit Windows XP bezogen ist das schlichtweg falsch. Ich habe zwar ein "applet"-directory gefunden, aber das ist leer ...

Nach längerem Suchen wurde ich dann im Verzeichnis "C:\Dokumente und Einstellungen\<Windows-Nutzer-Name>\Lokale Einstellungen\Temp\" fündig. Hier legt die IDE bei jedem Compiliervorgang ein Verzeichnis mit dem Namen "build<irgendeineZahl>.tmp" an. Wenn ich dort suche, finde ich mit viel Glück alle HEX-Dateien meiner bisherigen Versuche, und auch noch viele weitere Dateien, die mir die Festplatte zumüllen. In welchem Unterverzeichnis ich allerdings suchen soll, muß ich mühsam selbst herausfinden.

Einmal habe ich mir jetzt die Mühe gemacht, die richtige HEX-Datei anhand des Erstellungsdatums herauszusuchen und mit dem externen Brennprogramm auf meinen ATMEGA zu laden. Schau an, es funktioniert!  smiley-yell   Und zwar ohne diese durch den Bootloader hervorgerufene ärgerliche 10-Sekunden-Verzögerung nach dem Drücken des Reset-Knopfes. Mein Programm startet sofort, wie ich es haben will. Ganz prima.

Richtig glücklich wäre ich jetzt, wenn mir noch jemand sagt, wie ich

- entweder die Fehlermeldung der IDE wegbekomme, damit die den USBasp richtig erkennt und ich mein Programm mit ihm aus der IDE heraus brennen kann,

- oder aber die IDE dazu veranlassen kann, daß es die HEX-Datei (und wenn möglich, noch mehr "interessante" Dateien, wie z.B. die EEP- und die ELF-Datei) dorthin schreibt, wo auch mein Programm (also die INO-Datei) steht. Dort würden diese Dateien nämlich m.E. eigentlich hingehören ...

Wenn beide Probleme gelöst werden, habe ich auch nichts dagegen.  smiley

Hat jemand Ideen?

Gruß

Late_night
5  International / Deutsch / Re: "Falschen" Prozessor nutzen on: October 11, 2012, 05:39:13 pm
Wenn Du den Bootloader aufgespielt hast, dann hast Du dazu zwangsläufig einen ISP gebraucht. Wieso lässt Du den Bootloader dann nicht einfach weg und flashst immer per ISP. Das ist im Zweifelsfall immer schneller als der Bootloader.

Hmm ... gute Idee, eigentlich.

Wenn ich mein eigenes Programm  mit ISP aus der Arduiuno-Umgebung einspiele, wird dann der Bootloader automatisch gelöscht bzw. überschrieben und NUR mein Programm aufgespielt? Oder bleibt der Bootloader drinnen - für den Fall, daß ich ihn das Nächste Mal doch wieder benutzen will?

In Letzterem Falle würde das mein Problem mit den 10 Sekunden Verzögerung vor Programmstart nämlich nicht lösen ... denn es ist ja wohl der Bootloader, der da seine gemächlichen Runden dreht, bevor er die Kontrolle an mein Programm übergibt.

Im Ersteren Falle müsste ich dem Chip wohl auch noch mitteilen, daß er jetzt bitteschön OHNE Bootloader arbeiten soll - oder? Ich weiß, das macht man mit anderen Fuses ... aber mit welchen? Für Tips bin ich dankbar. Nicht daß ich zu faul wäre, mir das selbst herauszusuchen, neinneinnein ... ich will nur nicht das Risiko eingehen, falsche Fuses zu setzen. ;-)

Gruß

Late_night.
6  International / Deutsch / "Falschen" Prozessor nutzen on: October 09, 2012, 06:12:57 pm
Ich fange gerade mal an mit dem Ding (also dem Arduino Uno) zu spielen ... und für meine ersten Gehversuche (also LED blinken lassen und so) muss ich ja nicht unbedingt den ATMEGA 328 haben, dachte ich mir. Habe ja noch einen alten ATMEGA8 hier herumliegen, der tuts doch erstmal genauso? Sind ja schließlich pinkompatibel, die beiden ICs. Und die Anzahl der möglichen Uploads pro Chip ist begrenzt ... wäre ja Verschwendung, die für Spielereien sinnlos zu verbraten.

Gesagt, getan. Bootloader habe ich auf den Chip draufgekriegt, ein erstes kleines Testprogramm auch. Damit der Compiler weiß, daß er heute für einen anderen Chip übersetzen soll, habe ich unter "Tools / Board" einen Eintrag mit "Atmega 8" gesucht und ganz unten auch einen gefunden. 

Es läuft auch prima, die LED blinkt, die Serial.Print()s schreiben ihren Senf ins Fenster ... aber eines fällt mir doch auf.

Wenn ich den Atmega 328 in der Fassung habe und den Reset-Button drücke, startet das Programm, das ich darauf geladen habe, ziemlich schnell. Wenn ich den Atmega 8 in der Fassung habe und den Reset-Button drücke, dann dauert es ca. 10 Sekunden, bis das Programm startet. Was zum Teufel macht der so lange?

Hat jemand eine Idee, woran das liegen kann, und wie man es beheben kann?

Gruß

Late_night.
Pages: [1]