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