Vorneweg, ich bin kein Code-Schnorrer, ich möchte nur wissen, wie ich das am geschicktesten machen kann
Meine Tastatur funktioniert soweit, bei jedem Tastendruck wird meine Interrupt Service Routine aufgerufen. Nun stehe ich vor der Frage, wie ich das am besten mache, ein getc() und später dann scanf() zu basteln. Das scanf wird kaum noch ein Problem sein, wenn ich schonmal die einzelnen Tasten bekomme.
Ich möchte eine getc-Funktion, die solange wartet bis ein neues Zeichen anliegt und das dann zurückgibt. Ausserdem noch eine, die nicht wartet und wenn ein neues Zeichen anliegt, das zurückgibt, ansonsten 0 oder einen negativen Wert oder oder oder (was genau, ist im Moment ja noch egal).
Doch ich kann ja weder von der ISR aus sagen dass er dann und dann was bereitstellen soll, da ja niemand weiss, wann getippt wird, noch kann ich genau in dem Moment tippen, wie mein getc() was holen will.
Gibt es denn ein Registerbit/Register in dem steht ob nun ein neues Zeichen im Puffer liegt oder ob es noch das alte ist (vergleichen von alt und neu bringt ja nichts, wenn ein Zeichen zwei oder mehrmals nacheinander kommt). Wenn nein, kann ich ja in der ISR einen Pointer auf eine bestimmte RAM-Adresse setzen und dort so ein Bit einrichten. So mache ich es mit meinem X/Y Koordinaten und der Textfarbe.
Ist das sinnvoll so? Wohl eher nicht....
Erzählt mir mal bitte, wie ihr das macht damit ich auch ein wenig abgucken kann