Forum: Mikrocontroller und Digitale Elektronik nicht existierenden Port benutzen


von Coconut (Gast)


Lesenswert?

Hallo zusammen,
würde mal gerne wissen, was passiert wenn ein nicht vorhandener Port auf 
einem µC angesprochen wird. Also nehmen wir an, mein µC hat Port A-C ich 
spreche aber Port F an und er soll z.B. als AIN wirken.
Stört dies in irgendeiner weise mien Programmablauf, sodass dieser nicht 
mehr das tut was er soll...

DANKE schon mal im voraus

von Johannes M. (johnny-m)


Lesenswert?

Wenn Du die richtigen Headerdateien mit den Registerdefinitionen in das 
Programm eingebunden hast und nicht mit Zeigern und Absolutadressen auf 
die I/O-Register zugreifst, dann sagt Dir der Compiler/Assembler schon, 
dass das nicht geht...

von Oliver (Gast)


Lesenswert?

Und wenn du direkt drauf zugreifst, liest und schreibst du halt irgendwo 
im Speicher. Z.B liegt dein PORTF beim Mega128 auf Adresse $62. Beim 
Mega8 liegt da der Int0-Vektor der Interrupt-Tabelle. Lesen dürfte da 
unkritisch sein, schreiben vermutlich nicht.

Oliver

von Jankey (Gast)


Lesenswert?

normalerweise geht es, wenn du den Chip aufätzt könntest du die ports 
sogar benutzen gibt sicher irgendwo ein PAD wo du da draufbonden kannst 
^^

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> Stört dies in irgendeiner weise mien Programmablauf, sodass dieser nicht
> mehr das tut was er soll...
Das solltest du am besten beantworten können, du hast doch das 
Programm geschrieben. Was macht dein Programm, wenn es nur Nonsens als 
Input bekommt? Eigentlich sollte es einen Fehler melden. Wenn es das 
nicht tut: warum liest du den Wert dann überhaupt ein?

von Michael A. (micha54)


Lesenswert?

Lothar Miller wrote:
>> Stört dies in irgendeiner weise mien Programmablauf, sodass dieser nicht
>> mehr das tut was er soll...
> Das solltest du am besten beantworten können, du hast doch das
> Programm geschrieben. Was macht dein Programm, wenn es nur Nonsens als
> Input bekommt? Eigentlich sollte es einen Fehler melden. Wenn es das
> nicht tut: warum liest du den Wert dann überhaupt ein?

Jaja, Mikrokontroller mit blue screen, das hatten wir doch bereits 
entsorgt ? Liegt da nicht noch ein olles Windows-CE in der Schrottkiste 
?

Also meine Mikrokontroller melden meist keine Laufzeitfehler, sie hängen 
sich einfach nur auf.

Gruß,
Michael

von Urs (Gast)


Lesenswert?

> Beim Mega8 liegt da der Int0-Vektor der Interrupt-Tabelle.
Der liegt im Flash, um darauf zuzugreifen braucht's andere Befehle 
(lpm/spm).

Sofern die Adresse nicht von einem anderen Register belegt wird, 
passiert soviel ich weiß gar nichts, aber dadrauf kann man sich nicht 
verlassen.
"Reserved I/O memory addresses should never be written." steht im 
Datenblatt, d.h. das Verhalten ist nicht spezifiziert. Möglicherweise 
gibt es ja auch nicht veröffentlichte "geheime" Register.

von Johnny (Gast)


Lesenswert?

Du kannst ja eine kleine Routine schreiben, welche durchprobiert, in 
welchem speicherbereich Du noch etwas reinschreiben kannst und auch 
wieder dasselbe ausgelesen werden kann. Es ist dann natürlich nicht 
garantiert, dass dieser gefundene, normalerweise nicht verwendete 
Speicher, auch in anderen Serien/Revisionen verfügbar ist.

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.