Hi, Kann es sein dass ein IO Pin der als Ausgang definiert ist DDRx auf "1" und das PORTx auf "1" gesetzt wurde, über das PINx Register auch eingelesen werden kann? Draussen ist ein Schalter direkt auf GND! In weiterer Folge wurde der PIN übrigens defekt! Ich denke der FET am IO Pin gab irgendwann mal den Geist auf, aber ein paar hundert Kurzschlüsse gegen GND hat er anscheinend verkraftet!? Kann meine Theorie stimmen?
Du hast den Pin kurzgeschlossen und gnadenlos überlastet - klar ist der jetzt kaputt. PINXn liefert immer den physikalischen Status eines PINs, auch wenn er als Ausgang definiert ist, deshalb hat das wohl eine Zeit lang funktioniert. Gruß Jonathan
Paging Dr. Manual, paging Dr. Manual! Bei AVRs kann man immer über das PIN Register den Pinzustand einlesen.
Ja. Der hält das aus. Man kann ihn als ausgang auf high schalten und runterziehen und liest eine 0 am PIN, irgendwann geht er davon aber kaputt. die schaltung auf seite 47 im datenblatt: http://www.atmel.com/dyn/resources/prod_documents/doc2543.pdf lässt auch darauf schliessen, dass es so sein müsste.
Hi, das ist es! Danke! Hab das auch gerade mit nem Emulator und der IO-view nachgecheckt! War verdammt schwer rauszufinden warum ein Eingang direkt am uP defekt wird, wenn man die Software nicht selbst hat! Hatte schon alles Mögliche mit Überspannung Induktionsspannung usw.. in Verdacht. Aber es ist wirklich nur Software - Irre...
Markus H. schrieb: > Aber es ist wirklich nur Software - Irre... Mit der Software hat das nichts zu tun, sondern nur und ausschließlich mit Deiner Hardware. Man schließt einen Schalter gegen GND nicht direkt an einen Portpin an. Man macht einen 10k Widerstand zwischen Schalter und Pin.
Das ist mir schon klar, wenn es "NORMAL" läuft würde ich das auch machen. Clamping Dioden bzw. TVS Diode würde ich auch vorsehen. In der Regel mache ich sogar einen Optokoppler drauf, wenn schon ein Kabel von der Baugruppe nach außen geht! Leider handelt es sich hierbei um einen von vorne herein nicht geplanten Taster den der Kunde mehr oder weniger erpresst hat. Man kennt das ja, sicherheitshalber sieht man ein paar Portpins auf ner Stiftleiste vor um eventuell im Nachhinein flexibler zu sein - und schon wird auch was draufgetrixt... Wie dem auch sei, das ganze Schlamassel wäre nie passiert, wäre die Software ordentlich ausgeführt worden.
Andreas schrieb: > [...] > Mit der Software hat das nichts zu tun, sondern nur und ausschließlich > mit Deiner Hardware. Man schließt einen Schalter gegen GND nicht direkt > an einen Portpin an. Man macht einen 10k Widerstand zwischen Schalter > und Pin. Und warum sollte man das generell tun? Um der 10K-Widerstandsindustrie in Zeiten der Weltwirtschaftskrise den Ruecken zu staerken? Man verbaut doch keine unnuetzen Widerstaende (schon gar nicht in der Serienproduktion) um sich davor zu schuetzen, dass ein Softwarenetwickler zu doof ist einen Eingang auch als Eingang zu definieren... Volker
In der Entwicklung oder bei Umbauten macht man das schon. Wär ja dämlich, wenn ein 5€-µC kaputtgeht, nur weil man 1ct für einen Widerstand sparen will... In der Serienproduktion macht man sowas natürlich nicht, da spielt 1ct schon eine Rolle. Gruß Jonathan
> Man macht einen 10k Widerstand zwischen Schalter > und Pin. Warum genau baut man einen Spannungteiler an eigen digital IO ? Also man hat entweder einen floating Pin wenn der Taster nicht gedrückt ist, oder nen Spannungteiler mit dem (internen) Pull up. Klingt ja nach nem tollen Vorschlag. Also 270-800 Ohm wären ja noch ok, aber 10k. Gruß Matthias
Markus H. schrieb: > Wie dem auch sei, das ganze Schlamassel wäre nie passiert, wäre die > Software ordentlich ausgeführt worden. Da wird ein klärendes Gespräch mit dem Entwickler notwendig. Du musst ihm klar machen, dass er das verbockt hat und auch warum. Es geht nicht um Schuldzuweisung sondern darum, dass er das nie wieder macht. Und vor allen Dingen, dass er sich überlegt, wie er seinen Codierstil verändern muss, damit ihm sowas nicht noch einmal passiert.
Jonathan Strobl schrieb: > In der Entwicklung oder bei Umbauten macht man das schon. Wär ja > dämlich, wenn ein 5€-µC kaputtgeht, nur weil man 1ct für einen > Widerstand sparen will... Der µC geht ja eben nicht kaputt weil man am Widerstand gespart hat, sondern weil der Entwickler Mist gebaut hat. Wenn man (in der Entwicklung) alle Eventualitaeten abdecken will, ist es auch mit einem Widerstand nicht getan. > In der Serienproduktion macht man sowas > natürlich nicht, da spielt 1ct schon eine Rolle. Nun ist es natuerlich auch nicht so ganz sinnvoll dem Prototypen einen Widerstand zu spendieren, um nachher zu merken dass die Seriengeraete abrauchen. Da ist der defekte 5€-µC schon die bessere Wahl. Es ging mir aber eigentlich auch nur darum dass Andreas 'man macht das so nicht' nicht generalisiert wird. In diesem speziellen Falle lag der Fehler ganz klar beim Entwickler, auch wenn der Elektroniker ihn vielleicht weniger schlimm haette aussehen lassen koennen. ;) Volker
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.