-
-
Irgendwie fühle ich mich nicht richtig verstanden. Liegt es an der Art, wie ich mein Problem darstelle, oder überliest man den Beitrag nur sehr flüchtig? Dann kommen solche Antworten bei raus. Dies soll jetzt keine Meckerei sein, aber diesen Eindruck gewinne ich auch in vielen anderen Beiträgen.
Die Hardware und die Programmierung sind mir schon klar. Mein Problem ist sehr häufig das Verstehen der Datenblätter, da weiß ich mitunter nicht, wie manches zu deuten ist. Englisch ist ja eine sehr blumige Sprache, da erkennt man die Bedeutung eines Wortes erst im kompletten Satz. Mit einer Wort-für-Wort-Übersetzung ist einem da nicht viel geholfen, schon garnicht bei Fachliteratur mit ihren speziellen Ausdrücken, die dann womöglich auch noch abgekürzt sind. Die westdeutsche Bevölkerung hat es da wesentlich leichter. Englisch war praktisch das zweite Frühstück in der Schule.
Da mich der Arbeitsmarkt nun im zarten Alter von 50+ ausgemustert hat, werde ich jetzt wohl mehr Zeit für diese Thematik haben. Eigentlich sollten ja die Applikationen von Atmel eine gute Grundlage zum Lernen sein, aber wenn dieser Code nicht mal funktioniert und dann noch im Netz diese "hab ich zwar nicht ausprobiert, aber so könnte es funktionieren"-Geschichten, wo dann das wesentliche im Code fehlt, können einem schon in den Wahnsinn treiben. Wenn er dann nicht mal kommentiert oder nur sehr dürftig in einem miserablen denglisch, dann versteht man fast nichts davon.
Nun genug mit den Gelaber und zu meinem Problem.
Die Entprellroutine von P.Dannegger läuft sehr gut auf einem 2313 und den anderen mehrportigen, wo ich einen Port als Eingabe und den anderen zur Ausgabe nutze. Ein tiny13 hat aber nur einen Port, den ich zwangsläufig in Eingänge und Ausgänge aufteilen muß. Ohne eine Ausgabe wäre jedes Programm ein Witz. In genau dieser Konstellation scheint diese Entprellroutine nicht zu funktionieren. Da kommt bei mir nur Müll raus. Wenn darunter der gedrückte Taster wäre, könnte man ihn ja einfach ausmaskieren, aber das ist ja auch nicht der Fall.
Um der Sache auf den Grund zu gehen, habe ich mich mit dem Code auseinandergesetzt, um ihn in seiner Gesamtheit zu verstehen. Zu verstehen, was die einzelnen Befehle machen und welche Flags dabei gesetzt werden, habe ich kein Problem.
Nun ist es so, daß das Studio mir die Portinhalte der Register 0-31 nur in Hex anzeigt.
Da Peter den Code sehr schön der Reihe nach in den unteren Registern arbeiten läßt, würde man es binär sehr gut nachvollziehen können, ganz nach dem Motto, ein Bild sagt mehr als tausend Worte. Da habe ich nach einer Möglichkeit der binären Ausgabe im Studio gesucht. Dies scheint aber nicht möglich zu sein und damit hat sich diese Thema auch erledigt.
Nun habe ich die Idee, die Tasten im PinChange-Interrupt zu erfassen. In diesem Interrupt werde ich den Timer aktivieren um den Port im 10ms-Takt abzufragen.
Im PinChange-Interrupt wird ja die gedrückte Taste in PCMSK maskiert und genau diesen Eingangs-Pin werde ich während des Timerinterrupt auswerten. Ist der Pegel nach 3-5 Interrupts konstant, dann wird der entsprechende Ausgang geschaltet, der PinChange-Interrupt eingeschaltet und der Timerinterrupt wieder abgeschaltet. Nach dem reti kann dann wieder eine Taste betätigt werden.
Das wirkt dann wie ein Flipflop, aber das Tastenprellen erzeugt dann keine weiteren Interrupts, da nur der Timerinterrupt aktiv ist.
Der ganze Vorgang dürfte maximal bis zu einer halben Sekunde dauern, dann sind die Tasten wieder freigeschaltet.
Da ich den Timer für diese Anwendung sonst nicht weiter benötige, könnte das für mich ein gangbarer Weg sein.
Dies ist mir gerade während des Schreibens diese Büchlein eingefallen und werde es nach dem Futtern gleich ausprobieren.
also bis denne
Roger
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen