Funktioniert eigentlich soweit
(Compiler= CodeVison)HALT
![]()
Hab ich das irgendwo überlesen![]()
Mein Ausführungen beziehen sich auf GCC !
Es kann sein, daß CodeVision es anders macht, vielleicht braucht man hier kein PROGMEM und pgm_read*
Damit ist das Tutorial auch nicht ganz richtig für Dich, das weiß ich aber nicht.
Hmm, da hilft nur probieren, es hat mich auch die Warnung mit Stack gewundert, weil soweit ich weiß gibt GCC keine Warnungen dieser Art, das weiß ich auch nur von lesen im Forum, selber habe ich es noch nicht probiert Ram zu sprengen
Wie dem auch sei, schön das es bei Dir klappt, darf ich fragen, warum Codevision ?
Mußt Du es beruflich einsetzen ?
Ich mein irgendwo muß es einen Vorteil geben, aber viel Hilfe wirst Du damit nicht bekommen(Zumindest nicht hier, vielleicht bei mikrocontroller.net)
Gruß Sebastian
P.S.
Genau so ist es, C wurde für Maschinen geschrieben, bei denen sich alles in Ram abspielt (Du weißt ja,AVR hat getrennte Daten und Programmräume)Zu deiner Frage: "Was passiert, wenn ich es nicht so mache?":
Als Vermutung kann ich nur annehmen, dass die Funktion pgm_read_byte eben deshalb notwendig ist, da ja schon der Assembler-Befehl nun mal anders ist wenn im RAM bzw. im FLASH Daten gelesen werden sollen. Somit hat da irgendjemand die Funktion pgm_read_byte() geschrieben damit du es leichter hast.
Damit gibt es bei AVR 3 mal gleiche Speicheradressen im Ram,Flash und EEPROM.
Damit der arme Kompiler weißt, woher er die Werte nehmen soll gibt es halt dieses PROGMEM, was einfach nur sagt, diese Konstante soll bitteschön in den Flash, und eben noch pgm_read* um zu sagen, ich möchte aus dem Flash lesen und nicht aus dem Ram.
Wenn man es nicht beachtet gibt es Salat und man sucht ziemlich lange nach dem Fehler.
Genauso ist es mit Zeigern, man muß anders einen Zeiger auf Werte im Flash deklarieren und anders auf Werte im Ram und noch anders auf EEprom.
Ich weiß aber nicht wieweit es bei Codevision wichtig ist! Da mußt Du schon selber in der Doku zu Deinem Kompiler nachschlagen![]()
Lesezeichen