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.
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???
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...
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.
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.
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
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....
Nee, hab ich nicht. Ich denk so wirds gehen. Vielen Dank. ciao, Rainer.
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.
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.
@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.
@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
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.
>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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.