Atmel hängt sich auf??

Gast #915857
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
(Firma: eHaJo.de) Persönliche Seite #915880
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
Gast #915892
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.
Gast #915895
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?
Gast #931687
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
Gast #931694
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
#931703
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?
Gast #931725
@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
#931914
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
#932172
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?
#933231
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

Eine eigene Frage? Dieser Thread ist über 18 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.