www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Atmel hängt sich auf??


Autor: danczi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!
Habe ein riesengroßes problem!

Ich habe eine art Aquariumsteuerung gebaut und programmiert! Ich habe 
auf einem atmega 16 ein display 7 taster die mit einem 100nF Kondensator 
entprellt werden, 4 transistorausgange und 3 leds hängen! ich habe mit 
bascom schon fast die ganze steuerung programmiert. NUR, der atmel hängt 
sich immer auf. und zwar nur dann wenn ich einen oder mehrere taster 
ganz schnell drücke. auf dem display habe ich auch eine uhr 
programmiert. wenn der atmel mehr oder weniger in leerlauf rennt (wenn 
nur die uhr läuft) dann funktioniert der atmel tadelos. ich habe die 
taster so programmiert das wenn ich einen taster drücke das der atmel in 
eine schleife reingeht und sobald ich den taster wieder loslasse führt 
er den gewünschten befehl aus (die schleife habe ich deswegen gemacht 
das der atmel den befehl erst ausführt wenn die den taster losgelassen 
habe sonst würde er den befehl ein paarmal ausführen).

Liegt das an der programmierung? ich habe schon gehört das der atmel 
sich aufhängen kann wenn sich störungen in der schaltung befinden (von 
einem magnetfeld induziert???).

bitte um eure hilfe

Autor: Analog (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es kann an der Programmierung oder an der Hardware liegen.

Autor: Michael G. (linuxgeek) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kann es sein dass Du keine Interrupts und timer verwendet hast? Dann ist 
das klar.

Aber bei solchen Posts kann man nur spekulieren. Schaltplan und Code 
anhaengen dann kann Dir geholfen werden. Aber nicht von mir, da ich beim 
Anblick von BASIC Brechreiz bekomme ;)

Autor: Hannes J. (Firma: eHaJo.de) (joggl) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also ich gehe mal stark davon aus, dass es an deinem Programm liegt. Ich 
bezweifle, dass dein Aquarium solche Magnetfelder erzeugt dass die Bits 
im Flash kippen.

Vielleicht liegts an der Auswertung der Schalter. Frägst du die über 
Interrupts ab? Hängt sich irgend eine Schleife auf mit der du die Taster 
pollst? Springst du in Unterprogramme wenn der Taster gedrückt wird die 
viell unabsichtlich Register verändern???

/hannes

Autor: Axel H. (mf-futzi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo  danczi,

hast du den Befehl 'debounce' (Tasten-Entprellung) verwendt? Wie schon 
oben gesagt, braucht man den Code, um helfen zu können.

Autor: danczi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
naja die steuerung ist ja noch nicht im einsatz!! darum liegt sie noch 
am schreibtisch! ich habe einfach lauter "hauptprogramm" und eine 
"unterprogramme" gemacht! Im hauptprogramm fragt er immer den zustand 
von dem taster ab! wenn der taster gedrückt wird springt er in eine 
schleife die sich im hauptprogramm befindet´; wird der taster 
losgelassen springt er dann in das jeweilige unterprogramm. ist das 
unterprogramm ausgeführt springt er wieder in das hauptprogramm zurück.

Autor: danczi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nein hab ich nicht!! ist das die entprellung im programm unbedingt 
notwendig wenn ich das schon in der hardware mit einem 100n kondensator 
gemacht habe?

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schaltplan? Code?

Autor: danczi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
code: poste ich das projekt
schaltplan: eagle datei

poste ich am abend habs gerade nicht bei mir

Autor: Daniel Czipin (danczi)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
hier der code

Autor: Paul Baumann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich sehe, daß Du die Taster nicht entprellt hast und die Taster offenbar
von +UB nach den Eingängen gehen. Das ist ungünstig, weil Du dann immer 
externe Ziehwiderstände nach Masse haben mußt, damit die Eingänge nicht 
"in der Luft hängen".

Mach es mal anders herum, d.h. Taster gegen Masse und die internen 
Ziehwiderstände aktivieren. Zum Entprellen kannst Du den DEBOUNCE-Befehl
verwenden.

MfG Paul

Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bitte, bitte, bitte, verwende nie wieder das Wort "Ziehwiderstand". Das 
tut in den Ohren bzw. Augen weh!

Ok, man muss nicht überall sinnlos englische Begriffe verwenden, aber 
man kann es auch mit dem Eindeutschen übertreiben oO

Autor: Daniel Czipin (danczi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich habe das die entprellung mit einem 100n kondensator und einen 10k 
wiederstand am masse gemacht. müsste ja auch funktionieren oder? auch 
wenn ich das schon extern gemacht habe, muss ich dann das im code auch 
noch machen?

Autor: Fabian B. (fabs)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
10k*100n sind grad 1ms. Das kann schon zu wenig sein, wenn die Taster 
arg prellen.
Nimm nen SW-Debounce dazu und es sollte sicher sein...

Gruß
Fabian

Autor: Paul Baumann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Klaus
Der Ausdruck "Ziehwiderstand" ist mir schon vor Jahrzehnten in Fleisch 
und Blut übergegangen und ich weigere mich, mit englischen Begriffen zu 
arbeiten, wenn es auch auf Deutsch geht. Bis jetzt hat man mich immer 
noch verstanden. Es ist mir gelinde gesagt auch ziemlich Brust, ob das 
Jemandem
in Augen und Ohren schmerzt.

MfG Paul

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Klaus wrote:
> Bitte, bitte, bitte, verwende nie wieder das Wort "Ziehwiderstand". Das
> tut in den Ohren bzw. Augen weh!

Was hast Du gegen Ziehwiderstand, ist doch richtig.
Paßt sogar besser, man muß nicht extra Pullup/down unterscheiden.


Peter

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Paßt sogar besser, man muß nicht extra Pullup/down unterscheiden.

Ja, stimmt. Man schreibt stattdessen viel einfacher "Ziehwiderstand nach 
Masse" ...

Autor: Der Micha (steinadler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Rufus t. Firefly wrote:
>> Paßt sogar besser, man muß nicht extra Pullup/down unterscheiden.
>
> Ja, stimmt. Man schreibt stattdessen viel einfacher "Ziehwiderstand nach
> Masse" ...

Bei negativen Spannungen ist das sogar eindeutiger, oder wo zieht ein 
Pulldown da hin?

Autor: Daniel Czipin (danczi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
aber nur weil die taster jetzt nicht enprellt sind hängt sich ja der 
atmel nicht auf oder? weil normalerweise führt er ja dann die funktionen 
ein paar mal aus oder ist das dann für den atmel zuviel bzw zuschnell?

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Daniel Czipin wrote:
> aber nur weil die taster jetzt nicht enprellt sind hängt sich ja der
> atmel nicht auf oder?

Kann man schwer sagen.
Da Du aber sagst, er hängt sich auf, wenn man zu schnell drückt, sollte 
das der Ansatz sein, den Fehler in der Software zu suchen.
Da Dein Code weder strukturiert noch kommentiert ist, mußt Du das selber 
machen.
Es ist ein Irrglaube, daß Kommentare für einen selber nutzlos sind.


> weil normalerweise führt er ja dann die funktionen
> ein paar mal aus oder ist das dann für den atmel zuviel bzw zuschnell?

Zu schnell gibt es für CPU nicht, sie macht immer einen Befehl nach dem 
anderen.
Es kann allerdings logische Fehler im Programm geben, z.B. daß auf ein 
Ereignis gewartet wird, was schon wieder vorbei ist.


Peter

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.