Gast
#470437
Servus! AVR Studio : Version 4.12, Service Pack 4, Build 498 WinAVR : 2006-04-21 HW : ATMega16, LCD mit HD44780, 3x4 Tastenfeld Download : AVRISP Problem: Die Tastenabfrage (siehe Datei "keypad_ctrl.c", Methode "readKeypadKEY") funktioniert mit Optimierung 's' in Makefile nicht, hingegen ohne Optimierung '0' sehr wohl. Zu Testzwecken gebe ich mir den binären Wert des PIN Registers der verwendeten Schnittstelle D BUT_PIN (siehe define Konstante in "global_defs.h") auf die LCD Zeile 2 aus und den in der lokalen Variable sample_1 gespeicherten Wert von BUT_PIN auf Zeile 3 aus. Alles in der Methode "readKeypadKEY". Falls die entsprechende Taste gedrückt wird ändert sich der Wert von BUT_PIN aber sample_1 ändert sich mit Optimierung nie, obwohl volatile. Ein weiterer Versuch die Schnittstelle D als formalen Parameter zu übergeben (siehe die Parameter port und pin welche in der jetzigen Version nicht verwendet werden) funktioniert auch mit Optimierung auch wen die lokalen Variablen sample_1 und sample_2 nicht mit volatile qualifiziert werden. -> aber für mich unbefriedigende Lösung Ich wollte euch fragen, wieso in der jetzigen Version der Wert von sample_1 nie erneuert wird, obwohl mit volatile qualifiziert. Brauche wirklich Hilfe da ich bereits zwei volle Tage in dieses Problem investiert habe und keinen mm weiterkomme. Die main befindet sich übrigens in "gasmixer.c". Schönen Dank erstmal.