Hallo Zusammen
Kann mir jemand sagen ob ein PIC32 ähnlich funktioniert wie ein ARM9.
Beim ARM9 bin ich kläglich gescheitert, ich habe es einfach nicht
geschaft die notwendigen Funktionen einzubinden. Ich mitlerweile für die
Ein- und Ausgabebaugruppen einen PIC18 verwendet, aber nun benötige ich
für eine MCU einen Leistungsfähigen Controller. Ich habe den PIC32
ebenfalls mit einer Netzwerk Schnittstelle gefunden und nun würde mich
interresieren ob dieser wie der PIC18 oder doch eher wie der ARM
programmiert werden muss.
Bitte. Danke.
Lg.
Johann K.
Mist, ich dachte immer, man kann die in C programmieren und die
Funktionen schreibt man entweder selbst oder hängen vom Compiler ab. So
kann man sich irren.
Die Peripherieblöcke der einzelnen Architekturen sind nicht identisch,
aber ähnlich. Wenn Du ein SPI auf einem PIC18 ansteuern kannst, solltest
Du das auf nem PIC32 auch hinbekommen.
Die MPLAB IDE verwendest Du weiter, Dein PicKIT3 oder ICD2 benutzt Du
weiter (PicKIT2 und ICD2 funktionieren nicht bzw nur sehr
eingeschränkt), den C32 musst Du nachinstallieren.
Ansonsten gibts einige architekturbedingte Unterschiede, in die Du Dich
einarbeiten musst.
Insgesamt wird der Umstieg auf PIC32 weniger schwierig sein als auf
ARM9.
fchk
Klatec schrieb:> ... oder doch eher wie der ARM programmiert> werden muss.> Bitte. Danke.>> Lg.> Johann K.
In dem o.g. Punkt musst du Differenzieren! ARM ist nicht gleich ARM!
Die wesentliche Frage ist hier, da darin wohl die größten Unterschiede
bestehen, ob es sich um ein System MIT Betriebssystem handelt oder ohne.
Also ob du direkt in C Alles incl. HArdwarezugriff programmierst (wie
beim PIC18) oder ob es ein Betriebssystem wie Linux gibt, in dem du die
Hardwaretreiber einbinden musst UND danach nur die reine Aplikation als
Ausführbare Datei schreibst die dann vom BEtriebssystem aufgerufen wird.
Die letztere Version ist insbesondere bei den Vertretern mit sehr hoher
Leistung anzutreffen, da du von ARM9 schreibst nehme ich mal ganz stark
an das du so einen Fall hattest! (Mir ist bisher noch kein ARM9 System
untergekommen das ohne Betriebssystem lief, technisch würde das
natürlich auch ohne gehen, aber das noch effizient ist?)
Die PIC32 haben üblicherweise kein Betriebssystem. Das heißt nicht das
es nicht gehen würde, aber es ist zumindest als Standard nicht üblich.
Du schreibst ja ob es ähnlich wie PIC18F ist.
JA- Es ist sehr ähnlich!
Du schreibst ganz normal aus MPLAB heraus in C. (Natürlich musst du
mindestens den kostenlosen Compiler vorher runtergeladen haben).
Der Aufbau des Programms ist völlig identisch. Auch das setzen der Fuses
usw.
Die Unterschiede betreffen nur die erweiterten HArdwarefähigkeiten sowie
den etwas erweiterten Befehlssatz in der mitgelieferten MC Lib. (wobei
man auch mit der reinen Beschränkung auf den PIC18F Befehlssatz
zurechtkommen würde)
Wenn du mit den PIC18F zurechtkommst, dann ist es nur ein KLEINER Sprung
auf die PIC32!
Aber: Weshalb ich oben die Differenzierung machte:
Auch unter den ARM gibt es welche die wie die PIC32 direkt in mit C
laufen. Vom Aufwand und Ablauf entsprechen die dann auch den PIC32.
Verbreitete Beispiele sind ARM7 und CortexM3.
Wenn du allerdings über die Microchip Hardware zum Programmieren
verfügst und dich mit der Umgebung schon auskennst, dann dürfte es für
dich am einfachsten sein auf PIC32 zu setzen.
Gruß
Carsten
Carsten Sch. schrieb:> (Mir ist bisher noch kein ARM9 System> untergekommen das ohne Betriebssystem lief
Die STR9 Familie verwendet einen ARM9 Core ohne Cache und ohne MMU und
ist von Aufbau und Zielrichtung her mit grösseren ARM7 oder Cortex-M3
Controllern vergleichbar. Und ist damit auch ungefähr in der Liga der
PIC32.
Bisschen komplizierter sind die STR9 eigentlich nur dadurch, dass die
I/O-Module zweimal und das RAM dreimal im Adressraum auftauchen, mit
jeweils unterschiedlichen Puffercharakteristiken. Wer mit coherency
Konzepten bisher nichts zu tun hatte kann da leicht ins schwimmen
kommen. Zumal sich der Autor des Insider's Guide vor diesem Thema
gedrückt hat.
Hallo
Danke für die vielen Antworten.
Zur Aufklärung, ich habe mir von taskit das Stamp9G20 Board (Linux mit
Betriebssytem) gekauft, zuvor arbeitete ich nur mit 80C535 mit max.
12MHz und da haben mich die Eigenschaften des verwendeten Prozessor
AT91SAM9G20 sehr beeindruckt, eine Wahnsinns Maschi'n. Aber das
einzigewas ich geschaft habe war die Ausgabe der am Testboard
befindlichen Leds.
Aber am meisten hat mich die Netzwerk-Schnittstelle beeindurckt, die
wollte ich für die Kommunikation mit andenren Komponenten über das
Fernwirkprotokoll IEC60870-5-104 verwenden und für das IEC 60870-5-101
hat der Prozesser auch genügend RS232 zur Verfügung. Eine SPI
Schnittstelle für den Bus der die eigenen Ein- und Ausgabebaugruppen
verbindet, und einen Flash-Speicher für die Feinrangierungen der
Telegramme und Baugruppenparameter, viel mehr muss das Ding nicht
können.
Vieleicht noch einen kleine Bereich des Speichers für einen
Funktionsplan zum Ausführen von Logischen Verknüpfungen.
Gratulation.
Wir verwenden das PortuxG20. Ich habe aber auch im Hinterkopf ggf. bei
Projekten, wo Platz eine Rolle spielt, mal auf das kompatible und
billigere System auszuweichen.
Was machst Du genau mit dem Teil?
Gruss hro
Leider nichts, weil ich einfach zu blöd war dafür.
Ich mache mir eine Fernwirkkomponente die aus digitalen Ein- und
Ausgabebaugruppen mit je 16 Ein- und Ausgängen und einer CPU besteht.
Diese sind über einen Seriellen Bus verbunden. Die CPU steuert den
Datenverkehr, sprich Telegramme zwischen den Baugruppen und anderen
Komponenten, Paramter die aus der Anlage einen universalen Einsatz
ermöglichen, so wie Kommunikationsschnittstell die einen Datenfluss zu
anderen Fernwirkkoponenten oder Visualisierungen (PC) ermöglichen. Da
würde sich dieser Prozessor mit den 400Mhz Takt super eignen weil da
richtig die Post ab geht.
Wenn ich von Daten rede, dann sind das nicht Unmengen von Byts sondern
je Baugruppe nur 16 Bit Nutzdaten, die über Optokoppler an eine Logic
übergeben werden, 24 V oder auch 12V. Oder die Ausgänge, 16 Ausgänge
entweder über Relais oder auch über kurzschlußfeste Bausteine mit max
500mA.
Mich würde ein nochmaliger Versuch schon reizen aber ich weiß noch
nicht.
Ich hoffe das ich einigemaßen verständlich meine Antrieb beschrieben
habe.
Klatec schrieb:> Hallo>> Danke für die vielen Antworten.> Zur Aufklärung, ich habe mir von taskit das Stamp9G20 Board (Linux mit> Betriebssytem) gekauft, zuvor arbeitete ich nur mit 80C535 mit max.> 12MHz und da haben mich die Eigenschaften des verwendeten Prozessor> AT91SAM9G20 sehr beeindruckt, eine Wahnsinns Maschi'n. Aber das> einzigewas ich geschaft habe war die Ausgabe der am Testboard> befindlichen Leds.> Aber am meisten hat mich die Netzwerk-Schnittstelle beeindurckt, die> wollte ich für die Kommunikation mit andenren Komponenten über das> Fernwirkprotokoll IEC60870-5-104 verwenden und für das> IEC60870-5-101 hat der Prozesser auch genügend RS232 zur Verfügung.
Mal den Standard angesehen?
Ich hätte noch einen Stack hier, da den Verantwortlichen damals, trotz
einiger Warnungen, der Einkauf eines fertigen Stacks zu teuer war...
Wenn das Protokoll nicht vorgeschrieben ist, würde ich mir zumindest
noch DNP3 ansehen (http://en.wikipedia.org/wiki/DNP3)
Ansonsten würde ich mich den Vorrednern anschließen: PIC32, gleiche
Tools wie bisher, ähnliche Peripherie und mit den Beispielen aus den
Application und Peripheral Libraries sollte man schnell einen Einstieg
finden können
Klatec schrieb:> Mich würde ein nochmaliger Versuch schon reizen aber ich weiß noch> nicht.
Naja, wie schon geschrieben: ICh vermute deine Probleme liegen im Umgang
mit dem Betriebssystem. Linux auf µC ist etwas für Leute die auch Linux
auf dem PC aus dem FF beherschen und zwar nicht nur die Bedienung
sondern auch die Konfiguration, das einbinden von treibern, teilweise
gar die Kompilation eigener Kernel. Für jemanden der diese Anforderung
erfüllt ist das in der Tat wohl so das er auch bei einachen Projekten
schneller mit solchen Bords zum ziel kommt.
Allerdings sind das o.G. Fachkenntnisse die nicht zwangsläufig direkt
etwas mit der µC Programmierung zu tun haben. Da sind diejenigen die
bisher in der reinen PC Welt daheim waren definitiv im Vorteil.
ICh muss auch zugeben das ich mich zwar zur Zeit meiner Ausbildung auch
privat etwas mit Linux beschäftigt habe, seit sicher 10 JAhren abernur
noch so viel wie ich gerade musste.
Wenn ich mal mit solchen "Powerboards" konfrontiert bin vergeht auch
erst einmal überproportional viel ZEit für Einrichtung bevor ich
überhaupt loslegen kann. Auftragsentwicklungen auf solchen Systemen habe
ich bisher im übrigen immer abgelehnt, würde es zwar sicher auch
schaffen, aber nicht in einem ZEitansatz den ich dem Kunden und auch mir
gegenüber guten Gewissens hätte vertreten können. Da sind andere
bedeutend fitter. Meine Stärken liegen woanders. Zumal ja auch die
Applikationen zumeist in eine gänzlich andere Richtung gehen als mein
übliches Feld! (Privat habe ich schon etwas damit gespielt wenn mal Zeit
war, im Moment habe ich aber kein System mehr, war nur geliehen, und ich
kann mich irgendwei nicht durchringen eines zu kaufen...)
Werde es aber noch mal in Angriff nehmen, man weiß ja nie was kommt und
es kann ja auch nur von Vorteil sein da auch fit zu sein.
Ich vermute mal das es bei dir ähnlich ist, es fehlt das
Hintergrundwissen zum Betriebssystem selbst. Die Applikation wäre dann
nicht mehr das Problem.
> Ich hoffe das ich einigemaßen verständlich meine Antrieb beschrieben> habe.
Naja, so ganz bin ich da noch nicht hintergestiegen was die CPU nun
machen soll. Zumindest bin ich mir noch nicht sicher.
Meine Vermutung anhand deiner BEschreibung und eigener
Vorstellung/erfahrung :
Du willst eine Reihe identischer Baugruppen herstellen...
JEDE dieser Baugruppen ist folgendermaßen Aufgebaut:
Eine CPU zur Steuerung, 16xIN und 16xOUT. Die Baugruppen können über
einen Seriellen BUS miteinander Kommunizieren. Als Steuertelegramme
werden jeweils Datenwörter von 16Bit breite verwendet von denen jeweils
ein Bit einen Kanal repräsentiert. Die Verarbeitung der Daten erfolgt
quasi wie in einem Schieberegister (Die Schaltung bekommt ein Datenwort,
schiebt dies in den Ausgang und je nachdem ob ein High oder Low anliegt
schaltet der Ausgang, beim Eingang ist es dann umgekehrt...).
(Diese serielle Kommunikation untereinander und zur Aussenwelt soll der
IEC 60870-5-101 entsprechen)
Zusätzlich spielst du mit dem Gedanken die ganze geschichte noch auf das
IEC 60870-5-101 Protokoll zu erweitern welches Datenübertragung über
TCP/IP erlaubt.
Die STEUER-CPU übernimmt dabei die Aufgabe des
Kommunikationscontrollers, sie überwacht den Seriellen Bus um
festzustellen ob eine für sie bestimmte Übertragung kommt, wertet diese
aus und dekodiert sie um aus dem zwecks Übertragung gesicherten
Datenstream wieder die 16Bit Nutzdaten zurückzugewinnen. Ebenso kann sie
selber die Übertragung veranlassen wobei die Empfänger durchaus wechseln
können. (Andere Module oder PC/Anzeigetafel) Dies soll nun auch über
TCP/IP möglich sein. Eventuell gar soweit das JEDES Modul auch als
Gateway TCP/IP <> SERIELL fungieren kann. Weitere Aufgaben sollen nicht
ausgeführt werden!
IST DIES EINIGERMAßEN RICHTIG INTERPRETIERT?
Wenn ja, dann geht das natürlich mit den ARM9 Boards. Allerdings ist das
ein wenig SEHR Überdimensioniert... In einem anderen Thread was die Rede
für einfaches Geblinke von "Thermobare Bomben auf Spatzen" werfen. Hier
jagst du dann mit den Thermobaren Bomben keine Spatzen sondern immerhin
schon Fasane...
Hast du dir mal wirklich ausgerechnet wie lange z.B. die Ausführungszeit
für die einzelnen Berechnungen nach dem Empfang eines Datenwortes über
den Seriellen BUS im Verhältniss zur reinen Übertragungsgeschwindigkeit
auf dem BUS (die ja sicherlich vorgegeben niedrig ist, oder) ist?
Selbst bei 8Bittern wird die gesamte Ausführungszeit kleiner als eine
Bitzzeit sein, Wahrscheinlich ist das Stoppbit noch nicht einmal
beendet, da sind alle Berechnungen schon erledigt!
Selbiges für die Ausgabe.
Selbst wenn dann noch die TCP/IP Geschichte dazukommt würde das sogar
noch ein 8Bitter genrell schaffen, wobei es dann wirklich schon gut zur
Sache geht. Da ist dann schon ein geschickter Programmaufbau gefragt
damit es nicht hakt.
Mit einem 32Bitter fährt man da sicher "Besser"
Aber mit einem PIC32 (oder CortexM3) , die ja auch mit 80Mhz oder mehr
laufen hast du wieder reserven bis Ultimo. Da könntest du mal kurz
nebenbei noch ein TFT Graphikdisplay zur Anzeige an jedem einzelnen µC
direkt anschließen, nebenbei MP3 zur Unterhaltung Abspielen und der µC
hat immer noch reserven. Zudem hast du hier immer noch die Möglichkeit
HARTE ECHTZEITKRITERIEN vorzugeben was bei Betriebssystembasierenden
Systemen nicht, oder nur mit deutlich höheren Aufwand geht.
Zudem glaube ich nicht mal das du beim 400Mhz board wirklich schneller
bist, denn ich habe die Erfahrung gemacht das die Berechnungszeit im
Vergleich zu der ZEit die die Spannung am IO Braucht um Hochzukommen
(der Spannungsanstieg folgt ja einer Kurve) nicht mehr ins Gewicht
fällt. Wenn man dann noch bedenkt das beim ARM9 die Informationen ja
durch die verschiedene Schichten der laufenden Software durchgereicht
werden müssen wohingegen du bei den kleineren die Treiberstufe(Hardware)
direkt ansprichst, dann ist bei solch einfachen Dingen jeder Vorteil
dahin. (Von dem ich immer noch nicht glaube das man den in deinem Fall
überhaupt braucht.)
Wie gesagt, ich bin mir nicht sicher ob ich das richtig verstanden habe
was die Systeme können müssen.Acuh zweifle ich gar nicht an das die ARM9
durchaus Ihre berechtigung haben.
Falls ich deine Beschreibung aber halbwegs richtig interpretiert habe
würde ich mir den Einsatz der ARM9 aber SEHR GUT überlegen. Die Leistung
brauchst du nicht. Die kommen da zum Einsatz wo GEWALTIGE DATENSTRÖME zu
bewältigen sind. Videobearbeitung in nahezu Echtzeit oder HighSpeed
Datenübertragung und ähnliche Dinge.
Gerade wenn du mehrere Brauchst spielt da ja auch der PReis eine
bedeutende Rolle. entweder muss du ein System selbst aufbauen, was
einiges an Erfahrung und teure Fertigung vorraussetzt (teilweise 4 oder
gar 6 Layer Bord, teilweise Impedanzrichtiges und Laufzeitangepasstes
Routing) oder du kaufst ganze Module zu welche pro Stück mit 60Euro oder
gar deutlich mehr ins Gewicht fallen. Für nicht benötigte Leistung ein
ganz schöner Happen.
Der PIC32MX795 mit 80Mhz Takt, 512K Flash, 128K Ram, USB, Ethernet,
2xCAN, 4xSPI, 5xSPI und 6x UART kostet beispielsweise um die 6 Euro. Als
EINZELSTÜCK immer noch "nur" 10Euro... Montage ist auf einer Zweilagigen
Platine ohne Probleme möglich. Die 64Pinnige H Version ist notfalls
sogar noch von einem Gelegenheitslöter von HAnd lötbar.
Das ist Preisfaktor 10x!
Wenn die Leistung oder die Schnittstellen nicht ausreichen und auch kein
anderer µC mit ausreichend Schnittstellen unter den Vertretern der C-M3
zu finden ist, klar - dann muss etwas größeres her.
Aber wenn es reicht, dann ist 54 Euro UNTERSCHIED FÜR EINE BAUGRUPPE für
den Hobbyisten eine Menge Holz. Bei mehreren Baugruppen erst recht.
Und für den Kommerziellen Einsatz wo es um Stückzahlen geht braucht man
erst gar nicht diskutieren. zumnal die sonstige HArdware die ich mir
anhand deiner Beschreibung auf dem Bord vorstelle kostenmäßig auch unter
10 Euro liegen dürfte...
Wie gesagt: Wenn ich jetzt etwas übersehen habe oder du vergessen hast
eine Anforderung mitzuteilen -Klar- dann macht ARM9 eventuell doch Sinn,
ist gar nötig! Aber sollte dem nicht so sein sind es einfach nur
erhebliche Mehrkosten, rausgeworfenes GEld, für Leistung die du nicht
brauchst.
Insbesondere da ich auch keine echte Zeitersparniss bei der
Softwareentwicklung erkennen kann die eine deutlich teurere HArdware bei
kleinen bis je nach komplexität mittleren Stückzahlen wieder rentabel
machen würde. ICh würde sogar vermuten das man bei deinen Anforderungen
auf dem PIC32 bzw. CortexM3 sogar schneller zum Ziel kommt.
Gruß
Carsten
Hallo Carsten
Ich kann nur Ufff sagen, mit so einem ausführlichen Report habe ich
nicht gerechnet.
Ich bin beruflich in der Ferwirktechnik und habe mit solchen Anlagen von
der Firma Siemens (früher SAT) zu tun, also das Gesamtkonzept ist nicht
auf meinem Mist gewachsen. Es gibt diese Anlagen von den verschiedesten
Anbietern, Sprecher,...
Die Kommunikation am Bus funktioniert nicht nach dem
Schiberegisterprinzip, sondern es werden Telegramme von vier bis einien
zig Bytes gesendet. Diese haben einen Header, Adressen und Nutzdaten,
das
Ganze ist auch noch genormt, jedoch packen die Firmen sehr viel in den
privaten Bereich und dadurch sind die verschiedenen Anbiter nicht
kompatibel.
Danke für deine Ausführungen ich werde mich doch auf den PIC32 stürzen,
so wie du es mir geraten hast.
Danke.
Lg.
Johann K.
Hallo Carsten
Bist du wirklich an dem Stamp9G20 interessiert, kannst dich ja mal auf
der Seite von taskit darüber informieren. Ich habe zwei solcher Board's
und ich könnte mir vorstellen das ich eines davon abgebe. Ich habe sie
sehr günstig erhalten, dies und einen Print mit einigen Tasten, Leds,
usw. gehören zu dem Paket. Ich mache dir den Vorschlag, du über nimmst
das Porto und ich schicke dir einfach dieses Paket (kostenlos), bei mir
würde es ohne hin nur rum liegen und mich würde es freuen wenn doch
jemand damit was anfangen kann.
Solltest du es haben wollen müßte ich irgend wie an deine Adresse
kommen.
Gib mir Bescheid.
Lg.
Johann K.
Hallo Johann,
Interesse besteht auf jeden Fall.
Und dein Vorschlag ist ja wirklich sehr entgegenkommend.
Wobei ich da durchaus bereit bin dir auch mehr als das Porto zukommen zu
lassen. Aber hier zuerst mal meine Kontaktdaten, dann können wir ja
näheres Besprechen.
Eine Email Addresse von mir "CARSTEN_1003 DasATZEICHEN yahoo.de" (das
ist meine Forenuniversaladresse als Spamschutz für die "guten" Adressen)
Schreibe mir da mal eine Email kurze Hinweismail und wir klären das
weitere (Ich Antworte natürlich dann mit der "richtigen" ;-) Mail- und
meiner Postadresse.
Alternativ kannst du sonst auch gerne Anrufen
http://www2.dastelefonbuch.de/?vm=detail&recuid=7DWNOAKHJS7ZXBA4KB3HKI5ZPGPCMXCTD5JOEAQ&sD=1&sp=69&aktion=38
(Link wegen "Rückwärtssuche" damit google nicht jeden Forenbeitrag zeigt
;-). Das ist auch der einzig Grund für die Abkürzung im Namen oben.
Realnamen bekommt man ja sonst auch über das Call)
Ach ja:
Klatec schrieb:> Die Kommunikation am Bus funktioniert nicht nach dem> Schiberegisterprinzip, sondern es werden Telegramme von vier bis einien> zig Bytes gesendet. Diese haben einen Header, Adressen und Nutzdaten,> das...
Da haben wir uns etwas Missverstanden, ich bin da nur aufs
"Schieberegister" gekommen weil ich mal eine ähnliche Schaltung gebaut
habe die die Daten über CAN bekommen hat der µC hat das dann dekodiert
und in eine Kette aus CD4094 Schieberegister geschoben. (waren 20Relais
und noch einiges mehr auf dem Bord)
Ansosnten bleibt nur nochmals zu sagen das ich persöhnlich denke das du
FÜR DIESES PROJEKT mit dem PIC32 wohl die beste Wahl getroffen hast ;-)
Gruß
Carsten