Lesen eines Blocks aus einem ATMeaga 32

OP #4872906
Guten Tag,

ich habe ein Problem mit einem ATMega32.
ICh will eine Block lesen. Das Beschreiben klappt. Aber das lesen 
quittiert er mit dieser Fehler Meldung.

invalid use of void expression.

eeprom_read_block ( (void*) program_2.name_1,(const void*) 7,(size_t) 
21) );

Program_2.name_1 ist ein Feld in einer Struktur.

Ich konnte den Fehler auf size_t eingrenzen.
Ich verwende beim schreiben den selben Befehl, da mekert er aber nicht.

Weiss jemmand Rat ?

Gruß Nutnic
Gast #4873007
Martin B. schrieb:
> Hallo g457,
>
> das ist nur ein Code schnipse. Ich habe noch mehr geschreiben.
> Ich wollte euch nur nicht zu Müllen mit meinem Programm.
>
> An der Klammrer liegt es nicht. :-)
>
> Gruß Nutnic
1
Deine Rechtschreibung wird nur noch von deiner Programmierkunst übertroffen.
OP #4873017
Anbei der Code:
1
struct New_Own_Program_1
2
{
3
  
4
  uint8_t time_1_min;
5
  uint8_t time_1_h;
6
  double temperature_1;
7
  uint8_t name_1 [21];
8
  
9
};
10
struct New_Own_Program_1 program_2 = {60,24,35,0};
11
  
12
int Wirte_In_EEPROM_1()
13
{
14
  eeprom_update_byte( ( uint8_t * ) 1, program_2.time_1_min );
15
  eeprom_update_byte( ( uint8_t * ) 2, program_2.time_1_h );
16
//  eeprom_update_float( ( float * ) 3, (float) program_2.temperature_1 );
17

18
  eeprom_update_block( (const void *) program_2.name_1, (void *) 7, (size_t) 21 );
19

20
  
21
  Wirte_of_Display_From_EEPROM();
22
  
23
  return 0;
24
}
25

26
int Wirte_of_Display_From_EEPROM()
27
{  
28
  /*
29
//  DOGM204_Clear_Display();
30
    
31
  DOGM204_Set_Cursor(1, 1);
32
  sprintf(text,"Aus EEPROM") ;
33
  DOGM204_Write_Text(text, true);
34
  
35
  DOGM204_Set_Cursor(2, 1);
36
  sprintf(text,"h: min: t: %d %d"  ,eeprom_read_byte ((uint8_t *) 1 )
37
                    ,eeprom_read_byte ((uint8_t *) 2 )
38
                    );//,eeprom_read_float((const float *) 3)  );
39
  DOGM204_Write_Text(text, true);
40
  
41
  DOGM204_Set_Cursor(3, 1);
42
  sprintf(text,"Name: %d "      ,eeprom_read_block   (   (void*) program_2.name_1
43
                                ,(const void*) 7
44
                                ,(size_t) 21) );
45
  DOGM204_Write_Text(text, true);
46
*/  
47
  return 0 ;
48
}

--

Das Forum bietet die [ c ] [ /c ]-Tags, um Quelltext lesbarer zu machen.

Nun, hier hilfts dann auch nicht.
-rufus
Gast #4873095
Es gibt gar kein read_block, was nicht auskommentiert ist.
Du verschwendest unsere Zeit, wenn du uns nicht den Code gibst, der auch 
tatsächlich den Fehler wirft.
Gast #4873444
> Weil  #include <stdint.h> fehlt?

Jepp.

> Offenbar kennt g457 kein C99.

Doch. Augenscheinlich besser als Du.

> ARV-GCC schon, mit o.g. Header.

Jepp. Beim TO fehlt der. Oder eine der Alternativen. Also müsste der 
Compiler meckern. Wenn er das nicht tut unterschlägt der TO entweder 
Quellcode oder Fehlermeldungen. Beides ist nicht vorteilhaft.
#4873485
Martin B. schrieb:
> ICh will eine Block lesen. Das Beschreiben klappt. Aber das lesen
> quittiert er mit dieser Fehler Meldung.
>
> invalid use of void expression.

Ist doch klar, dass dein auskommentierter Kram nicht funktioniert:
So ist eeprom_read_block deklariert
1
void eeprom_read_block(
2
  void * __dst,
3
  const void * __src,
4
  size_t __n);
Und so verwendest du das:
1
sprintf(text,"Name: %d " ,
2
               eeprom_read_block( (void*)program_2.name_1,
3
                                  (const void*) 7,
4
                                  (size_t) 21
5
                                 )
6
        );
Die Fehlermeldung "invalid use of void expression" sagt doch schon 
alles: In der Argumentliste von sprintf darf kein void-Ausdruck 
auftauchen. Also Funktionsaufruf von eeprom_read_block vor sprintf und 
dann program_2.name_1 als Argument für sprintf übergeben.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 9 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.