Gast
#81112
Hallo! Ich habe in näherer Zukunft vor über meinen ATmega161 und einige Solid-State-Relais ein paar Geräte im Haushalt zu schalten. Dafür schreibe ich im Moment ein Menü. Leider habe ich noch nicht so sonderlich viel erfahrung und wollte erstmal meinen Code posten und nach verbesserungen fragen. Testen konnte ich das Programm bisher noch nicht weil mein neues LCD noch nicht da ist. Erstmal zur Umgebung: µC: Atmega161, LCD Standartkontroller 16x4 Zeilen, Compiler: AVR-GCC, Programmer: PonyProg2000 mit einem ISP Dongle. Den Quellcode habe ich angehängt. Meine größte Sorge bei dem Programm ist eigentlich das Timing.(Entprellen der Tasten). Als Taster benutze ich einen Drehimpulsgeber. Wenn der Taster gedreht wird soll das Nächste bzw. vorherige Geräte gewählt werden. Beim Drücken soll es eingeschaltet oder ausgeschaltet werden. Es wäre nicht schlecht wenn ich die Interrupts vermeiden könnte. (Vor allem weil der Drehimpulsgeber zwei Drehrichtungen und einen Taster hat und der µC nur 2 externe Interrupts.) Ich weiß jedoch nicht wie ich verhindern kann das der µC mehrere Impulse bei einer Drehung erkennt und Schritte überspringt. Ich hab mir dazu schon ein paar Gedanken gemacht aber ob die so toll sind :/ if (PORTA && 0x01 == 0x01) { while (PORTA && 0x01 == 0x01); i++; } Ist das eine saubere Lösung einen Pin abzufragen? Für Kritik bin ich immer offen :)