Forum: Mikrocontroller und Digitale Elektronik AVR: MOSI mit Hardware SPI verwenden, MISO aber als IO


von David E. (it-web)


Lesenswert?

Hallo,

ich verwende einen ATmega8 um eine SPI Verbindung zu einem Display per
SPI aufzubauen. Da ich für alles mögliche sehr viele pins brauche, und
das Display sowieso nicht antworten kann, würde ich gerne den MISO-Pin
als Ausgang für die Resetleitung des Displays nehmen. Also als ganz
normalen IO-Pin konfigurieren.
Leider wird aber bei aktivierung des SPI dieser Pin automatisch
konfiguriert, wenn cihd as richtig verstanden habe, und bei den ganzen
overide registern, blicke ich nicht ganz durch was da was schaltet.
Beim AT91RM9200 ist das schöner gelöst :)

kann mir jemand helfen?

Vielen Dank,
David Epping

von Stefan K. (_sk_)


Lesenswert?

Der MISO-Pin wird beim Einschalten des SPI automatisch als Input
geschaltet, egal was Du im DDRB eingegeben hast (darüber bin ich auch
mal gestolpert). Ich hatte das Problem beim mega16, dürfte aber beim
mega8 dasselbe sein.

Den Pin als Eingang zu benutzen ist aber problemlos möglich. Ev. kannst
Du den Pin mit einem anderen tauschen.

Übrigens, ähnliche Baustelle:
der SS-Pin sollte möglichst als Ausgang benutzt werden, falls die
SPI-SS-Funktion nicht verwendet wird. Wird SS als Eingang betrieben,
dann schaltet ein Low-Pegel an SS den SPI ab!

Einziger Workaround für beide Probleme (wenn sie bereits in Hardware
gegossen sind): SPI in Software nachbauen ...

Gruß, Stefan

von Andi (Gast)


Lesenswert?

Als Low-aktiven Reset kannst du den Pin durchaus verwenden (bei mir z.B.
für ein Nokia 3310):
Um Low auszugeben dektivierst du die SPI, schaltest den Pin auf Ausgang
und gibst 0 aus.
Um High auszugeben schaltest du den Pin auf Eingang und aktivierst den
PullUp-Widerstand. Danach kannst du die SPI enablen - der Pin bleibt
auf Eingang und wird durch den PullUP auf High gezogen.

Gruss Andi

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.