Mooi'n, Über die Beschäftigung mit einem (vermeintlich kaputten) Bus Pirate von Dangerous Prototypes bin ich bei den PC24 Prozessoren von Microchip gelandet. Per ICSP kann ich mit dem Teil schon kommunizieren, sowohl von einem Arduino als auch von einem RasPi aus. Leider gibt es für diese Teile keine frei verfügbaren Compiler und Assembler, wie für die Atmel-Mikrocontroller, aber es gibt ja nix, was einen Hacker hemmt und so habe ich angefangen, einen simpelen Assembler zu schreiben. Ich stoße aber auf das Problem, daß es zwar eine ausführliche Beschreibung des Befehlssatzes gibt ("16-bit MCU and DSC Programmer's Reference Manual"), diese aber extremst vage ist. Ganz konkret frage ich mich z.B. bei den Bit-Befehlen (BCLR, BSET) wie die Bit-Nummer im Befehlswort kodiert wird. Da steht dann z.B. bei BSET 1010 1001 bbbf ffff ffff fffb und The 'b' bits select value bit4 of the bit position to be cleared. Da es keinen Unterschied zwischen .B und .W, den byte- und wort-orientierten Varianten des Befehls, gibt, scheint mir logisch, daß das einzelne "b" im LSbit das höchstwertige Bit der Bit-Nummer ist! Kann es sein, daß die Bit-nummer "falsch herum" kodiert werden mu, also Bit#1 z.B. als 1010 1001 100f ffff ffff fff0 Ganz allgemein: hat jemand eine bessere Beschreibung? Josef
Josef M. schrieb: > Mooi'n, > Über die Beschäftigung mit einem (vermeintlich kaputten) Bus Pirate von > Dangerous Prototypes bin ich bei den PC24 Prozessoren von Microchip > gelandet. > Per ICSP kann ich mit dem Teil schon kommunizieren, sowohl von einem > Arduino als auch von einem RasPi aus. > > Leider gibt es für diese Teile keine frei verfügbaren Compiler und > Assembler, wie für die Atmel-Mikrocontroller, aber es gibt ja nix, was > einen Hacker hemmt und so habe ich angefangen, einen simpelen Assembler > zu schreiben. Das ist schlicht falsch. Siehe hier: http://www.microchip.com/mplab/compilers Eine IDE gibts auch: http://www.microchip.com/mplab/mplab-x-ide Und auch Assembler kann man damit uneingeschränkt verwenden. Weder Registrierung noch Geld sind nötig. Der freie Compiler hat zwar Einschränkungen, die sind aber gering (man kann nur bis zu einer bestimmten Optimierungsstufe gehen.). Ich zig Projekte mit PIC24 umgesetzt, und hatte nie Probelme damit. Im Gegensatz zu ATMEL muss man sich auch nicht registrieren. Mit einem PICkit kann man dazu sogar debuggen.
Josef M. schrieb: > daß das einzelne "b" im LSbit das höchstwertige Bit der Bit-Nummer ist! So wirds wohl sein, aber wenn du das nicht als höchstwertiges Bit der Bitnummer betrachtest, sondern als niederwertigstes Bit der Adresse in einem Byte-Befehl, dann wird die Codierung verständlicher. In dieser Interpretation gibt es überhaupt keinen Wort-Befehl, sondern der wird vom Assembler auf den Byte-Befehl umgerechnet. Technisch kann das natürlich auch andersrum sein, aber so herum betrachtet wirds logisch.
:
Bearbeitet durch User
Beitrag #5247361 wurde vom Autor gelöscht.
A. K. schrieb: > Josef M. schrieb: >> daß das einzelne "b" im LSbit das höchstwertige Bit der Bit-Nummer ist! > > So wirds wohl sein, aber wenn du das nicht als höchstwertiges Bit der > Bitnummer betrachtest, sondern als niederwertigstes Bit der Adresse in > einem Byte-Befehl, dann wird die Codierung verständlicher. In dieser > Interpretation gibt es überhaupt keinen Wort-Befehl, sondern der wird > vom Assembler auf den Byte-Befehl umgerechnet. Technisch kann das > natürlich auch andersrum sein, aber so herum betrachtet wirds logisch. Ja, so bin ich ja auch darauf gekommen. Inzwischen hat sich aus der Logik des reverse-assemblierten Codes ergeben, daß es so ist, daß das unterste Bit Adressbit 0 bzw Bitbit 3 ist, die höheren 3 "bbb" Bits in der Richtigen Reiehnfolge stehen, in meinem Beispiel 1010 1001 100f ffff ffff fff0 es sich also um Bit #4 des unteren Bytes handeln würde.
Hmm schrieb: > Josef M. schrieb: >> Mooi'n, >> Über die Beschäftigung mit einem (vermeintlich kaputten) Bus Pirate von >> Dangerous Prototypes bin ich bei den PC24 Prozessoren von Microchip >> gelandet. >> Per ICSP kann ich mit dem Teil schon kommunizieren, sowohl von einem >> Arduino als auch von einem RasPi aus. >> >> Leider gibt es für diese Teile keine frei verfügbaren Compiler und >> Assembler, wie für die Atmel-Mikrocontroller, aber es gibt ja nix, was >> einen Hacker hemmt und so habe ich angefangen, einen simpelen Assembler >> zu schreiben. > > Das ist schlicht falsch. Siehe hier: > http://www.microchip.com/mplab/compilers > > Eine IDE gibts auch: > http://www.microchip.com/mplab/mplab-x-ide > > Und auch Assembler kann man damit uneingeschränkt verwenden. Weder > Registrierung noch Geld sind nötig. > > Der freie Compiler hat zwar Einschränkungen, die sind aber gering (man > kann nur bis zu einer bestimmten Optimierungsstufe gehen.). > Ich zig Projekte mit PIC24 umgesetzt, und hatte nie Probelme damit. OK, Danke, das hatte ich bislang noch nicht gefunden. > Im Gegensatz zu ATMEL muss man sich auch nicht registrieren. Mit einem > PICkit kann man dazu sogar debuggen. Um den avr-gcc zu installieren muß ich mich auch nicht registrieren. Und für die Arduino-IDE auch nicht.
Die PIC24 (sowie dsPIC30, dsPIC33) sind sehr uCs mit sehr eigenwilliger Busstruktur, Befehlssatz und v.a. Zuordnung von Programmadressen zu den Programm-"bytes". Aus Anwendersicht für Hobby würde ich mich für alles andere entscheiden. Das ist ein leidgeprüfter Hinweis.
Paul2 schrieb: > Die PIC24 (sowie dsPIC30, dsPIC33) sind sehr uCs mit sehr eigenwilliger > Busstruktur, Befehlssatz und v.a. Zuordnung von Programmadressen zu den > Programm-"bytes". > Aus Anwendersicht für Hobby würde ich mich für alles andere entscheiden. > Das ist ein leidgeprüfter Hinweis. Kann ich nicht bestätigen, ich benutze nur C und sehe alles dieses nicht (will es auch nicht sehen, bin ja kein Prozessor-Designer oder Compiler-Programmierer). Sie sind schön schnell, bis zu 70MHz Befehlstakt, ein standard C-int passt genau in die 16-Bit Architektur. Es programmiert sich fast wie auf einem PC, und bei der Geschwindigkeit und der verfügbaren Speichergröße braucht man keine Tricks und Klimmzüge. Trotzdem sind die Peripherals kaum komplizierter als bei den bekannten 8-Bittern. Nur wenn ich mal was mit 8 Pins oder WLan brauche, denke ich über andere nach. MfG Klaus
Paul2 schrieb: > Die PIC24 (sowie dsPIC30, dsPIC33) sind sehr uCs mit sehr eigenwilliger > Busstruktur, Befehlssatz und v.a. Zuordnung von Programmadressen zu den > Programm-"bytes". > Aus Anwendersicht für Hobby würde ich mich für alles andere entscheiden. > Das ist ein leidgeprüfter Hinweis. Vielen Dank dafür. Erst mal will ich einfach nur gucken und mal was Neues ausprobieren. Deswegen bin ich auch dankbar für den Hinweis auf den kostenlosen Compiler. Mit der Möglichkeit den PIC per ICSP vom RasPi zu beackern bin ich ja auch einen großen Schritt voran (*). Die 5 PIC24s haben nicht die Welt gekostet. Was ja tatsächlich schon mal komisch auffällt ist die Tatsache, daß irgendwie jeder Pin gefühlt mit jedem Port verbunden werden kann, so über 'ne Art von Kreuzschiene. Positiv für mich (und einige meiner Projekte) ist die Tatsache, daß schon der PIC24FJ64GA002, den ich hier im 28-polige DIP vor mir liegen habe, 2 USARTs und auch 2 I²C-Schnittstellen hat. Ob ich die alle gleichzeitig nutzen kann (s.o.) weiß ich noch nicht. Ich hangle mich da dann wohl von Problem zu Problem und am Ende schmeiße ich den Krempel entweder frustriert in die Ecke oder hab' was Nettes gebaut. Gelernt habe ich dann immer etwas und das ist mit 60 Lebens- und inzwischen >35 Informatiker-Berufs-Jahren immer noch was Spannendes. Und ich gebe zu: ich freue mich wie ein Kleinkind wenn nach einiger Zeit ein "Hello World!" auf dem Display erscheint oder auch nur eine LED blinkt. Nichtsdestotrotz: Danke, daß Du mich gewarnt hast. Jetzt habe ich keine Ausrede mehr ;-) Josef (*) Dabei habe ich z.B. gelernt, daß man beim RasPi nicht einfach einen GPIO-Pin einmal zum Lesen öffnen und dann beliebig oft den Port-Status auslesen kann sondern entweder den Port wieder schließen und neu öffnen oder aber ein "lseek(fd, 0, SEEK_SET);" machen muß.
Josef M. schrieb: >> Der freie Compiler hat zwar Einschränkungen, die sind aber gering (man >> kann nur bis zu einer bestimmten Optimierungsstufe gehen.). > > OK, Danke, das hatte ich bislang noch nicht gefunden. Wobei das mit Stand vor vielen Jahren eine verzierte Version des GCC ist. Die haben eine Optimierung hinzugefügt, die man auch bei den kleineren PICs findet: gleiche Codesplitter zusammen zu fassen. Aber so implementiert, dass die GPL wohl nicht verletzt wird, Lizenzcheck inklusive. Allerdings ist das nicht die einzige Optimierung, die nur für Geld zu haben ist, denn das Steuerprogramm oben drauf ist auch von denen. Im normalen GCC ist "gcc" nicht der Compiler selbst, sondern ruft bloss den eigentlichen Compiler auf (nebst Assembler, Linker etc).
Paul2 schrieb: > Die PIC24 (sowie dsPIC30, dsPIC33) sind sehr uCs mit sehr eigenwilliger > Busstruktur, Befehlssatz und v.a. Zuordnung von Programmadressen zu den > Programm-"bytes". Wobei die eigenwillige Busstruktur nur auf die DSP Varianten zutrifft, und auf jene PIC24 Typen, die eigentlich umgelabelte dsPIC33 sind. Verglichen mit den 8-Bit PICs sind sie jedenfalls eine Wohltat. Allerdings sollte man vorher die Errata-Liste lesen.
:
Bearbeitet durch User
Josef M. schrieb: > Was ja tatsächlich schon mal komisch auffällt ist die Tatsache, daß > irgendwie jeder Pin gefühlt mit jedem Port verbunden werden kann, so > über 'ne Art von Kreuzschiene. Das ist nicht komisch, sondern gut. ST könnte sich da eine Scheibe abschneiden, angesichts deren Pin-Zuordnungs-Gefummel.
Hi, für die xc32/16/8 compiler gibt es auch "medizin" zum spielen ohne einschränkung. wer keine ansteckende krankheit hat bekommt sie on request aus meiner apotheke! hypochonder
A. K. schrieb: > Josef M. schrieb: >> Was ja tatsächlich schon mal komisch auffällt ist die Tatsache, daß >> irgendwie jeder Pin gefühlt mit jedem Port verbunden werden kann, so >> über 'ne Art von Kreuzschiene. > > Das ist nicht komisch, sondern gut. ST könnte sich da eine Scheibe > abschneiden, angesichts deren Pin-Zuordnungs-Gefummel. Das ist für Hobyisten der Himmel. Nämlich insbensondere dann, wenn man 1-Lagig routen muss. Statt Überkreuzungen mühsam auf der Platine zu machen, kann man das in Software tun. Meine PIC24 Platinen von mir sind die aufgeräumtesten Layouts die ich kenne. Im Endeffekt einfach eine Sternverdrahtung, vom PIC raus zur Peripherie. Aber Vorsicht: Richtig alles auskreuzen kann man nur auf neuen PIC24. Meine Tipps hierzu sind: - PIC24FJ128GC006 - PIC24FJ128GA204 Insgesamt bin ich zwar eher auf der PIC32-Schiene unterwegs, aber für kleine Projekte nehme ich PIC24 immer gerne wieder. IMHO ein super Kompromiss aus Simpel und Leistung - 8Bit Einfachheit ohne 8Bit Nachteile.
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.