PROGMEM Array

OP #1826461
Lesenswert?
• ▲
▼
Hallo!

In meinem derzeitigen Projekt möchte ich gerne einen LCD benutzen. Um 
den SRAM meines ATTinys nicht allzu sehr zu belasten, möchte ich die 
mehrere Strings als Array im Flash speichern.
1
#include <stdlib.h>
2
#include <avr/io.h>
3
#include <stdint.h>
4
#include <avr/interrupt.h>
5
#include <avr/pgmspace.h>
6

7
#include "lcd.h"
8

9
#define MAX_SENSORS    3
10

11
const char sensornames[MAX_SENSORS][10] PROGMEM = {"Temp.:","Tank:","Licht:"};
12

13
int main(void) {
14
    uint8_t sensor = 0; //wird im endgueltigen Programm von Zeit zu Zeit inkrementiert
15
    lcd_init(LCD_DISP_ON);
16
    sei();
17
    
18
    lcd_clrscr();
19
    lcd_puts_P(sensornames[sensor]);
20
    
21
    for(;;){
22
    }
23
}

Jedoch gibt der gcc den Fehler (Linie mit lcd_puts_P) "ungültige 
Initialisierung" zurück.
Wie ist das zu verstehen?

Gruss
Stephan

PS: Nutze die LCD-Lib von Peter Fleury
OP #1826485
Lesenswert?
• ▲
▼
Floh schrieb:
> Genaue Fehlermeldung und Code von lcd_puts_P bitte.
1
avr-gcc  -mmcu=attiny2313 -DF_CPU=16000000UL -Os -Wall -o forum-example forum-example.c lcd.c
2
forum-example.c: In Funktion »main«:
3
forum-example.c:20: Fehler: ungültige Initialisierung

Funktion lcd_puts_P:
1
/*************************************************************************
2
Display string from program memory without auto linefeed 
3
Input:     string from program memory be be displayed                                        
4
Returns:   none
5
*************************************************************************/
6
void lcd_puts_p(const char *progmem_s)
7
/* print string from program memory on lcd (no auto linefeed) */
8
{
9
    register char c;
10

11
    while ( (c = pgm_read_byte(progmem_s++)) ) {
12
        lcd_putc(c);
13
    }
14

15
}/* lcd_puts_p */

lcd_putc sollte nicht das Problem sein, da ich die Funktion bereits 
fehlerfrei benutzen kann.

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