Uwe schrieb:> Hallo Leute>> ich habe ein Problem mit einer Variable die ich in einem Interrupt> hochzählen will bekomme aber immer dieser Fehler>> "error: 'muh' was not declared in this scope">> vielleicht findet ihr ihn ja>> Gruß Uwe>>> #include <avr/io.h>> #include <stdint.h>> #include <avr/interrupt.h>>>> ISR (TIMER0_COMPA_vect)> {> PORTD = 0b00000000;> muh ++;> }>> volatile uint8_t muh;>
Die Variable muss vor der Benutzung deklariert werden. Oder darf erst
nach der Deklaration benutzt werden. Deklariere die Variable vor der ISR
oder stell die ISR dahinter. Kannst du dir aussuchen.
mfg.
Hallo Thomas,
Danke für die Antwort ich hatte die ISR allerdings zum Anfang am ende
des Programms stehen und so hatte es auch nicht Funktioniert erst das
verschieben der Variablen muh hinter das Include hatte Erfolg mit sich
gebracht
Uwe schrieb:> Danke für die Antwort...
Und?
Mal im Ernst: Warum weißt du sowas nicht? Eigentlich sollte es doch
selbstverständlich sein, daß man sich erstmal kundig macht über eine
Programmiersprache, bevor man sie verwendet. Also zuvor ein passendes
Buch lesen - und wenn man schon aus unangemessener Ahnungslosigkeit auf
die Nase fällt, dann sollte man wenigstens nicht zu bequem sein, die
Fehlermeldung des Compilers selbst zu lesen, anstatt selbige zu posten
"error: 'muh' was not declared in this scope"
und herumzufragen, ob sich jemand findet, der einen an die Hand nimmt.
Ich frag dich mal, wie du es dir vorstellst, wie es weiter gehen soll in
deinem Leben. Irgendwann wirst du bei Strafe deines Unterganges
gezwungen sein, auf deinen eigenen Beinen zu stehen und deine Probleme
selbst zu lösen - insbesondere dann, wenn so ein Problem so einfach ist
und man dessen Lösung bereits ausgedruckt bekommen hat. Jim Meba war
genervt von dir und hat deinen Zustand richtig erkannt - und hat dir den
einzig richtigen Tip gegeben, nämlich dich zu belesen. Das kann ich hier
nur wiederholen.
Das Feld der Programmiererei ist SEHR VIEL weiter und größer als nur
die richtige Stellung von Identifiern zu ihrer Verwendung zu beachten.
Also schreib mal, wie du dir das Ganze eigentlich vorstellst.
W.S.
> ... ich hatte die ISR allerdings zum Anfang am ende> des Programms stehen und so hatte es auch nicht Funktioniert erst das> verschieben der Variablen muh hinter das Include hatte Erfolg mit sich> gebracht
Nicht das Du die falschen Schlüsse daraush ziehst:
Entscheidend ist nicht, ob die Variable unmittelbar hinter den Includes
steht.
Vielmehr, ist entscheidend, dass die Variable vor jeder Funktion steht,
welche diese Variable verwendet.
Falls Du, im übrigen, die ISR einmal am Ende der Datei stehen hattest,
und dies (abgesehen von den Includ-Dateien) die einzige Datei des
Programmes war, dann hätte es gehen müssen . Da muss also was anderes
die Ursache gewesen sein.
Tue Dir mal einen Gefallen und lerne ordentliche Programmierung.
Am sinnvollsten ist es für Deine globalen Variablen ein eigenes
Includefile zu erzeugen das dann überall eingebunden wird.
Hmm schrieb:>> ... ich hatte die ISR allerdings zum Anfang am ende
...
> Vielmehr, ist entscheidend, dass die Variable vor jeder Funktion steht,> welche diese Variable verwendet.> Falls Du, im übrigen, die ISR einmal am Ende der Datei stehen hattest,> und dies (abgesehen von den Includ-Dateien) die einzige Datei des> Programmes war, dann hätte es gehen müssen . Da muss also was anderes> die Ursache gewesen sein.
Wenn Ich mir den gepusteten Originalcode anschaue, dann ist muh, lokal
in der Main-Routine und nicht global ( wenn Ich richtig sehe). Wenn dem
so ist, dann kann doch die ISR die Variable nicht kennen, sondern ist
nur für alle innerhalb main() sichtbar.
> Danke für die Antwort ich hatte die ISR allerdings zum Anfang am ende> des Programms stehen und so hatte es auch nicht Funktioniert erst das> verschieben der Variablen muh hinter das Include hatte Erfolg mit sich> gebracht
Du weisst zwar nicht warum, aber Hauptsache es geht jetzt.
Variablen, die von mehreren Funktionen benutzt werden, müssen nicht
hinter den "includes" stehen, sondern global deklariert werden. Das war
der Fehler. Deine Variablen sind aber lokal in main deklariert. was aber
auf Grund der nicht vorhandenen Einrückung des Textes keiner, ausser
Sebastian, sofort gesehen hat.
Ich hoffe, du verstehst diesen Fehler.
mfg.