Habe hier ein grosses Array für CRC und hätte gerne RAM gespart. So funktioniert CRC korrekt: "const unsigned char" Aber damit kommt ein falsches CRC raus: "const PROGMEM unsigned char" Am Array Inhalt sollte sich doch durch PROGMEM nichts ändern?? Bin aber kein AVR Experte. Habe es parallel noch mit 8051 getestet. Hier gibt es erwartungsgemäss keinen Unterschied zwischen Array mit "const unsigned char" oder "code const unsigned char"
Lothar schrieb: > Aber damit kommt ein falsches CRC raus: "const PROGMEM unsigned char" Aber nicht wenn du die Daten aus dem Array mit pgm_read_byte (..) herausliest. Einfache Zugriffe aus dem Array schlagen fehl.
Das pgm_read_byte muss man auch bei Arduino nutzen? Der Arduino Compiler erkennt nicht den Unterschied zwischen RAM und ROM Zugriff und erzeugt die unterschiedlichen Assembler Befehle dafür? Der 8051 Compiler kann das schliesslich auch. Gibt es dann irgendeine Möglichkeit den Zugriff so zu machen dass man ohne überall pgm_read_byte rein oder raus zu machen von RAM nach ROM und zurück wechseln kann z.B. durch Überladen?
Lothar schrieb: > Gibt es dann irgendeine Möglichkeit den Zugriff so zu machen dass man > ohne überall pgm_read_byte rein oder raus zu machen von RAM nach ROM und > zurück wechseln kann z.B. durch Überladen? Nein! Dr AVR hat eine Harvard Architektur https://de.wikipedia.org/wiki/Harvard-Architektur
:
Bearbeitet durch User
Der AVR GCC hat da ein Schlüsselwort __flash. Hier im Wiki findest du auch was dazu. Gibt es aber nur für C. Nicht C++ (Arduino IDE).
:
Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.