Hallo zusammen, nachdem ich begeistert im Mikrocontroller Forum gestöbert habe, hab ich mich nun auch endlich mal angemeldet. Seit einiger Zeit versuche ich mich "so viel die Zeit zulässt" mit den Controllern der Atmel Familie auseinanderzusetzen. Bin gelernter Kommunikationselektroniker, und hab somit zumindest das Basiswissen und die Grundlagen...vieleicht kann man was draus machen... ...aber da ich neuling auf dem Gebiet uC bin, bitte ich hier und da um viel Verständnis für blöde Fragen.. ;-) Aller Anfang ist schwer.. An Equipment benutze ich das STK500, ein selbst zusammengestricktes 2 Zeilen / 16 Zeichen LCD für Ansteuerung im 4 Bit Mode... Programmieren möchte ich bevorzugt(für den Anfang auschließlich) in Assembler. Oszi, Multimeter, Netzteil, Counter, Funktionsgenerator ist alles vorhanden. Nun zum Problem: Ich möchte mit 5 Tasten (links, rechts, hoch, runter, Enter) eine Menüsteuerung realisieren. Dazu möchte ich in verschiedene Untermenüs springen können (hoch, runter, enter), und mit den links, rechts Tasten Werte verändern... bzw. Unterprogramme starten. Leider bin ich bisher am Lösungsweg kläglich gescheitert..!! Ich habe solche Menüführungen bereits oft gesehen, allerdings habe ich vergebens nach Tutorials/Source Codes gesucht, wie man das realisieren kann... Kann mir jemand von Euch weiterHELFEN?? Wie gesagt erstmal Hallo, und schonmal vielen Dank für Eure Antworten... Mfg Buzze
Man kann sowas wie Baumstrukturen - zB für eine Menüstruktur - im Flash ablegen, wenn man das so macht: menu_root: .dw 2*menu_child1 .dw 2*menu_child2 .dw 2*menu_child3 .dw 0 menu_child1: .dw 2*menu_childchild11 .dw 0,0 menu_child2: .dw 2*menu_childchild21 .dw 2*menu_childchild22 .dw 0,0 usw ... Per Assemblerprogramm können solche Strukturen ausgelesen werden (kuckst du nach LPM im Befehlssatz) und damit lassen sich recht gut Menünavigationen realisieren. Du kannst in der Struktur auch noch zusätzliche Informationen wie Ausgabestring angeben, die du anzeigen lassen willst. Zusätzlich kannst du dann auch noch die Adressen der Funktionen angeben, die du dann per ICALL oder IJMP anspringen willst.
Falls dich nicht die "ATMELS" (AT89xxx, AT91xxx, AT-weißderGeier) interessieren, sondern nur die AVRs, und von denen vorrangig die ATMegas, dann könntest du dich hier mal umschaun: http://www.hanneslux.de/avr/stopuhr/index.html http://www.hanneslux.de/avr/zuenduhr/index.html Da werden Menüs mit interaktiver Bedienung über 4 Tasten in Assembler auf ATMega8 und ATMega8535 und Textdisplay 8x24 Zeichen realisiert. Dort gibt es zwar kein Tutorial, aber kommentierte Quelltexte. ...
Oh ... richtig ... da stand ja garnichts von AVR-Controllern. Das hab ich wohl nur angenommen, weil "Controllern der Atmel Familie" sich so nach AVR anhört :-)
> da stand ja garnichts von AVR-Controllern. grins Da stand aber was vom STK500, das mag aber keine ATMELs, sondern nur AVRs. Aber wenn man etwas Konkretes meint, dann sollte man das auch beim Namen nennen. Alles Andere mag zwar cool klingen, führt aber zu Missverständnissen. Deshalb meine etwas TROLLige Bemerkung in meinem obigen Beitrag in diesem Thread dieses mikroconTROLLerforums... Bit- & Bytebruch... ...HanneS... (Duck & wech? - ist wohl besser...)
Sorry für die späte Antwort, und danke für die Tips... War leider dienstlich unterwegs, was meinen momentanen zeitlichen spiegel wiedergibt :-( Also wie immer leider zu wenig Zeit... Natürlich meinte ich die AVR`s @Hannes: Danke für die LINKS, die Adressen waren mir in diesem Forum schon bekannt, aber... die Bedeutung "Bahnhof" ist dir denke ich ein begriff.. :-) und mit dem Zusatz "Neuling..." wird alles deutlicher. :-( Was mich an Deinem (muß erwähnt werden) sehr gut kommentierten Quelltext etwas stört, ist das restliche Programm. Ich habe in solchen programmen irgendwie noch nicht die übersicht. Zunächst wollte ich einfach mal damit anfangen, eine Menüstruktur mit 4 Tasten durchwandern zu können. Verzweigungen in UP kämen dann später, Step by Step.. Also wenn Eure Zeit und Geduld das zulässt.... Hilfe!! Gruß Buzze ("...Es ist noch kein Meister vom Himel gefallen...")
Ganz ehrlich. Für sowas würde ich C nehmen. Überhaupt wenn du noch Neuling bist. Bei 'komplexeren' Datenstrukturen verliert man in Assembler schnell mal die Übersicht. Wenn du aber bei Assembler bleiben willst (kein Einwand dagegen, ich bin der Meinung jeder sollte mal Assembler programmiert haben, damit er eine Vorstellung davon kriegt was in der Maschine abgeht), dann ist ein Menüsystem für den Anfang schon etwas heftig. Was hast du den bisher in Assembler gemacht? Wovon können wir als Basis ausgehen?
Such mal nach dem Sourcecode des Atmel Butterfly Systems. Da kann man auch einiges abschauen. Es gibt im Netz auch eine Portierung für den gcc, leider habe ich den link gerade nicht griffbereit. Oliver
@Buzze: Ein Menü (auf einem Rechnersystem) ist ja nun ein Dialog zwischen System und Benutzer. Das Programm hat verschiedene Aufgaben zu erledigen: - Abfrage der Tasten Dazu gehört eine wirksame Entprellung (wird im Timer-Interrupt erledigt) und die Auswertung erneut aufgetretener Tastendrücke (wird in Mainloop und der Menüpunktermittlung realisiert). - Ausgabe eines Textes in Abhängigkeit vom aktuellen Menüpunkt. Dazu habe ich eine Ausgaberoutine, die aus einer Liste von Texten im Flash den gewünschten Text (über Indexnummer) auswählt und am Display ausgibt. Diese Routine wird über das Macro "printt" oder "printts" aufgerufen, und befindet sich in der Routinensammlung für formatierte Ausgabe "LCDprint.inc". Da ein Macro aus mehreren Befehlen besteht, setzt man es sinvoller Weise recht sparsam ein. Deshalb gibt nicht jede Menüpunktbehandlung ihren Menütext selbst aus, sondern die Routine "tastaus", die nach jeder Menüpunkt- Behandlung aufgerufen wird und auch die Tasstenflags (der Entprellung) löscht. Dies spart Redundanz im Code. - Reaktion auf die Tasten in Abhängigkeit vom aktuellen Menüpunkt. Dies sind die vielen kleinen Routinen, die über "ijmp" und der Sprungtabelle aufgerufen werden und in denen z.B. Parameter verändert werden oder Handlungen (z.B. Speichern von Daten) ausgelöst werden. Diese Routinen sind in meinen Beispielen relativ klein, weil Displayausgabe und Tastenflags löschen ausgelagert wurde. Eine Analyse der Programme sollte also auch ohne "Fahrkarte" möglich sein, kostet allerdings etwas Zeit und Aufmerksamkeit. Ich wollte anfangs auch mit 5 Tasten arbeiten, stellte dann aber fest, dass 4 Tasten reichen. ...
zum Ursprungsposting: Display, Tasten, Menue etc. ist doch auch alles im Butterfly drin .... vielleicht mal da gucken gehen in den Sourcen ....
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.