Eine Bekannte muß einen PIC18F2550 mit einem Raspberry verbinden. Vorgabe dabei ist, daß an der Schaltung nichts verändert werden darf (zusätzliche Module sind erlaubt), und es muss mit Assembler (also nicht C) gearbeitet werden. Zum Flashen benutzt sie die USB-Schnittstelle. Ich hatte als Programmierer bisher nur mit Von-Neumann-Architekturen zu tun und bin daher etwas gehandicapt, aber nach meiner Vorstellung müßte es doch möglich sein, entweder die USB-Routinen des "Standard"-Bootloaders mitzunutzen, allerdings habe ich dazu keine Dokumentation gefunden, oder einen (möglichst kleinen) USB-fähigen Bootloader (z.B. den USBOLO von paddy - http://home.datacomm.ch/str/usbolo.asm) so abzuspecken, daß nur die USB-Routinen übrigbleiben, und diese ins PIC-Programm mit einzubinden. Frage 1: Hat sich schon emand diese Arbeit gemacht? Wenn ja, natürlich Frage 1a: Ist das Ergebnis dokumentiert und wo? Frage 2: Sind diese PICs ab Werk mit einem Bootloader ausgestattet oder hat den wahrscheinlich der Dozent geflasht? Frage 3: Wenn das abspecken des USBOLO als gangbarer Weg erscheint: habt ihr da Tipps dazu? Frage 4: Der Dozent schlägt vor, eine RS232 zwischenzuschalten - ist das wirklich einfacher? Die Ansteuerung der seriellen Schnittstelle muss doch auch programmiert werden, oder?
:
Verschoben durch User
Wen auf dem Pic in Assembler programmiert werden soll ist das mit der RS232 wirklich einfacher. Mann kann ja einen Ftti USB>232 Wandler verwenden,USB an die Rpi und 232 an den PIC. USB ist ja ein Busssystem, da müsstest du auf dem PIC den ganzen USB Stack in Assembler schreiben. Der fertige von Microchip ist in C. 232 ist da deutlich einfacher.
Klaus Baldermann schrieb: > Raspberry Klaus Baldermann schrieb: > Der Dozent schlägt vor, eine RS232 zwischenzuschalten RS232 ist viieel einfacher (In PIC24asm war es eine Sachen von 1 Stunde). Der Raspberry hätte auch eine serielle Schnittstelle. Klaus Baldermann schrieb: > Frage 2: Sind diese PICs ab Werk mit einem Bootloader ausgestattet Nein
:
Bearbeitet durch User
1) suche mit google nach "pic usb assembler site:microchip.com/forums" (leider scheint das Microchip Forum gerade Probleme zu haben, aber du kannst ja auf den Google cache zurückgreifen) 2) Der Dozent hat einen Bootloader drauf gespielt, von Haus aus sind die leer. Microchip stellt solchen Code in C bereit. 4) RS232 ist simpel und narrensicher. Man kann senden wann immer man will und muss fast nichts beachten. USB hingegen ist hoch komplex. http://www.sprut.de/electronic/interfaces/usb/usb.htm Es benötigt einen umfangreichen USB stack, den Microchip nur in C bereitstellt, man somit in ASM mehr oder minder auf sich alleine gestellt ist: http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=2680&dDocName=en537044 Hinzu kommt, dass man auch auf spezielle Treiber (HID bspw.) am PC zurückgreifen kann dann aber eigene Software nutzen muss oder eigene Treiber schreiben muss um eine serielle Schnittstelle zu erhahlten (CDC) um ein Terminal nutzen zu können. USB in ASM zum Laufen zu bringen ist Zeitverschwendung, vor allem wenn sie RS232 benutzen darf. Das ist einfach und sie kann sich auf das Wesentliche konzentrieren, was sicherlich etwas ganz was anderes ist als USB zum Laufen zu bringen.
:
Bearbeitet durch User
Chris S. schrieb: > http://jap.hu/electronic/bminch-asmusb-lab1-fs-gpasm.zip Ja, das sieht ungefähr nach dem aus, was ich meine. Wobei die Makros in der engr2210.inc fast schon ein C-Compiler sind :-) Meine Bekannte wird sich vermutlich die serielle Schnittstelle basteln, aber für mich mit 2 linken Händen scheint die USB-Schnittstelle trotzdem besser, weil - kein Problem mit den unterschiedlichen Spannungen (Raspberry 3,3 V, PIC 5 V - oder war's umgekehrt) / keine weitere Pegelanpassung nötig, da - Stecker an beiden Geräten schon vorhanden, - Kabel steckt auch schon (für's flashen) - bei meinen "Gehversuchen" mit dem oben erwähnten "usbolo.asm", den ich auf 0x800 "verschoben" habe, erkannte fsusb immerhin schon die USB-Schnittstelle :-)
Es muss Assembler verwendet werden- dozent hat einen Sprung in der Schuessel. Wuerde ich glatt verweigern. Mikrokontroller- mach was du willst, hauptsache es geht nachher. Finde ich unglaublich wie hier in Schule und Universitaet immer wieder Studenten behindert werden.
Hi, bei dem genannten Device (32kByte) bezweifle ich, dass USB für einen Bootloader Sinn viel macht, wiel das viel Flash frisst. Es kommt aber auf deine Applikation an. Ich kann mich erinnern, dass man für USB alleine schon >10kB Flash braucht (ohne Optimierungen, XC8, d.h. mit dem freine Compiler). Du kannst die auf die Schnelle einmal mit den Beispielen aus der MLA (Link: http://www.microchip.com/pagehandler/en-us/devtools/mla/) ein Bild machen, und schauen ob das noch vernünftig ist. Vermutlich wirst du die Schnittstelle zweimal brauchen, im Bootloader und in der Applikation. Oder kann man das für beides nutzen? Ich stelle mir das aber beim Updaten etwas kompliziert vor. Was wäre eigentlich mit einem FT232? Es gäbe fertige Module (die sind ja erlaubt), den könnte man zwischen den Raspberry und den PIC klemmen. Damit wäre man bei einer simplen UART und hätte trotzdem die Vorteile von USB. Vor allem passt der PC-Treiber schon einmal. Für mich hört es sich so an, als ob der Dozent nicht so genau weiß was er da verlangt. Ich bin mit C schon an USB ziemlich verzweifelt, und dann das mit Assembler... (viellecht daher die Aussage mit RS232)
Humpfdidumpf schrieb: > Für mich hört es sich so an, als ob der Dozent nicht so genau weiß was > er da verlangt. Ich bin mit C schon an USB ziemlich verzweifelt, und > dann das mit Assembler... (viellecht daher die Aussage mit RS232) Der Dozent weiß genau was er verlangt, darum schlägt er UART vor und eben gerade nicht USB. USB wird ja nur zum Flashen verwendet, damit eben kein 'extra' Programmiergerät benötigt wird. Da das RPi und der PIC eine UART Schnittstelle haben, UART im PIC und im RPi im Handumdrehen implementiert ist, die Komfortfunktionen von USB nicht benötigt werden und das vom Dozent gestellte Problem vermutlich ein ganz anderes ist als eine doofe USB Schnittstelle zum Laufen zu bekommen, sondern vielleicht die Übung in Assembler und das Auslesen von Messwerten, ist USB hier einfach nur Schwachsinn. Hinzu kommt, dass weder der Threadstarter noch seine Kollegin mit USB auf einem uC jemals hantiert haben, sonst wüssten sie die Vorzüge von UART beim Debugging zu schätzen. USB erfordert einen sehr fortgeschrittenen Programmierstil, da das Programm nicht mehr rein linear mit blockierenden Pausen ablaufen darf, sondern eben die USB Routine regelmäßig angesprochen werden muss. Hat man noch wenig Erfahrung macht man sich das Leben daher nochmals extra schwer.
> für mich mit 2 linken Händen scheint die USB-Schnittstelle trotzdem
besser
Es gibt auch "usb rs232 ttl converter" für 3-4 €. Usb Stecker für
Raspberry und 5 einzelne Stecker für den Pic.
Unter Linux bekommst du ein /dev/serial/... und am 5Volt Pic kannst du
die Stecker direkt mit den Pins verbinden.
Vielen Dank für die Antworten, besonders die von Frank M., die mir klargemacht hat, daß ich da ein XY-Problem gepostet habe. Eigentlich geht es nur darum, ein paar Bits (vier Stück) hin und her zu übertragen. Und die Forderung des Dozenten nach Assemler ist auch OK, der Umfang des Projekts ist übersichtlich genug, daß man mit Assembler klarkommen kann.
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.