Forum: Mikrocontroller und Digitale Elektronik warum Interrupt Routinen bei PICs anders als z.B. bei NEC/Renesas?


von Ulf (Gast)


Lesenswert?

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?

von MaWin (Gast)


Lesenswert?

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.

von Olaf (Gast)


Lesenswert?

> 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

von Peter D. (peda)


Lesenswert?

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

von Lehrmann M. (ubimbo)


Lesenswert?

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.

von Matthias K. (matthiask)


Lesenswert?

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.

von Olaf (Gast)


Lesenswert?

> 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

von Ulf (Gast)


Lesenswert?

Vielen Dank für die Antworten.

von Patrick B. (p51d)


Lesenswert?

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.

von (prx) A. K. (prx)


Lesenswert?

Ulf schrieb:

> Was ist der Vorteil, falls es diesen gibt?

Geringerer Aufwand, also kleinere Chipfläche.

von Sven P. (Gast)


Lesenswert?

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.

von Mick M. (highlow)


Lesenswert?

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.

von Patrick B. (p51d)


Lesenswert?

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?

von (prx) A. K. (prx)


Lesenswert?

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.

von Olaf (Gast)


Lesenswert?

> 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

von W.S. (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.