PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ISP Pin als Eingang nutzbar machen.



demmy
09.05.2014, 06:00
Hi zusammen,

ich hätte mal wieder eine Frage! ;)

Und zwar bei meinem aktuellen Projekt würde ich gerne das ISP nutzen. Jedoch muss ich den gesammten Port an dem die ISP-Pins hängen auch als Eingang verwenden. An diesem Port ist aktuell ein 8-bit Dipschalter angeschlossen. Weiter habe ich die Internen-Pullups aktiviert und schalte somit nach Masse.

Jetzt war meine Überlegung, das ich bei den drei betroffenen Pins einen Widerstand zwischen Wannenstecker und Dip-Schalter hänge, da ich nicht sicherstellen kann, das man doch mal vergisst die Dip-Schalter auszuschalten wenn man den ISP-Stecker steckt.
Kann man das so machen? Oder habt Ihr eine andere Idee?

Ich hoffe Ihr könnt mir ein paar nützliche Tips geben.

Viele Grüße

ePyx
09.05.2014, 06:32
Entweder einen Multiplexer oder Serienwiderstände verwenden (siehe AppNote von Atmel).

ihle
09.05.2014, 09:07
Hallo Demmy,

ich nutze ISP immer auch als Port funktioniert immer, du musst
halt darauf achten das kein Bauteil am ISP angeschlossen ist welches
nicht undefiniert schalten darf. Der AVR wird ja über den ISP Adapter
zurückgesetzt und die Pegel an den SPI Pins schalten natürlich auch
die Bauteile z.B. LEDs usw. die dort angeschlossen sind.
Deshalb schließe ich meistens nur Taster oder LEDs an die SPI Pins an.

mfg

ihle

ePyx
09.05.2014, 09:26
Deshalb schließe ich meistens nur Taster oder LEDs an die SPI Pins an.


Was machst du mit einem SPI-Device, dass während des Programmierens und Debugens aktiv sein soll??
Die korrekte und auch empfohlende Lösung ist die AppNote AVR042 von Atmel [1]. Noch genauer Figure 3-2 auf Seite 8.

LEDs und Taster sind zwar ok, aber auch nur ne Notlösung.

[1] http://www.atmel.com/images/atmel-2521-avr-hardware-design-considerations_application-note_avr042.pdf

ihle
09.05.2014, 10:00
Hallo Daniel,

ich arbeite in der Regel nicht mit SPI, ich mache das meiste
mit I²C. Natürlich ist es besser man koppelt das Signal über
Widerstände aus, aber wenn kein SPI Device bedient wird
kann man sich die Beschaltung der SPI Pins so aussuchen,
dass kein unberechtigter Schaltvorgang ausgelöst wird.

mfg

ihle

demmy
09.05.2014, 11:48
ich nutze ISP immer auch als Port funktioniert immer, du musst
halt darauf achten das kein Bauteil am ISP angeschlossen ist welches
nicht undefiniert schalten darf.


Mein Problem is halt eben das, das ich einen Dip-Schalter zum Kodieren ausgerechnet an dem ISP Pins hängen habe. Und es könnte ja passieren das beim Programmieren ein Dip-Schalter noch nach Masse durchgeschaltet ist.
Wie würde sich das denn dann auf das ISP-Programmiergerät und auf den Programmiervorgang auswirken?

Grüße

ihle
09.05.2014, 16:48
Hallo demmy,

dann ist es am besten du machst es wie ePyx sagt und koppelst das Signal mit Serienwiderständen
aus (AppNote AVR042). Die Auswirkungen wären, dass das betroffene Signal nach Masse gezogen wird und
du eine Fehlermeldung erhälst am Programmiergerät geht nichts kaputt.

28184

mfg

ihle

Sauerbruch
09.05.2014, 17:06
Und es könnte ja passieren das beim Programmieren ein Dip-Schalter noch nach Masse durchgeschaltet ist.
Wie würde sich das denn dann auf das ISP-Programmiergerät und auf den Programmiervorgang auswirken?

Wenn eine der ISP-Leitungen per DIP-Schalter mit Masse verbunden ist, funktioniert das Programmieren natürlich nicht mehr!
Ich habe manchmal von meinem Programmer (AVR ISP MKII) Fehlermeldungen á la "...line seems to be shortened" erhalten, wenn in irgendwelchen freifliegenden Versuchsaufbauten offenbar Kurzschlüsse aufgetreten waren und ich Daten zum Chip senden wollte. Dem Programmer hat das nie geschadet, der maximale Ausgangsstrom scheint also limitiert zu sein. Nur programmieren lässt sich der Chip so halt nicht.

Verbindungen im Bereich von einigen kOhm nach Masse haben den Programmiervorgang dagegen nicht gestört (z.B. kleine Piezo-Lautsprecher oder BE-Strecken von Schalttransistoren), das war für den Programmer kein Problem.

Wenn Du ganz sicher gehen willst, dass ein versehentlich geschlossener Schalter die ISP-Leitung nicht "erdet", dann schließ´ die Schalter doch über Widerstände von 1-2 kOhm an. Das ist im Vergleich zum internen PullUp-Widerstand so wenig, dass die Pins vom geschlossenen Schalter immer noch nahezu auf 0 V gezogen werden. Für den Programmer wären die 3-5 mA aber kein Problem, wenn tatsächlich mal ein Schalter geschlossen ist.

demmy
09.05.2014, 18:17
Hi,

Super Vielen Dank,

das mit den Serienwiderständen hatte ich mir schon gedacht!
Genau das wollte ich hören! :)
Also dann lassen wir den Lötkolben mal wieder Glühen! ;)

Viele Grüße

ePyx
11.05.2014, 17:45
Nach als Nachtrag: Die Serienwiderstände sollte so um die 220 Ohm liegen und nicht größer 1k Ohm sein.