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
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.
>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.
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.
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
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.