www.mikrocontroller.net

Forum: Compiler & IDEs Array Konstante WINAVR


Autor: Bastel Fix (bastelfix)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: psavr (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Bastel Fix (bastelfix)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Normalerweise benutzt man dafür kein #define sondern ein typedef

typedef unsigned char U08;

http://www.num.math.uni-goettingen.de/Dokumentatio...

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...)

Autor: Bastel Fix (bastelfix)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>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.

Autor: psavr (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.