Forum: Mikrocontroller und Digitale Elektronik AT90S2343 macht Probleme


von Thomas Vrecar (Gast)


Lesenswert?

Hallo,
ich bin zum ersten mal in diesem Forum und würde mich freuen wenn mir
jemand helfen kann!

Ich habe eine kleine Schaltung aufgebaut wo ein Relais mit Hilfe eines
AT90S2343 angesteuert wird.
Das Relais soll für 3sec angesteuert werden nachdem am Controller ein
Pin kurz an Masse gezogen wurde!
Danach soll der Controller in eine Endlosschleife bleiben.
Soll heißen der Vorgang soll nur einmal ausgeführt werden.
Das ist nur eine Teilfunktion, aber diese bereitet mir Kopfzerbrechen!

Folgendes Problem:
Alles klappt wunderbar, naja wenn der Controller in die Endlosschleife
springt kommt es vor das er selbsständig resetet wenn ich den
Schalteingang schnell hintereinander trigger!!!!!

Kein Watchdog aktiv!
Superstabile Versorgungsspannung!
Kein Brumm!

Eingangsbeschaltung für den Triggereingang standardmäßig mit 2 Dioden
nach Masse und +5V sowie einem RC-Glied, zusätzlichem Pull-Up und
100Ohm in Reihe.
Am Eingang können keine Spannungspitzen auftreten da ich gegen
Schaltungsmasse trigger.
Trigger ich den Eingang dagegen sehr langsam, reagiert der AVR nicht
darauf, nur bei sehr schnellem Triggern.

Die Endlosschleife wird def. durch einen plötzlichen Reset verlassen!
Ich habe probehalber den AVR in den Powerdown Modus gebracht - keine
Änderung!

Auch ein anderer Pin und ein Umschreiben der Software brachte kein
Erfolg.

Wie kommt das blos?
Wer resetet den AVR?

Habe ich was übersehen???

wäre für Tipps wirklich sehr dankbar

Thomas

von HansHans (Gast)


Lesenswert?

Hallo,
100nf an VCC/Gnd ?
Wie Triggerst du  Taster /Schalter Draht oder Impulsgenerator ?
Was ist schnell hintereinander (20Mhz) ?
Wie ist Pin 1 Reset beschaltet ?
Berührst du die Schaltung beim Triggern ?

von Frank Linde (Gast)


Lesenswert?

Hallo Thomas,

wenn das Eingangssignal und die Spannungsversorgung definitiv sauber
sind, dann gibt es IMHO nur noch zwei Möglichkeiten (vorausgesetzt, Du
hast mit Deinen obigen Ausführungen die Schaltung vollständig
erläutert):

1. Das Relais erzeugt beim Abfallen eine Spannungsspitze, die zu
solchen Effekten führen kann. Du schreibst nicht, ob Du dagegen
entsprechende schaltungstechnische Vorkehrungen getroffen hast.

2. Softwarefehler. Dafür spricht der Effekt, dass langsame Impulse am
Eingang keine Reaktion zeigen. Normal wäre der umgekehrte Fall, dass
langsame Impulse registriert werden, bei schnellen Impulsen die MCU
aber nicht mehr mitkommt.

Poste doch mal Deinen Code, dann können wir vielleicht mehr sagen.

Gruß, Frank

von leo9 (Gast)


Lesenswert?

Um keine Copy Right Verletzung zu begehen kann ich keine Glaskugel
befragen, also frag ich dich: wie schauen Schaltung und source aus?

grüsse leo9

von Thomas Vrecar (Gast)


Lesenswert?

Ich muß wohl was vorweg sagen:
Ich entwickle seit Jahren MC Steuerungen und verdiene mein Geld damit!
Das ist allerdings mein erstes AVR Projekt.
Ich denke mal ich kann auf einiges an Erfahrung zurückgreifen und das
ist ja das verrückte an dieser Schaltung.........


@Hans-Hans
Siebkondensatoren sind selbstverständlich vorhanden!
Getriggert wird mit einem Taster!

Resetbeschaltung (PIN1) 10µF nach Masse und 10K an VCC
Schaltung wird beim triggern nicht berührt.

@Frank Linde
Freilaufdiode ist drin, der AVR resetet aber selbst dann wenn das
Relais abgeklemmt ist und nur eine LED angesteuert wird.

@leo9
Quellcode?

Endlosschleife, die eigentlich nicht verlassen werden kann da
Interrupts gesperrt und WDT inaktiv.
Ich poste morgen mal mehr Details der Software und der Schaltung.

danke und Gruß
Thomas

von Thomas Vrecar (Gast)


Lesenswert?

vielleicht nochmal das Problem geschildert:

Das Programm läuft in eine gewollte Endlosschleife, die meinetwegen
auch noch den Prozessor in den Power Down versetzt. WDT inaktiv,
Interrups gesperrt. (Ich programiere in Assembler!)
"Normales" triggern des Ports haben keine Auswirkungen.
Wird aber sehr schnell getriggert (2-3 HZ) resetet sich der AVR
selbstständig.
Es sind keine Impulsspitzen an den Eingängen und der Versorgung beim
triggern zu erkennen.......

Ich habe das Gefühl das ich eine Charge def. AVR's bekommen habe.
Die machten nämlich schon Probleme beim Flashen. Es war nur der High
Voltage Seriell Modus möglich !!!
Eine Musterlieferung Wochen zuvor lies sich ohne Probleme via ISP
flashen....

Ich glaube ich bin zu blöd für AVR's....

von Jörg Wunsch (Gast)


Lesenswert?

Meine Vermutung: Du rennst in einen Stacküberlauf (da das Problem ja
auch dann auftritt, wenn Du nur eine LED und kein Relais anklemmst).

Wie hast Du denn den Schalter entprellt?  Nein, ich mag keinen
Assembler-Sourcecode für Dich debuggen. :-)  In ordentlichen C-Code
würde ich nochmal einen Blick werfen, aber wer unbedingt Assembler
machen will, dem mag ich nicht helfen... mir ist meine Zeit schon für
meine Projekte zu schade, das alles in Assembler zu stemmen.

Für den Relais-Fall: wenn das Dein erstens AVR-Projekt ist, tu Dir
einen Gefallen, und fang nicht erst mit den AT90xxx Teilen an.  Die
Dinger sind bekanntermaßen nicht besonders EMV-resistent.  Selbst mit
der von Atmel empfohlenen Schutzbeschalten (da gibt's eine Appnote
dafür) ist bekannt, daß man dort schnell Störungen einkoppeln kann.
Die nach neuerer Technologie gefertigten Chips (alle ATmega außer 103
und 163 sowie die neueren ATtiny, aber die dürfte es derzeit nur als
Muster geben) sind berichtetermaßen deutlich resistenter gegen
derartige Einflüsse.

Drittens, laß mich raten, hast Du die Chips bei Reichelt gekauft?  Ein
Freund hatte neulich auch AT90S2343, die er nicht programmieren
konnte.  Wir haben hin- und herprobiert, bis wir festgestellt haben,
daß all diese Chips (immerhin aus verschiedenen Produktionslosen) den
internen RC-Oszillator im Auslieferungszustand ausgeschaltet hatten
(was es laut Atmel-Datenblatt gar nicht geben sollte).  1 MHz extern
an den Takt, und man konnte die Fuse für den RC-Oszillator setzen...

von Thomas Vrecar (Gast)


Lesenswert?

@Jörg

Nicht von Reichelt, aber ein ähnlicher Distributor :-)
Und richtig, bei 100 gekauften 2343 war der int. Oszillator
abgeschaltet!

Stacküberlauf kann nicht sein!
Wenn ich nichts am Eingang mache bleibt er ja auch in der
Endlosschleife und in dieser wird der Eingang gar nicht weiter
abgefragt - nein im Gegenteil, wenn ich ihn als Ausgang setzte (!)
passiert es trotzdem.......

Thomas

von Jörg Wunsch (Gast)


Lesenswert?

/RESET hast Du aber gemäß Appnote AVR040 beschaltet, ja?

von Thomas Vrecar (Gast)


Lesenswert?

@Jörg

zunächst nicht, habe es aber dann entsprechend abgeändert!
Zuvor waren 10µF nach Masse. Hat aber leider nichts gebracht.

Übrigens läuft die Schaltung jetzt!
Ich vermute mal das ich mit dem Layout voll daneben gegriffen habe.
Da auch 230V mit auf der Platine sind habe ich wohl Prob's mit
irgendwelchen Überlagerungen. Habe die Masse nochmals verbessert und
über 100nF an den PE gelegt, jetzt gehts störungsfrei!

Muß aber sagen das der kleine AVR wirklich sehr sensibel ist!!!

Bei meinen Atmel 89C51RC2 hatte ich nie solche Phänomene

Thomas

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.