AVR Studio 5 Stackgröße einstellen

Gast #2512281
Lesenswert?

Hallo,

ich habe vom freien 4kb IAR Compiler auf das AVR Studio 5 mit dem 
AVR-GCC gewechselt. Habe da allerdings Probleme mit dem Stack. Ich 
steuere ein Display mit einer eigenen putchar Routine an und die 
Stackgröße reicht nicht aus. Jetzt weiß ich allerdings nicht wo ich die 
Stackgröße einstellen kann.
Kann mir da evtl. jemand helfen. Ich benutze kein Makefile sonder die 
Projekteinstellen vom Studio.
#2512302
Lesenswert?

Michael schrieb:
> Jetzt weiß ich allerdings nicht wo ich die
> Stackgröße einstellen kann.

Man kann die Stackgröße nicht einstellen. Die Anordnung der Daten im RAM 
ist so gewählt, dass der Stack immer automatisch die maximal mögliche 
Größe hat. Wenn dir der Stack also überläuft, dann braucht dein Programm 
insgesamt zu viel RAM. Wie merkst du denn überhaupt, dass der Stack zu 
klein ist?
Gast #2512350
Lesenswert?

Ich merke es dadurch, dass meine putchar Funktion den richtigen 
Buchstaben übergeben bekommt, auf dem Display aber nur kryptische 
Zeichen dargestellt werden. Der Zeichensatz für das Display liegt im 
Flashspeicher. Früher hatte ich bei dem IAR Compiler immer ähnliche 
Probleme. Das lies sich immer mit der Größe des Stacks beheben. Sram für 
eigene Variablen benutze ich eigentlich kaum(20 Byte)
Gast #2512392
Lesenswert?

Der Zeichensatz wurde so abgelegt:

unsigned char PROGMEM Font6x8[] = {
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // "(space)"
  0x00, 0x00, 0x06, 0x5F, 0x06, 0x00, // "!"
  0x00, 0x07, 0x03, 0x00, 0x07, 0x03, // """
  0x00, 0x24, 0x7E, 0x24, 0x7E, 0x24, // "#"
  0x00, 0x24, 0x2B, 0x6A, 0x12, 0x00, // "$"
        usw. ...
Gast #2512420
Lesenswert?

Hallo,

beim Aufruf wird auf das richtige Zeichen übergeben, also ch ist 
richtig.
Kann es sein das bei "unsigned char *fontptr" noch etwas hinzugefügt 
werden muss?

int lcd_putchar(char ch, FILE *stream)
{

  unsigned char *fontptr;
  unsigned char x;

  fontptr = Font6x8;

  if((ch >= 32) && (ch < 126))
  {
    fontptr = fontptr+6*(ch-32);

    for(x = 0; x < 6; x++)
    {
     SendData(*fontptr++);
    }
  }
  return ch;
}

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren