Hallöchen!
Bei meinem Mikrocontroller (mega8) geht immer der PINC.0 kaputt.
An dem ist ein 10k pull-up widerstand. Der Pin wird als Eingang (Taster
auf Masse) benutzt.
Nach einiger Zeit funktioniert der Pin nicht mehr.
Ich habe im Programm den Pin als Eingang definiert.
MUSS ich dann noch zusätzlich den Internen Pull-up einschalten?
Irgendwas geht da ja schief.
Danke
Mark
Der Pin geht kaputt, weil in Code-Zeile 42 der Wurm drin ist. Da
schaltest du bestimmt den Pin als Ausgang mit High-Pegel und schließt
ihn mit dem Taster kurz.
MfG
Marius
>Und erst nach dem Tauschen des uCs geht er wieder? Oder wie?
Genau!
Das Programm sieht vereinfacht so aus:
$regfile = "m8def.dat"
$crystal = 8000000
$hwstack = 40
$swstack = 80
$framesize = 90
$baud = 9600
Config Pinc.0 = Input
Portc.0 = 1 (!!! nachträglich eingefügt!!!)
Config Portd.2 = Output
Taster Alias Pinc.0
Led Alias Portd.2
Led = 0
do
If Taster = 0 then
LED = 1
else
Led = 0
end if
Loop
end
Erstmal funktioniert alles.
aber nach 2 Tagen geht es nicht mehr.
Wenn ich den PINC.0 per Software auf High schalte, reagiert er nicht.
Wenn ich den PINC.1 beim gleichen Controller als Eingang nehme
funktioniert alles wieder.
Jemand eine Idee?
Mfg Mark
Es würde mich wundern, wenn man einen Portpin durch Software kaputt
machen könnte. Ich tippe eher auf die äußere Beschaltung.
Ist der 10 kOhm wirklich am gleichen Vcc angeschlossen, mit dem der
Controller versorgt wird? Und die gemeinsame Vcc ist nicht über den
"maximum ratings"?
kenne mich mit Bascom nicht aus, ich sehe aber ganz oben in deinem Code
das du einmal Pin und einmal Port schreibst.
Config Pinc.0 = Input und 2 Zeilen drunter...
...Config Portd.2 = Output
liegt da vielleicht der Hund begraben.
Hast du dir mal die Hilfe/Tutorial von Bascom angesehen solche Dinge
sollten doch beschrieben sein.
oder du kommst nach 2 Tagen uebern Teppich drueckst den Taster
und entladest dich auf den armen Pinc.0 unn tot iss er.......
reihenwiderstand und Z-Diode rein als 'verhuetung' ;)
ps. klemm das ganze mal um auf pinc.1 wo der .0 kaputt
ist, wie lange der haellt
vlg
Charly
Du hast wahrscheinlich PINC.0 in irgendeiner Initialisierung als Ausgang
definiert. Bei 5V verträgt der AVR auf Dauer keine Kurzschlüsse.
Miss mal den Strom am Taster gegen Masse.
Ansonsten könnte noch eine Spannungsdifferenz zwischen deinen Massen
bestehen und die Eingangsschutzdioden brennen beim Tasten durch.
@Thomas O.
Das ist schon richtig mit PIN/PORT
Im Anhang ist der Schaltplan. Sorry, dass es so unübersichtlich ist,
aber ich denke mal, da kann man schon was erkennen.
Mark
Wie wärs mit kalter Lötstelle, oxidierter Kontakt am Pin. Neuen ATMega8
eingesteckt, und schon gehts wieder ... für 2 Tage.
AVCC (Pin20) und AGND (Pin22) beschaltet?
Naja, 100nF am Quarz ist ja der Hammer. Ansonsten hast du schön alle
Vorgaben von den IC-Herstellern ignoriert (im Plan). Blockkondensatoren
an der Versorgung, Resetbeschaltung und Serienwiderstand und ein kleines
C (wie bei der Resetbeschaltung z.B.) am Tastereingang.
Hast du den Bus schon angeschlossen ? Wo betreibst du die Schaltung ?
Das Kabel ist ca. 40 cm lang.
AVCC (Pin20) und AGND (Pin22) beschaltet!
>Du hast wahrscheinlich PINC.0 in irgendeiner Initialisierung als Ausgang>definiert. Bei 5V verträgt der AVR auf Dauer keine Kurzschlüsse.
Habe das programme gerade noch mal durchgeguckt. PINC.0 wird nur als
Eingang definiert.
>Miss mal den Strom am Taster gegen Masse.
Werde ich machen. Den Internen Pull-up habe ich jetzt auch aktiviert.
Dann habe ich 10k int. + 10k extern.
Also muss der Strom (5V / 20k) 0,25 mA sein. RICHTIG?
Mfg Mark
Das Kabel ist ca. 40 cm lang.
AVCC (Pin20) und AGND (Pin22) beschaltet!
>Du hast wahrscheinlich PINC.0 in irgendeiner Initialisierung als Ausgang>definiert. Bei 5V verträgt der AVR auf Dauer keine Kurzschlüsse.
Habe das programm gerade noch mal durchgeguckt. PINC.0 wird nur als
Eingang definiert.
>Miss mal den Strom am Taster gegen Masse.
Werde ich machen. Den Internen Pull-up habe ich jetzt auch aktiviert.
Dann habe ich 10k int. + 10k extern.
Also muss der Strom (5V / 20k) 0,25 mA sein. RICHTIG?
Mfg Mark
Ja, der Bus ist schon dran.
Die Schaltung läuft im Auto und FUNKTIONIERT auch.
Aber nach paar Tagen läuft sie nicht mehr, weil der Eingang nicht mehr
reagiert. Habe den Controller ausgebaut, und auf dem STK 500 getestet.
Der Pinc.0 lässt mit sich NICHTS mehr machen.
Wenn ich an den Pinc.0 eine LED anschliesse, und ein Kurzes Programm
schreibe, dass die LED einfach leuchten soll, dann tut sie es nicht.
Also ist der Pin definitiv defekt.
Nur warum?
Mfg
Im Auto gibt es viele Spannungsspitzen auch über Masse/Fahrzeugrahmen.
Wo und wie hängt deine Schaltung an Masse?
Wo und wie hängt der Taster an Masse?
Ich benutze zur Tasterabfrage den Debounce befehl. Kann es damit was zu
tun haben?
sehr vereinfacht sieht das Programm so aus.
Habe nur das gelassen, wo es was mit dem Taster zu tun hat.
$regfile = "m8def.dat"
$crystal = 8000000
$hwstack = 40
$swstack = 80
$framesize = 90
$baud = 9600
Config Pinc.0 = Input
Portc.0 = 1
Config Portd.2 = Output
Taster Alias Pinc.0
Led Alias Portd.2
Led = 0
....
....
....
Do
Debounce Pinc.0 , 0 , Senden , Sub
Loop
End
Senden:
....
....
....
return
>Im Auto gibt es viele Spannungsspitzen auch über Masse/Fahrzeugrahmen.
ok
>Wo und wie hängt deine Schaltung an Masse?
an einem "normalen" massekabel.
>Wo und wie hängt der Taster an Masse?
Es sieht wie eine Schleife aus. Also Masse der Schaltung Taster
Eingang
Mark schrieb:> Dann habe ich 10k int. + 10k extern.> Also muss der Strom (5V / 20k) 0,25 mA sein. RICHTIG?
Interner Pullup hat etwa 70k (50-100). Bei einem externen Pullup von 10k
spielt der interne keine Rolle mehr. 10k & 70k parallel ergibt 8,75k.
> Die Schaltung läuft im Auto
also unter extremen Bedingungen. Das wird nicht ohne besondere
Schutzmaßnahmen funktionieren. Selbst 40cm Kabel können schon extreme
Störungen einfangen. Masseschleifen vermeiden!
>also unter extremen Bedingungen. Das wird nicht ohne besondere>Schutzmaßnahmen funktionieren. Selbst 40cm Kabel können schon extreme>Störungen einfangen. Masseschleifen vermeiden!
Ich sollte vielleicht noch was erzählen.
Nach dem ich die Schaltung gebaut habe, hat sie bei mir auf dem Tisch
funktioniert.
Dann bin ich damit zum Auto gegangen und alles dort angeschlossen. Hat
auch Super funktioniert.
Da ich "kein gutes Gefühl" hatte, habe ich den PLUS kabel abgeklemmt.
Die Schaltung also erst mal Spannungslos gelassen, bis ich Zeit hatte
weiter zu basteln.
Nach dem Anklemmen der Betriebsspannung in 2 Tagen (motor war aus) hat
der Taster nicht mehr Reagiert.
Neuen Controller genommen, geflasht, eingesetzt. Funktioniert alles
wieder.
Nach dem Abklemmen der Betriebsspannung und 2 Tage Wartezeit
funktioniert der Eingang wieder nicht.
So, jetzt habe ich so ziemlich alles erzält was ich weiss.
Danke
Mfg Makt J.
Mark schrieb:> Also muss der Strom (5V / 20k) 0,25 mA sein. RICHTIG?
FALSCH. ;o) 5V/5k = 1mA 2x10k parallel sind 5k
Leuchtet die LED (MIT Vorwiderstand) nur nicht gegen VCC oder auch nicht
gegen GND? Sicher ist nur einer der Transistoren durch...
Die LED funktioniert ja im Prinzip.
Der Eingangspin ist das Problem. Er erkennt meinen Tasterdruck nicht,
und somit bringt der mega8 meine LED nicht zum Leuchten.
>Leuchtet die LED (MIT Vorwiderstand) nur nicht gegen VCC oder auch nicht>gegen GND? Sicher ist nur einer der Transistoren durch...
Achso, jetzt habe ich die Frage kapiert.
Der Pinc.0 ist IMMER auf LOW. auch wenn ich den per Software auf HIGH
schalte.
Mark schrieb:> Die Schaltung läuft im Auto ...
Oh, Mann... immer diese Salamitaktik!
> Die Schaltung läuft im Auto ...
Wie sieht das Layout aus?
> Nach dem ich die Schaltung gebaut habe, hat sie bei mir auf dem Tisch> funktioniert.
Wie lange?
Auch wenn ich das Problem nicht verstehe, mein Vorschlag wäre, den
Taster über einen Optokoppler galvanisch getrennt zu betreiben. Falls Du
sicher bist, dass der Pin von aussen zerstört wird, dann dürfte das nur
noch den Optokoppler treffen wenn überhaupt, denn der Optokoppler wird
ja deutlich niederohmiger betrieben.
Ich hoffe, Du hast bei Deinen LED Tests immer PortC.0 (nicht
PinC.0)benutzt, da ist schon so mancher auf die Nase gefallen.
>Wie sieht das Layout aus?
Normal :) Die Busleitungen (SPI) sind so kurz wie möglich. Max 2 cm
lang.
Die Leitung zum Taster ist auch nichts besonderes.
Am Layout soll das Problem nicht liegen.
>Wie lange?
Paar Stunden
Der Tipp mit dem Optokoppler gefällt mir sehr. Kann er viel ab?
So werde ich das mal probieren.
Aber warum geht mein Pin im jetztigen Zustand kaputt, verstehe ich immer
noch nicht.
Hallo Mark,
erstmal haben wir hier kräftig über Deine Schaltung geschmunzelt. Als
wir dann auch noch gelesen haben, dass die Schaltung im KFZ
funktionieren soll, ... Wir entwickeln hier Steuergeräte für den
Automotivebereich.
Nach 2 Minuten Lesen deines Beitrags weiss man nicht, was man dazu sagen
soll.
Hier werden zahlreiche (Robust-)Designregeln nicht eingehalten.
Fang bitte erst einmal damit an, dass Du den Schaltplan neu zeichnest,
so dass man ihn auch wirklich lesen kann. In der jetzigen Form ist der
nämlich eine glatte Frechheit.
Danke!
lewehe70
Mark schrieb:> Die Schaltung läuft im Auto und FUNKTIONIERT auch.
Im Auto sollten man niemals Leitungen legen, die direkt zum MC führen.
Schalte mal ein 10k Schutzwiderstand in Reihe nach dem Pullup.
Eine Frage:
Wer zwingt Dich, Drähte immer durch Bauelemente zu ziehen?
Das sieht scheiße aus und macht man ja auch in real nicht.
Man darf sogar Drähte neu verlegen, damit es besser aussieht.
Schau Dir mal andere Schaltpläne an, wie die aussehen.
Peter
Mark schrieb:> @Thomas O.> Das ist schon richtig mit PIN/PORT> Im Anhang ist der Schaltplan. Sorry, dass es so unübersichtlich ist,> aber ich denke mal, da kann man schon was erkennen.> Mark
und wir sollen beim lesen die Zeit investieren die du beim
zeichnen gespart hast ?
wenn du das so aufgebaut hast wie du Schaltbilder zeichnest,
dann wundert mich nix mehr.....
bei uns nennt man sowas Knauper oder Edelmurkser
Man, was wollt Ihr alle vom Schaltplan?
Das ist KEIN Schaltplan zum lesen, sondern ein zum Layout machen.
Wer das Target kennt, weiss was ich meine.
Es Wird zuerst das "Schaltplan" gezeichnet, und dann das Layout gemacht.
Es muss nicht schön aussehen. Hauptsache die Bauteile müssen richtig mit
einander verbunden sein.
Ich habe das ja nicht extra schnell für Euch gezeichnet, damit einige
sich verarscht fühlen.
Danke für die Aufmerksamkeit.
P.S. ich weiss, einige zeichnen auch im Target ihre Schaltpläne gut.
Mark
Nochmal das Fehlerbild genauer. Der µC funktioniert noch, jedoch macht
PINC0 einen Kurzschluss gegen Masse? Unabhängig von der Konfiguration?
Dann sind die Eingänge wahrscheinlich durch ESD zerschossen. Das ganze
liegt doch nicht etwa in der nähe der Zündung?
(Ein andere Art von defekt wäre Pin hochomig über PIN-Register lässt
sich im Zustand als Ausgang der ausgegebene Logiklevel auslesen.)
Die zwei Kabel zum Taster hin sind in Ordnung und an keiner Stelle durch
Metallkanten angeritzt?
Ein 1kOhm Widerstand zwischen Taster und µC-Eingang müssten alle
schädlichen Massestörungen abfangen und den Eingang trotzdem sicher auf
Low-Pegel bringen. (Quasi Symptombehandlung statt Ursachenforschung)
Noch eine allgemeine Frage, wer oder was schaltet der Taster? Damit wir
hier evtl. Fehlschlüsse von dir entdecken können.
>Der µC funktioniert noch, jedoch macht>PINC0 einen Kurzschluss gegen Masse? Unabhängig von der Konfiguration?>Dann sind die Eingänge wahrscheinlich durch ESD zerschossen. Das ganze>liegt doch nicht etwa in der nähe der Zündung?
Genau, ich habe immer kurzschluss gegen masse, unabhängig von der
Konfiguration.
nein, die Schaltung ist nicht in der Nähe von Zündung.
Ich habe mal so eine Idee. Kann ich den Conroller schützen, indem ich
ein 100n Parallel schalte und eine Sperrdiode noch in Reihe? (s. Anhang)
Oder Bringt die Diode nichts, weil die Durchlagspannung durch ESD
überschritten wird?
Danke
Mach mal die Diode wieder raus und ersetze sie durch einen Widerstand
von 470 Ohm. Lege den Ziehwiderstand (zwischen Portpin und +UB) auf 4,7
KOhm aus.
Mit der Diode kriegst Du den Portpin nicht mehr richtig auf Masse
gezogen.
MfG Paul
Du könntest auch zwischen PC0 und S1 einen 10k-Widerstand legen und
direkt am S1 mit 10k gegen +5V den PullUp-Widerstand (z.B. auch 10k)
schalten.
Die Clamping-Dioden im Mikrocontroller sollten in dieser Kombination
schon sehr hohe Überspannungen verbrennen können (ich spreche von
ESD-Entladungen).
Du kannst aber auch zur Sicherheit noch einen Kerko im nF-Bereich direkt
am Längswiderstand zu S1 hin gegen Masse legen (normalerweise am
Stecker/Buchse zum Gerät hin). Achte darauf, dass dein Tastersignal
dadurch nicht zu stark verschliffen wird.
Die Firmware sollte noch eine Entprellung des Tastersignals einstellbar
(Entprellart, Entprelltiefe) vorhalten.
Mark schrieb:> Es Wird zuerst das "Schaltplan" gezeichnet, und dann das Layout gemacht.> Es muss nicht schön aussehen.
Was, das Layout... ;-)
> Man, was wollt Ihr alle vom Schaltplan?> Das ist KEIN Schaltplan zum lesen, sondern ein zum Layout machen.
Hast du Angst davor, hier dein Layout zu zeigen, oder wie?
Mark schrieb:>>Wie sieht das Layout aus?> Normal :) Die Busleitungen (SPI) sind so kurz wie möglich.
Es geht hier nicht um den SPI, der geht ja offenbar auch nicht kaputt.
> Die Leitung zum Taster ist auch nichts besonderes.> Am Layout soll das Problem nicht liegen.
Von sollte, hätte, wäre und dürfte könnten dir sicher einige eine
Geschichte erzählen... :-o
Aber bitte, du mußt dein Layout nicht zeigen. Nur ist es eben so, dass
du ein Problem hast. Und das kann sehr wohl im Layout liegen...