Hallo zusammen, ich habe gerade folgendes versucht: U08 CMD[] = {0x10,0x10,0x20,0x10,0x00,0x15}; leider wird dabei nur CMD[5] richtig gesetzt - im Rest stehen "Zufallszahlen". So gehts: U08 CMD[6]; CMD[0] = 0x10; CMD[1] = 0x10; .... Warum geht das obere so nicht? Gibt es da einen Compilerschalter, den ich vergessen habe? Viele Grüße Bastelfix
Also bei mir funktioniert auch die erste Methode, (verwende aber statt U08 unsigned char. Ich nehme an, das hast U08 irgendwo definiert, mit z.B. #define U08 unsigned char Falls Du nicht weiterkommst, müsstes Du schon den kompletten Code posten, der Fehler muss woanders liegen! MfG Peter
Genauso ist das definiert. Ich glaube auch nicht, daß es am Code liegt, da es ja mit der anderen Schreibweise funktioniert. Vielen Dank für den Denkanstoß. Viele Grüße Bastelfix
Hallo, oder hast du schon so viele Arrays definiert das dein RAM voll ist? Hatte ich kürzlich, ein paar Tabellen mit Sinus und Cosinus, dann nach ein paar Zeichen für ein Grafikdisplay und schon war das RAM dem Mega8 voll. Win AVR hat nicht expliziet diesen Fehler angemeckert. Dann habe ich die Tabellen etwas komprimiert, so das alles passt und die vermeindlichen Fehlinitialisierungen waren weg. mfg Stefan
Normalerweise benutzt man dafür kein #define sondern ein typedef typedef unsigned char U08; http://www.num.math.uni-goettingen.de/Dokumentationen/C/Einfuehrung/komplex.html Wie konntrollierst du den Inhalt des Arrays? Vielleicht gibt es dort Probleme? Gibt es andere Variablen (insbesondere Arrays) vor CMD, die ggf. über Arraygrenzen hinaus beschrieben werden und Teile von CMD überschreiben? Hast du bereits das Assemblerlisting (eventuell sogar den Flashinhalt) kontrolliert, ob die Daten dort noch korrekt eingetragen sind und ggf. beim Umkopieren vom Flash zum SRAM kaputtgehen? Mit einem prägnanten Inhalt von CMD müsste man die Werte leicht finden (0x10,0x34,0x56...)
>Wie konntrollierst du den Inhalt des Arrays? Direkt per serieller Schnittstelle über eine selbstgebautes Terminalprogram, welches ja auch bei Version 2 (siehe oberstes Posting) funktioniert. >Vielleicht gibt es dort Probleme? Glaub ich nicht, da es eben anders funktioniert. >Gibt es andere Variablen (insbesondere Arrays) vor CMD, die >ggf. über Arraygrenzen hinaus beschrieben werden und Teile von CMD >überschreiben? Nein. >Hast du bereits das Assemblerlisting (eventuell sogar den >Flashinhalt) kontrolliert, ob die Daten dort noch korrekt eingetragen >sind und ggf. beim Umkopieren vom Flash zum SRAM kaputtgehen? Flashinhalt nicht aber per AVR-Studio die hex-Datei deassembliert. Genau hier liegt das Problem -> es wird bei mir mit der 1. oben genannten Schreibweise nicht richtig compiliert (mit der 2. schon). Ist übrigends per typedef deklariert ;). Was aber auch nichts ausmacht, ich habe es ja auch als unsigned char cmd[6] probiert -> gleiches Phänomen. Achso, habe 64kB RAM und davon werden gerade mal 12k benutzt. Sollte also passen. Wie auch immer, anders geht es ja. Sieht halt nur nicht so schick aus.
Auch die erste Deklaration ist korrekt und funktioniert bei mir fehlerfrei! Glaube mir, der Hund lieg woanderst begraben! Aber solange Du nicht den ganzen Code bw. das Projekt postest, kann ich Dir nicht weiterhelfen, ich kann Dir bloss sagen, suche den Fehler an anderer Stelle! Gibt es Warnings beim Compilieren? Welche Compiler, IDE, Version, CPU etc... verwendest Du? Ich verwende die aktuelle WinAVR_20060421 und AvrStudio 4.12 SP-4 Gruss Peter
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.