Von NEC/Renesas kannte ich es bisher so, dass für jeden Interrupt eine eigene Interruptroutine existierte. Bei einem PIC18 ist das völlig anders. Dort gibt es nur zwei Interruptroutinen, eine für high Priority und eine für low. Z.B.: #pragma interrupt High_ISR void High_ISR(void) { ... Warum ist das bei den PICs so anders? Was ist der Vorteil, falls es diesen gibt?
Es ist kein Vorteil. Aber es schlägt sich halt die Hardwarearchitektur auf die Software durch. Das liegt AUCH daran, daß uC-C-Compiler-Programmierer sich viel zu viele Inkompatibilitäten leisten dürfen ohne von den Kunden abgestraft zu werden, statt Standards wie "signal" für Interrupts zu verwenden.
> Warum ist das bei den PICs so anders? Was ist der Vorteil, falls es > diesen gibt? Du bist ein Troll oder? :-) Die Renesas haben so viel mehr an Hardware gerade im Bereich der Peripherie das einen fast jeder andere Prozessor dagegen armselig vorkommt. Ich glaube Fujitsu sind auch noch ganz gut. Genauer gesagt habe ich nie so recht verstanden warum die bei uns so gaengigen Typen immer so armselig sind, weil es ja nur ein paar Register mehr braucht um es besser zu machen. Olaf
Ulf schrieb: > Warum ist das bei den PICs so anders? Was ist der Vorteil, falls es > diesen gibt? Ist historisch begründet. Der PIC wurde 1975 entwickelt und damals wußte man es noch nicht besser. Und dann hat man es als Ballast immer weiter mitgeschleift, um kompatibel zu bleiben. Vorteile hat es überhaupt keine. Ich benutze nur MCs mit getrennten Interruptvektoren, z.B. 8051, AVR. Peter
Peter Dannegger schrieb: > Ulf schrieb: >> Warum ist das bei den PICs so anders? Was ist der Vorteil, falls es >> diesen gibt? > > Ist historisch begründet. > Der PIC wurde 1975 entwickelt und damals wußte man es noch nicht besser. High- und Low-Priority gibt es erst seit PIC18 > Und dann hat man es als Ballast immer weiter mitgeschleift, um > kompatibel zu bleiben. Blödsinn > Vorteile hat es überhaupt keine. > Es hat sehrwohl Vorteile: Die High-Priority ISR kann jederzeit eine Low-Priority ISR unterbrechen. Das ist ein ganz netter Vorteil wenn man mal darüber nachdenkt.
Lehrmann Michael schrieb: > Es hat sehrwohl Vorteile: Die High-Priority ISR kann jederzeit eine > Low-Priority ISR unterbrechen. Das ist ein ganz netter Vorteil wenn man > mal darüber nachdenkt. Das geht bei Typen mit eigenen Vektoren auch, siehe 8051. Nur die AVR können das leider nicht.
> Es hat sehrwohl Vorteile: Die High-Priority ISR kann jederzeit eine > Low-Priority ISR unterbrechen. Das ist ein ganz netter Vorteil wenn man > mal darüber nachdenkt. Bei guten Prozessoren weisst du dem IRQ eine Prioritaet zwischen 0 und 7, oder 0 und 15 zu. So kannst du selber entscheiden welcher IRQ dir wie wichtig ist und dein System so sehr fein einstellen. Wie schon gesagt, nur wenige Bits mehr und ein Prozessor wird brauchbar.... > Nur die AVR können das leider nicht. Eine der Gruende warum ich damals von den Teilen weg bin. Olaf
Vielen Dank für die Antworten.
Olaf schrieb: > Bei guten Prozessoren weisst du dem IRQ eine Prioritaet zwischen 0 und > 7, oder 0 und 15 zu. So kannst du selber entscheiden welcher IRQ dir wie > wichtig ist und dein System so sehr fein einstellen. Also, soweit ich weiss sind bei den PIC24 und dsPIC30, dsPIC33 getrennte Vektoren vorhanden, mit sogar einer alternativen Vektortabelle (Bis jetzt aber nie verwendet). Ebenso können die Prioritäten zwischen 0-7 festgelegt werden. Und wenn ich mich nicht täusche können diese sogar nested Interrupt ausführen. Soo armseleig sind die PICs nun auch wieder nicht. Da die 12F-18F halt auch nicht mehr die jüngsten sind, kann man ihnen ein paar Dinge verzeihen.
Ulf schrieb: > Was ist der Vorteil, falls es diesen gibt? Geringerer Aufwand, also kleinere Chipfläche.
Diese Steinzeit-PIC sind aus heutiger Sicht halt veraltet: Einzelner Interruptvektor, Speicher auf Bänke verteilt, armseliger Kern (W-Register...) und so weiter. Bei den AVR kann man mit etwas Geschick Interrupts wieder freischalten. Dann kann aber jeder Interrupt anlaufen. Ab man das überhaupt braucht, ist wieder eine andere Frage. Ich habe es bis heute nicht vermisst. Wieder andere legen einige Pins auf einen Kreuzschienenverteiler. Damit ist man auch nicht mehr an bestimmte Pins gebunden, die womöglich gerade ungünstig doppelt belegt sind. Gleiches gibt es für Interrupts: Die kann man bei den ATXmega (nein, ich mag sie nicht...) untereinander mit irgendwelchen Aktionen verbinden. Und der Grund? Guck dir mal ein paar alte 8-Bit-Puffer oder Leitungstreiber aus den TTL-Serien an (74...). Ziemlich oft findest du da zum Beispiel einen mit niedriger Nummer und scheinbar hirnverbrannter Pinbelegung (kreuz und quer) und einen mit ähnlicher, hoher Nummer (also etwa Nummer +100 oder +200) mit identischer Funktion, aber aufgeräumter Pinbelegung. Der Grund ist einfach: Es kam ein Layer auf dem Silizium dazu und man konnte es so endlich entknoten. Jedem das Seine.
Patrick B. schrieb: > Also, soweit ich weiss sind bei den PIC24 und dsPIC30, dsPIC33 getrennte > Vektoren vorhanden, mit sogar einer alternativen Vektortabelle (Bis > jetzt aber nie verwendet). Ebenso können die Prioritäten zwischen 0-7 > festgelegt werden. Und wenn ich mich nicht täusche können diese sogar > nested Interrupt ausführen. So ist es und ich möchte es auch nicht mehr missen.
Weiss eigentlich jemand, wie alt die Renesas sind? Gibts da überhaupt 8Bit Versionen? Ein Arbeitskollege hat vor etwa 4 Jahren das erste mahl mit diesen gearbeitet und da habe ich die zum erten mal gesehen (16Bit Version). Und wie siehts eigentlich bei den neueren PICs (xlp oder wie die auch heissen) aus? Sind diese auch noch so mühsam wie die alten 8Bit Varianten?
Patrick B. schrieb: > Weiss eigentlich jemand, wie alt die Renesas sind? Renesas ist ein Merger der Halbleitersparten von Hitachi und Mitsubishi mit neuerdings NEC. Renesas selbst ist also nicht alt, aber die Ursprungsfirmen sind es und jede davon brachte diverse eigene Architekturen mit ein. Darunter waren garantiert mindestens eine 8-Bit Architektur pro Firma. Was es nicht unbedingt übersichtlicher macht.
> Was es nicht unbedingt übersichtlicher macht.
Das gehoert leider zu den Nachteilen von Renesas. Sie haben
einen riesen Berg unterschiedlicher Familien mit diversen
Unterfamilien und dazu noch total viele verschiedene
Debugger/Emulatoren.
Olaf
Olaf schrieb: > Genauer gesagt habe ich nie so recht verstanden warum die bei uns so > gaengigen Typen immer so armselig sind,... Das hat eine ganze Reihe von Gründen: Zum einen sind einige Architekturen so angelegt, daß man sie nicht wirklich in Assembler programmieren kann, was einen Compiler notwendig macht - und da sind einige Hersteller eben nicht clever gewesen, sondern haben das Leuten wie IAR, GreenHills etc. überlassen und in der Folge gibt es nur stinketeure Toolchains für diese Prozessoren. Sowas läßt eine Infrastruktur aus Bastlern und Enthusiasten eher nicht aufkommen. Als nächstes sind die Hersteller auch beim Verteilen Ihrer tollen Produkte höchst unterschiedlich. Von einigen kriegt man deren Chips an jeder Ecke und bei anderen gibt's für den Bastler garnix. Da waren Firmen wie Microchip und Atmel eindeutig cleverer als alle Hitachis, Mitsubishis, Epsons, Samsungs, Necs und Fujitsus zusammen. Die letzteren haben alle recht nette Controller in ihrem Portfolio, aber was nützt das, wenn man entweder keine Chips oder keine Toolchain bekommt? Ich sag's ja immer: "Wer den Bastler nicht ehrt, ist auch den kommerziellen Erfolg nicht wert". Aber ich würde derzeit nicht sagen, daß das Zeugs, was man so als Bastler bekommt, armseig ist. Mit PIC's und Atmels und neuerdings ARM's/Cortexen ist man eigentlich ganz passabel bedient und das Fehlen von typischen Eigenschaften 'dickerer' Chips bei kleineren Typen (PIC16, PIC12, PIC10) sollte man nicht schmähen - es hat nämlich jeder Typ seine bevorzugten Einsatzzwecke, wo andere dickere Typen nicht mithalten können, weil eben zu dick. W.S.
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.