Forum: Mikrocontroller und Digitale Elektronik Atmega8 I/Os beim ersten Einschalten


von Jan (Gast)


Lesenswert?

Hallo,

eine Frage die bestimmt bei Experten für schmunzeln sorgt, ich weiß es 
aber wirklich nicht. :-)

Ich habe einen SMD Atmega8 in einem Projekt verbaut, die Leiterplatte 
hat eine Schnittstelle fürs programmieren. Die 5V vom Programmer sind 
nicht mit dem Controller verbunden weil er aus der Schaltung versorgt 
wird.

Beim ersten einschalten des nicht Programmierten AVRs liegen an einigen 
Pins schon Spannungen an bzw. liegen die auf Masse. Kann ich davon 
ausgehen das alle I/Os ohne Program auf dem Controller als Eingang 
definiert sind?

Ich würde gerne, um Störungen zu vermeiden, wenn möglich die nicht 
genutzten Pins als Ausgang definieren, kann ich das auch mit den Pins 
der ISP-Schnitstelle?

2 reine Eingänge (ADC6&7, Pin 19 & 22) habe ich nicht benötigt und 
vergessen auf ein festes Potential zu legen. Lohnt es sich diese mit 
einer Zinnbrücke mit benachbarten Bauteilen (einer der 
Abblockkondensatoren für die Versorgung) zu verbinden oder ist das 
Unkritisch?

Danke!

Gruß Jan

von Cyblord -. (cyblord)


Lesenswert?

Jan schrieb:
> Beim ersten einschalten des nicht Programmierten AVRs liegen an einigen
> Pins schon Spannungen an bzw. liegen die auf Masse. Kann ich davon
> ausgehen das alle I/Os ohne Program auf dem Controller als Eingang
> definiert sind?

Schaue dazu bitte in das Datenblatt, dort ist für jedes Register ein 
Wert definiert, den es nach dem Reset (dazu gehört auch ein POR) hat.
Da ein leerer Flash nur aus 0xFF besteht, sollte da auch nichts 
ausgeführt werden, was diese Werte irgendwie verändert.

von Jan (Gast)


Lesenswert?

>Schaue dazu bitte in das Datenblatt, dort ist für jedes Register ein
>Wert definiert, den es nach dem Reset (dazu gehört auch ein POR) hat.

Danke, da steht Tri-State drin, ist also kein Problem. Das erklärt mir 
auch wie ich die ISP Pins als I/O benutzt werden können.

von HildeK (Gast)


Lesenswert?

Jan schrieb:
> Beim ersten einschalten des nicht Programmierten AVRs liegen an einigen
> Pins schon Spannungen an bzw. liegen die auf Masse. Kann ich davon
> ausgehen das alle I/Os ohne Program auf dem Controller als Eingang
> definiert sind?
Ja, als offener Eingang. Ausnahme ist der Resetpin, der hat einen 
internen PU.

> Ich würde gerne, um Störungen zu vermeiden, wenn möglich die nicht
> genutzten Pins als Ausgang definieren, kann ich das auch mit den Pins
> der ISP-Schnitstelle?
Ja, denn auch die ISP-SS wird hochohmig beim Reset, und den nutzt der 
Programmer, wenn er die Pins bedienen will.
Man kann unbenutzte Pins auch als Eingang mit PU definieren. Wenn deren 
Signale eben 'unbenutzt' sind, passieren auch keine Störungen. Bei den 
ISP-Pins sind sicherlich Leitungen angeschlossen, wenn du dir unsicher 
bist, dann mache externe PUs dran und definiere sie im normalen 
Programmgebrauch als Eingang. Problematischer beim ISP Interface sind 
angeschlossene Lasten oder angeschlossene Quellen zur Nutzung im 
normalen Programmablauf. Der Programmer kann die Pins dann nicht bewegen 
oder löst irgendwelche unerwünschten Aktionen auf der Platine aus.

> 2 reine Eingänge (ADC6&7, Pin 19 & 22) habe ich nicht benötigt und
> vergessen auf ein festes Potential zu legen. Lohnt es sich diese mit
> einer Zinnbrücke mit benachbarten Bauteilen (einer der
> Abblockkondensatoren für die Versorgung) zu verbinden oder ist das
> Unkritisch?
Da bin ich mir nicht sicher, ich würde aber unkritisch sagen. Wenn du 
ADC6 und 7 im Programm nicht benutzt, gibt es ja auch keine Störungen 
durch eine evtl. Einstreuung. Und die Besonderheiten eines digitalen 
Eingangs, den erhöhten Stromverbrauch im Übergangsbereich, hat ein 
reiner ADC-Eingang ja nicht.

Ich gehe mal davon aus, das du an die unbenutzten Eingänge keine langen 
Leitung angeschlossen hast, sondern dass die einfach nur auf ein Pad 
gehen und nicht weiter.

von Jan (Gast)


Lesenswert?

Danke für Deine Antwort!

>Man kann unbenutzte Pins auch als Eingang mit PU definieren. Wenn deren
>Signale eben 'unbenutzt' sind, passieren auch keine Störungen.

Daran hatte ich garnicht gedacht, ich muss zugeben das letzte mal 
Programmieren ist eine Weile her. (und war "nur" ein Arduino)
Viel besser, einen Ausgang zerstört man nunmal leichter als einen 
Eingang.

Die ISP-Pins sind nicht verwendet, die ganze Anwendung ist ziemlich 
primitiv. 4 Schalter, 2 Kontrolleingänge, 6 Relais und 2 LEDs, im Grunde 
hätte man das auch mit Logik-Gattern machen können. Habe die ISP-Pins 
absichtlich nur zum Programmieren vorgesehen. PB Benutze ich z.B. sonst 
garnicht.

>Ich gehe mal davon aus, das du an die unbenutzten Eingänge keine langen
>Leitung angeschlossen hast, sondern dass die einfach nur auf ein Pad
>gehen und nicht weiter.

Genau, die hängen in der Luft.

Gruß Jan

von MaWin (Gast)


Lesenswert?

Jan schrieb:
> Kann ich davon
> ausgehen das alle I/Os ohne Program auf dem Controller als Eingang
> definiert sind?

Ja.

Aber niemand sagt, daß er beim zweiten Programmieren nicht diese per 
Programm als Ausgang schaltet.

Eine kluge Schaltung, die Kollisionen nicht per Kurzschluss beantwortet, 
wäre gut. 1k in Reihe tut es oft.

Jan schrieb:
> Ich würde gerne, um Störungen zu vermeiden, wenn möglich die nicht
> genutzten Pins als Ausgang definieren, kann ich das auch mit den Pins
> der ISP-Schnitstelle?

Im Prinzip: Ja.

Im Detail: Manche Prozessoren möchten, daß das erst nach 0.5s erfolgt
"Experiments using AT89S devices have shown that if the user code writes 
to any of the ISP I/O pins (MOSI, MISO, SCK) within approximately 500ms 
of the user code coming out of RESET condition, any subsequent serial 
programming operation fails."
Aber nicht deiner.

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.