Hallo alle Wie ist das mit den Registerbänken bei den PICs ? Welche Modelle haben mehrere? Wird das Bank umschalten automatisch gemacht vom Compiler bei Interrupts? MFG Patrick
Die meisten PIC's haben mehre RAM-Bänke, um so "größer" um so mehr RAM. Da gibt es viele Typen, daher macht es keinen Sinn, diese pauschal aufzählen zu wollen. Auf Assembler-Ebene erfolgt das Bank-Switching nicht automatisch. Im C-Quellcode gelten nur die C-Konventionen, alles andere sollte ein C-Compiler automatisch beherrschen. Ähnlichs gilt auch für das Page-Switching im ROM(Flash). Ist aber nur für die PIC16... interessant (kein linearer Adreßbereich). Die PIC18... können Ihren ROM linear adressieren --> kein Page-Switching notwendig. Bei den dsPIC und den PIC32 bin ich mir da jetzt nicht sicher, aber ich denke mal das neuere PIC's als die 18er Familie Ihren ROM auch linear adressieren können.
Also wird bei einem Interrupt vom C Compiler einfach die Registerbank gewechselt ? MFG
Das hat mit Interrupt nichts zu tun. Je nachdem in welcher RAM-Bank deine Variablen (Register) liegen muss diese entsprechend vor dem Lesen oder Schreiben der Variable eingestellt werden. Ein C Compiler sollte dies automatisch tun. Bei Assembler musst du es selbst umschalten. Schau einfach mal in Datenblatt zu deinem PIC. Dort findest du meist relativ weit am Anfang die Speicherbelegung. Daraus kannst du sehr gut erkennen in welcher Bank welches Register liegt und wo sich dein freier RAM befindet. Gruß Sven
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.