Hallo zusammen, ich bin schon seit mehreren Tagen dabei mein Problem zu lösen, aber ich komme kein Schritt voran. Ich hoffe mir kann jemand helfen und mir ein paar Tips oder Ideen auf den Weg geben. Ich hab ein großes Programm für den PIC18f2550 in Assembler geschrieben, welches über rs232 Schnittstelle mit dem PC verbunden ist und Daten austauscht. Nun gabs nen neuen Pc und zwangsläufig das Problem, dass kein Comport mehr vorhanden ist. Ich möchte jetzt gerne die Kommunikation über den USB Port laufen lassen. Dazu habe ich mich schon mit der Materie etwas vertraut gemacht (sprut und holger-klabunde sei dank). Der Bootloader von sprut funktioniert, genauso wie das usb-echo-Programm von holger, aber ich finde einfach keine möglichkeit den usb-kontrollcode der überall in c geschrieben ist in Assembler zu übertragen und in mein Programm zu integrieren. Meine C Kenntnisse sind begrenzt und es wäre auch ein riesen Aufwand den über 1000 Zeilen GrundPIC Assembler Code in C umzuschreiben damit er mit dem c USB codes funktioniert. AssemblerUSB Beispiele habe ich nicht gefunden. Ich bin zwar noch auf den Bootloader von mischaka gestoßen mit integrierter usb Ansteuerung aber den funktioniert irgendwie nicht, obwohl der erste mitgelieferte Test auch nur ein Echo liefern sollte. Am einfachsten wäre wohl meiner Meinung nach die USB Ansteuerung in Assembler, aber wie geht das :-/ Ich lasse mich aber auch gerne eines besseren belehren.
du hast schneller C gelernt als wir hier dir mit fragen, raten und antworten das erklären könnten, falls es jemand gäbe (ich bezweifle es), der in asm eine USB-CDC-verbindung programmiern kann, die mit den Microchip-treibern für den PC funktioniert. nimm doch einfach das Microchip-beispiel und füge deinen asm-code als inline-asm ein; oder noch einfacher, wenn es ja sowieso "nur" 1000 zeilen asm-code sind, schreib sie schnell in C und füge sie an der dafür vorgesehenen stelle ein.
Wenn du die 1000 Zeilen nicht übersetzen willst (ist eigentlich nicht viel) dann musst du einen Inline-Assembler verwenden. Die Hilfe deines Compiler's hilft dir da weiter wie genau der Syntax ist. Natürlich gibt es auch Übergangsvariablen in das Inline-ASM ...
ok, immerhin ne ehrliche und fachliche Antwort^^ für mich als Einsteiger-hobbybastler sind 1000 Zeilen schon ne ganze Menge, hat auch ne Weile gedauert das so zusammenzuwerkeln. c wäre bestimmt von Vorteil zu lernen, sieht zumindest einfacher und übersichtlicher aus, da werde ich mich auf kurz oder lang dransetzen, weil Assembler doch irgendwie ausstirbt hab ich das Gefühl. danke für den Tip mit dem Inline Assembler, das ist zwar nicht gerade elegant gelöst sollte aber zumindest mal als Übergangslösung hinhauen. Ich wusste gar nicht dass es sowas gibt. klingt nach der Lösung, die ich gesucht habe. Wobei überall darauf hingewiesen wird dass der Assembler Code kurz gehalten werden sollte da der C Compiler wohl nicht so gut optimiert, ich werde sehn was passiert. danke euch beiden
Tobi D. schrieb: > c wäre bestimmt von Vorteil zu lernen, sieht zumindest einfacher und > übersichtlicher aus, da werde ich mich auf kurz oder lang dransetzen, > weil Assembler doch irgendwie ausstirbt hab ich das Gefühl. > > danke für den Tip mit dem Inline Assembler, das ist zwar nicht gerade > elegant gelöst sollte aber zumindest mal als Übergangslösung hinhauen. > Ich wusste gar nicht dass es sowas gibt. klingt nach der Lösung, die ich > gesucht habe. Wobei überall darauf hingewiesen wird dass der Assembler > Code kurz gehalten werden sollte da der C Compiler wohl nicht so gut > optimiert, ich werde sehn was passiert. Natürlich ist Inlineassembler keine elegante Lösung. Zu C: Glaub mir es ist ein enormer Vorteil (for-Schleifen, If und vorallem Rechnen, Typcast und so ist so unglaublich einfach). Ich bin auch von Assembler gekommen (von sprut.de) und dann in C rein. Habe zuerst ANSI C (Standart C) gelernt und bin dann ab nach "PIC C" gegangen. Es ist das beste wenn man Assembler noch kann, dann kann man auch den compilierten C Code noch gut in Assembler lesen. Assembler benötigt man nur bei sehr kritischen Zeitaufgaben wenn man z.B. Instructions zählen muss oder so. C ist eigentlich das Beste unter den PIC Hochsprachen. Pascal habe ich noch nie gearbeitet. Basic ist eine Katastrophe in Sachen Zeitmessung und Abschätzung. Soweit meine persönliche Meinung. Dass ein C Compiler schlechter optimiert als ein Assembler Compiler wage ich zu bezweifeln...
Einen vollkommen im Source-Code veröffentlichten CDC-Bootloader für den PIC18F2550, der recourcenschonend vollständig in Assembler programmiert ist, findet man unter: http://home.datacomm.ch/str/usbolo.asm
Lad dir mal von Microchip die Application Libraries runter. Und dann schau dir mal das Beispielprojekt "USB Device - CDC Serial Emulator" an. Das ist im Prizip genau, was du suchst. Nur Fix und Fertig.
danke für eure Hilfe, aber mittlerweile kam bei mir die Erkenntnis, in C umzusteigen, da es bei größeren und komplexeren Programmen einfacher und übersichtlicher ist, auch wenn ich da bei der Codeentwicklung erstmal wieder bei 0 anfangen muss hätte ich halt gleich mal machen sollen anstatt Tage lang mit Assembler zu kämpfen um eine halbwegs lauffähige Version hinzubekommen...bei manchen dauert eben bisl länger :P
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.