Forum: Mikrocontroller und Digitale Elektronik Miso, Mosi, Sck als IO's benutzen


von Rainer Voigt (Gast)


Lesenswert?

Hallo!

Ich baue z.Zt. einen kleinen Roboter mit einem AtMega8. Leider gehen
mir so langsam die IO's aus. Ich würde jetzt gern einen ADC-Pin frei
machen, um damit noch die Batteriespannung verfolgen zu können. Leider
muss ich dann einen anderen Pin finden, an den ich einen der
Bodensensoren anschließen kann.

Hab ich irgendeine Chance, den Bodensensor (der ein 0V oder 5V Signal
erzeugt, wenn er den Boden sieht bzw. nicht sieht) an SCK, MISO oder
MOSI anzuschließen, sodass ich danach immernoch Programmieren kann.
Sonst würde ja das Signal vom Sensor z.B. den Clock 'überschreiben',
da passieren dann jedenfalls Schweinereien. Kann man das irgendwie
entkoppeln? Einen Widerstand in die Signalleitung des Sensors reicht da
nicht, oder?

Viele Grüße,
Rainer.

von Dobi (Gast)


Lesenswert?

hm ... beschäftige mich zwar noch nicht sehr lang mit µC´s nur wie wärs
mit der lösung:

ich nehm mal an dein bot hat kein display das diese pins belegen
würde.
löte auf die platine einfach nen Sockel für den µC drauf belege die
pins wie du sie brauchst und brenn dir den µC extern - weißt wie ichs
mein?

wie wärs damit???

von Rainer Voigt (Gast)


Lesenswert?

Hmm... er sitzt momentan ja in einem Sockel. Aber das mit dem Ausbauen
find ich nicht so praktisch, vor allem weil das mit dem Ausbauen bei
mir nicht so einfach ist...

von Kupfer Michi (Gast)


Lesenswert?

Mach wenns geht in deine Programmer in die Ausgangsleitungen (SCK, MOSI)
einen 1KOhm Serienwiderstand. Dann hast keine Probleme wenn von deiner
Schaltung ein anderer Ausgang dagegenstromt. Die meisten ICs sollten
5mA Sinken/Sourcen können.
An deinen Digitalsensor mach noch einen 20K Serienwiderstand, dann
gewinnt dein Programmer immer egal was der Sensor sagt.
Und schon kannst du MOSI,MISO,SCK doppelt verwenden.

von Rainer Voigt (Gast)


Lesenswert?

Also doch mit Widerständen. Dann kriegt der uC zwar nur noch Spannungen
von 1V - 4V im schlimmsten Falle, aber Du meinst das geht?

Gruß,
Rainer.

von Simon (Gast)


Lesenswert?

wiso denn 1V - 4C der eingang des µC zeiht doch fast keinen storm und
ist sehr hochohmig. Du kannst schliesslich auchen einen widerstand mit
einem wert jenseits von 10 KOhm gegen Vcc Schalten und es wird immer
noch als high erkannt. Kannst ja mal ausrechnen: ( der Mega8 braucht
einen min eingangsstrom von 1 µA !) nicht vergessen die evtl
vorhandenen pull widerstände mit einrechnen.

Ausserdem erkennt der µC einen wert von 0,6 V als high.

Gruss Simon

von Simon (Gast)


Lesenswert?

Und bevor ichs vergess, RTFM

von Kupfer Michi (Gast)


Lesenswert?

Das Verfahren funktioniert natürlich nich bei jeder Port Beschaltung.
Aber in deinem Fall spiel einfach alle Konstellationen durch.

Die Eingänge schalten auf Low bei 0.2*Vcc und High bei 0.6*Vcc (steht
im DB unter Electrical Characteristics)

Beim Proggen hast du in den ungünstigen Fällen einen Spannungsteiler
20K/1K und im Betrieb (natürlich bei abgezogenen Progger) hast du
ebenfalls einen Spannungsteiler von 20K und ca. 5MOhm (Port
Eingangswiderstand).

Wenn du naürlich an MOSI/MISO/SCK periphere Inputs hast fängt dein
Roboter lustig an zu tanzen....

von Rainer Voigt (Gast)


Lesenswert?

Nee, hab ich nicht. Ich denk so wirds gehen. Vielen Dank.

ciao,
Rainer.

von Michael (ein anderer) (Gast)


Lesenswert?

Fast alles falsch hier.

Nur einen Widerstand einbauen. Und zwar ca. 1.5 Kiloohm zwischen Sensor
und AVR-Pin. Die ISP-Buchse kommt ohne Widerstände direkt an den AVR.

Wenn nun das ISP nicht aktiv ist, sind die ISP-Tool-Pins alle hochohmig
und das ISP-Tool verhält sich so, als wäre es gar nicht aufgesteckt.
Dann spielt der 1.5 Kiloohm Widerstand in der Sensorleitung (fast)
keine Rolle.

Wenn das ISP aber aktiv ist, überstimmt der AVR-Pin bzw.ISP-Pin (je
nach dem, wo Du den Sonsor mit dem Widerstand angeschlossen hast) das
Sensor-Signal. Durch den Widerstand wird der Querstrom auf ca. 3mA
begrenzt.

Siehe hierzu auch die Atmel Applications Notes.

von Kupfer Michi (Gast)


Lesenswert?

Sicher ist das die einfachste und Lösung und hat weniger Nebenwirkungen.
Ich gebe jedoch folgendes zu Bedenken:

1. Einige Windows Programme fummeln manchmal ungefragt zwischendurch
auf der LPT Leitung rum. Windows tut dies regelmässige bei einem
(ungewollten) Reboot. Und schon stimmt die Annahme, dass ISP-Progger
Ausgang und die AVR ISP Pins nie gleichzeitig aktive sein können nicht
mehr. Mit einem Serienwiderstand im Progger kann einem da schon nichts
mehr passieren (ja ich bin zu faul das ISP Kabel ständig abzuziehen).

2. Hat man sich als an Anfänger erst einmal daran gewöhnt die ISP Pins
als I/O doppelt zu belegen, vergisst man garantiert irgendwann bei
einer wilden Steckbrettorgie in tiefer Nacht den Serienwiderstand am
Sensorausgang. Hat man den Widerstand im Progger immer an Bord muss man
dann nicht gleich wieder 1-2 Wochen aussetzen bis die Ersatzteile da
sind. Wenn jedoch die Widerstände stören/fehlen findet man das sehr
schnell heraus und kann Abhilfe schaffen.

Daher mein Vorschlag für Anfänger das ganze auf der sicheren Seite
anzugehen.

von Michael (ein anderer) (Gast)


Lesenswert?

@Kupfer Michi:

Wenn Du kein vernüftiges ISP-Tool benutzt, stattdessen die
billigst-primitvst-wacklig-Lösung am Paralleport, bekommst Du noch viel
mehr Probleme, weil diese Einfachst-Digner einfach viel zu fragil sind.


Der Vorschlag mit den 20 Kiloohm in der Sensorleitung und 1 Kiloohm am
"ISP-Tool", hat den Nachteil, dass das Signal mit den 20 Kiloohm und
der Eingangskapazität des AVR-Pins einen deutlichen Tiefpass bildet und
die Flanken nicht mehr ordentlich sind.

von Jörg (Gast)


Lesenswert?

@Rainer

nehm einen CD4053 Triple 2-Channel Multiplexer und beschalte den so,
dass bei Reset die Leitungen des ISP's durchgereicht werden.

siehe auch
http://www.mikrocontroller.net/forum/read-4-685.html

Gruß Jörg

von Rainer (Gast)


Lesenswert?

Hmm... Multiplexer iss auch ne Idee, aber da muss ich noch so viel dran
rum löten... (dabei hab ich eigentlich so ne schöne gedruckte Platine)
:)

Danke für die Ideen!

Rainer.

von Kupfer Michi (Gast)


Lesenswert?

>billigst-primitvst-wacklig-Lösung am Paralleport

Hast ja recht. Aber vielleicht 80-90% aller Anfänger lernen damit
laufen und das garnicht mal so schlecht. Sei also nicht so streng im
Urteil. (Bei mir ist das ohne Probleme sei knap einem Jahr im Einsatz
mit 6m PPort- und 40cm ISP-Kabel).

>Tiefpass 20K/AVR-Pin
Bei einer geschäzten max 20pF (DB sagt da nix drüber)
Pin-Eingangskapzität ergibt sich eine Grenzfrequenz von 400KHz und eine
1-tau (63% Anstieg) Zeit bis zum Umschaltpunkt Low/High von 400ns, das
entspricht bei 16MHz eine Verzögerung von 6.5 Taktzyklen. Muss man halt
abwägen was einem wichtiger 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.