Forum: Mikrocontroller und Digitale Elektronik Atmega8 Programmierpins verwenden


von Matthias M. (internetscout)


Lesenswert?

Hallo,
Kann ich anstatt der Programmierpins MISO,MOSI, SCK etc. im fertigen
Programm (Endumgebung) die normalen Port Pins verwenden?
Wenn ich dieses Port als Eingang verwende, dann könnte ich es mir
vorstellen.
Was passiert aber wenn ich im Fertigen Programm den Port als Ausgang
setzen will. Kann ich mich da Aussperren (Port als Ausgang ->
Programmierung?). Oder greift in dem Fall das DDR nicht?
Wenn es möglich ist, muss ich schaltungstechnisch was mit einbauen,
wenn ich die Pins in der Entwicklung doppelt belege?
Danke für Eure Antworten!

gruß

Matthias

von Alexander S. (Gast)


Lesenswert?

Du kannst dich dank der fuses vom µC aussperren lasse. Meist kann man
den pin fürs Reset nicht als aus und eingang bennutzen. Zumindest nicht
bei einem Tiny13. Wenn man den µC von ISP abschaltet, dann kann man den
reset als ein/ausgang benutzen.

von Ratber (Gast)


Lesenswert?

Also grundsätzlich kannst du die Pinne anderweitig nutzen.

ABER..........
(Jetzt kommen die Einschränkungen)


Du mußt drauf achten das sich Programmer und Schaltung nicht in die
Wolle bekommen.
Also als Eingang direkt an irgendeinem anderen Chip gibt beim
Programieren Ärger weil eben Zwei Pegel aufeinandertreffen.
Irgendwas gibt dann den Geist auf.
Als Ausgang ist das kein Problem solange die anhängige Schaltung mit
den Pegelsprüngen des Programmers zurecht kommt und diese nicht zu sehr
verfälscht.
Also Relais zb. sollte man vorher evtl. deaktivieren

Der nächste Punkt ist der Reset-Pin.
Einige Wenige Modelle haben ihn Exclusiv ohne weitere Funktion.
Den kannste nicht weiterverwenden.
Bei den Meisten kann er andere Funktionen erfüllen aber dafür muß er
dann abgeschaltet werden wie Alexander schon sagte.
Dh. du trägst bei den Fuses das ISP aus.
Der Haken ist aber das du den Controller danach nicht mehr per ISP
programieren kannst.
Das geht dann nur noch per Hochvoltprogramierung und erfordert ein
anderes Interface.

von Seppl (Gast)


Lesenswert?

Oder du "erfindest" einen neuen ISP-Stecker. Eine 5-polige DIN Buchse
z.b.
Die gibt es ja mit Schaltkontakten wenn man den Stecker reinsteckt. Du
nimmst dann eine mit Wechselkontakten und beim reinstecken werden die
Pins (MISO, MOSI, SCK) einfach von der Schaltung freigeschaltet.
So brauchst du dir keine Gedanken machen, ob der Dongle beim
Programmieren überlebt oder sich beim Programmieren evtl
Schaltungsteile aktivieren und andere Menschen gefährden.

Stell dir man vor, der NOT-Aus ist gedrückt, die Klappe ist offen und
somit ein Endschalter betätigt. Das sind zwei Sicherheitseinrichtungen,
die grade verhindern sollen, das nichts passiert. Ein Arbeiter reinigt
jetzt grade eine Maschine. Du klemmst dein Laptop an und willst eine
neue Firmware einspielen. Und ein Prägestemplen quetscht dem Arbeiter
die Hand ab.

Das erklärst du der BG wie das passieren konnte!

von Matthias M. (internetscout)


Lesenswert?

Vielen Dank für eure Antworten. Das mit dem DIN Stecker ist ne gute
Idee. So eine Art Umschalter/Schalter hatte ich schon im Sinn. Aber ich
werd wahrscheinlich auf einen größerern Chip wechseln, da habe ich dann
Genug Pins :-)

von Martin Müller (Gast)


Lesenswert?

Kann man nicht einfach das Emulatotrmode-Bit anklicken und das Programm
dann mit dem Emulator reinbrennen? Der benötigt nämlich nur den
Reset-Pin zum datentransfer. MISO, MOSI und SCK werden da nicht
benötigt.

von TravelRec. (Gast)


Lesenswert?

Wenn Du den Reset-Pin erst einmal deaktivierst und als DebugWire
benutzt, kannst Du nicht mehr über ISP an den Chip ´ran, dann nur noch
per HV-programming und den Resetpin per Fuse wieder aktivieren. Viel
Spaß beim Auslöten...

von Manos (Gast)


Lesenswert?

Wird Deine Schaltung eine Serielle-Kommunikation haben? Wenn ja könntest
Du das Update evtl. darüber einspielen.

von Ithamar G. (antimon)


Lesenswert?

Hmm wie wäre es mit einem Multiplexer? z.B. den 74HC 258? Kostet ned
viel und kann 4 Pins mit einem Bit umschalten - also z.B. wenn beim ISP
Stecker ein Pin übrig ist, diesen an den Select-Eingang schalten und im
Programmierkabel eine Brücke von Vcc auf den Pin (so vom Prinzip her).
Wenn der ISP eingesteckt ist, werden somit die Pins von ihrer sonstigen
Aufgabe befreit und dienen jetzt nur noch zum programmieren...

von Dirk (Gast)


Lesenswert?

Hi,

erstmal Grundsaetzlich kannst du die I/O's ganz normal benutzen. Ein
direktes Aussperren gibt es nicht.
Atmel hat ein schoenes Appnote dafuer gemacht, wenn ich mich Recht
erinnere kommen Serienwiderstaende von 1k in Mosi, Miso, Sck.
Der Programmer wird zwischen µC und den Serienwiderstaenden verbunden.
Der Programmer aktiviert Reset und im Reset Zustand sind die I/O's des
Mikrocontroller auf Input gestellt.

Befinden sich keine SPI Bausteine mit Chipselect an dem ISP Bus sollte
man die externe Beschaltung trennen. Es ist nicht zwingend notwendig
die externe Hardware zutrennen, aber es zuberuecktigen das eventuelle
Transistoren, Mosfet's, Led's, Relais usw. beim programmieren
versehentlich aktiviert werden. Sollten SPI Bausteine mit Chipselect
Pin sich am ISP Bus befinden kann man ohne Probleme den µC
programmieren. Die externe Hardware wird nicht beeinflusst, weil diese
nur ueber CS aktiviert werden.

Beim Mega128 liegt ISP auf Uart0, deshalb wird meistens ein 4052/4053
benutzt um den ISP vom Pegelwandler (Uart) zutrennen.
Um nicht extra Jumper / Schalter setzen zumuessen um den µC
zuprogrammieren legt man meistens einem vom Logikinput (o. Enable) des
4052/4053 mit auf Reset. Der 4052/4053 schaltet somit den Signalweg nur
auf den ISP wenn Reset aktiv ist.

Gruß,

Dirk






sowas macht man auch beim Mega128 z.B. , weil der ISP auf Uart0 liegt.
Ganz einfach ein 4052/4053 nehmen und nach der Wahrheitstabelle die
Logik beschalten. Der Enable Pin vom 4052/4053 wird mit auf Reset
geschal

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.