Tabelle lesen

Hallo,
ich steh auf dem Schlauch.
Schaut euch einmal meine Tabelle an.
Ich bekomme nicht die richtigen Werte.

#include "Streaming.h"
const PROGMEM int Tabelle[43][30] = { {-155,-146,-136,-128,-120,-113,-105,-99,-92,-86,-79,-74,-68,-63,-58,-53,-48,-44,-39,-35,-30,-26,-22,-18,-14,-11,-7,-4,0},
                                        {-151,-142,-132,-124,-116,-109,-101,-94,-87,-81,-75,-70,-64,-59,-53,-48,-43,-39,-34,-30,-26,-22,-17,-14,-10,-6,-2,2,5},
                                        {-146,-137,-127,-119,-111,-104,-96,-89,-82,-76,-70,-65,-59,-54,-48,-43,-38,-34,-29,-25,-21,-17,-12,-9,-5,-1,3,7,10},
                                        {-142,-133,-123,-115,-107,-100,-92,-85,-78,-72,-66,-60,-54,-49,-44,-39,-34,-30,-25,-21,-16,-12,-7,-4,0,4,8,12,15},
                                        {-137,-128,-118,-110,-102,-95,-87,-80,-73,-67,-61,-55,-49,-44,-39,-34,-29,-25,-20,-16,-11,-7,-2,2,5,9,13,17,20},
                                        {-133,-124,-114,-106,-98,-90,-82,-76,-69,-63,-56,-51,-45,-40,-34,-29,-24,-20,-15,-11,-6,-2,3,7,10,14,18,22,25},
                                        {-128,-119,-109,-101,-93,-85,-77,-71,-64,-58,-51,-46,-40,-35,-29,-24,-19,-15,-10,-6,-1,3,7,11,15,19,23,27,30},
                                        {-124,-115,-105,-97,-89,-81,-73,-67,-60,-54,-47,-41,-35,-30,-25,-20,-15,-10,-5,-1,4,8,12,16,20,22,23,30,35},
                                        {-120,-110,-100,-92,-84,-76,-68,-62,-55,-49,-42,-36,-30,-25,-20,-15,-10,-5,0,5,9,13,17,21,25,24,23,32,40},
                                        {-116,-85,-55,-67,-80,-72,-64,-57,-50,-44,-38,-32,-26,-21,-15,-10,-5,0,5,10,14,18,22,26,30,32,33,40,45},
                                        {-111,-60,-9,2,-42,-75,-67,-59,-52,-45,-39,-33,-27,-21,-16,-10,-5,0,5,9,14,18,23,27,31,35,39,43,47,50},
                                        {-107,-77,-46,-59,-71,-63,-55,-48,-41,-35,-28,-23,-17,-12,-6,0,5,10,14,19,23,28,32,36,40,44,48,52,55},
                                        {-102,-93,-83,-75,-66,-58,-50,-43,-36,-30,-23,-18,-12,-7,-1,5,10,15,19,24,28,33,37,41,45,49,53,57,60},
                                        {-99,-89,-79,-71,-62,-54,-46,-39,-32,-26,-19,-13,-7,-2,4,10,15,20,24,29,33,38,42,46,50,54,58,62,65},
                                        {-96,-85,-74,-66,-57,-49,-41,-34,-27,-21,-14,-8,-2,4,9,14,19,24,29,34,38,43,47,51,55,59,63,67,70},
                                        {-91,-80,-70,-62,-53,-45,-37,-30,-23,-17,-10,-4,3,9,14,19,24,29,34,39,43,48,52,56,60,64,68,72,75},
                                        {-85,-75,-65,-57,-48,-40,-32,-25,-18,-12,-5,1,7,13,18,24,29,34,38,43,48,52,56,61,65,69,72,76,80},
                                        {-81,-71,-61,-53,-44,-36,-28,-21,-14,-7,0,6,12,18,23,29,34,39,43,48,53,57,61,66,70,74,77,81,85},
                                        {-76,-66,-56,-48,-39,-31,-23,-16,-9,-2,5,11,17,23,28,33,38,43,48,53,57,62,66,71,75,79,82,86,90},
                                        {-72,-62,-52,-44,-35,-27,-19,-12,-4,3,10,16,22,28,33,38,43,48,53,58,62,67,71,76,80,84,87,91,95},
                                        {-68,-58,-47,-39,-30,-22,-14,-7,1,8,14,20,26,32,37,43,48,53,58,63,67,72,76,80,84,88,92,96,100},
                                        {-64,-54,-43,-35,-26,-18,-10,-2,6,13,19,25,31,37,42,48,53,58,63,68,72,77,81,85,89,93,97,101,105},
                                        {-59,-49,-38,-30,-21,-13,-5,3,10,17,23,29,35,41,47,53,58,63,67,72,77,82,86,90,94,98,102,106,110},
                                        {-55,-45,-34,-26,-17,-9,0,3,6,17,28,34,40,46,52,58,63,68,72,77,82,87,91,95,99,103,107,111,115},
                                        {-50,-40,-30,-21,-12,-4,5,3,1,9,17,32,39,45,51,57,62,67,72,77,82,87,92,96,100,104,108,112,116,120},
                                        {-46,-36,-26,-17,-8,1,9,12,15,26,37,44,50,56,62,67,72,77,82,87,92,97,101,105,109,113,117,121,125},
                                        {-41,-31,-21,-12,-3,5,13,21,28,35,42,49,55,61,66,72,77,82,87,92,96,101,105,110,114,118,122,126,130},
                                        {-37,-27,-17,-8,2,10,18,26,33,40,47,54,60,66,71,77,82,87,92,97,101,106,110,115,119,124,128,132,135},
                                        {-33,-23,-12,-3,6,15,23,30,37,44,51,58,64,70,75,81,86,91,96,101,106,111,115,120,124,129,134,137,140},
                                        {-29,-19,-8,2,11,20,28,35,42,49,56,63,69,75,80,86,91,96,101,106,111,116,120,125,129,134,138,142,145},
                                        {-24,-14,-3,6,15,24,32,40,47,54,61,67,73,79,85,91,96,101,106,111,116,121,125,130,134,138,142,146,150},
                                        {-20,-10,2,11,20,29,37,45,52,59,66,72,78,84,90,96,101,106,111,116,121,126,130,135,139,143,147,151,155},
                                        {-15,-5,6,15,24,33,41,49,56,63,70,76,82,88,94,100,105,111,116,121,126,131,135,140,144,148,152,156,160},
                                        {-11,-1,10,20,29,38,46,54,61,68,75,81,87,93,99,105,110,116,121,126,131,136,140,145,149,153,157,161,165},
                                        {-7,4,14,24,33,42,50,58,65,72,79,86,92,98,104,110,115,120,125,130,135,140,145,149,153,158,162,166,170},
                                        {-3,9,19,29,38,47,55,63,70,77,84,91,97,103,109,115,120,125,130,135,140,145,150,154,158,163,167,171,175},
                                        {2,13,23,33,42,51,59,67,74,81,88,95,101,107,113,119,125,130,135,140,145,150,154,159,163,168,172,176,180},
                                        {6,17,28,38,47,56,64,72,79,86,93,100,106,112,118,124,130,135,140,145,150,155,159,164,168,173,177,181,185},
                                        {10,21,32,42,51,60,68,76,83,91,98,105,111,117,123,129,134,140,145,150,155,160,164,169,173,178,182,186,190},
                                        {15,26,37,47,56,65,73,81,88,96,103,110,116,122,128,134,139,145,150,155,160,165,169,174,178,183,187,191,195},
                                        {19,30,41,51,60,69,77,85,93,100,107,114,120,126,132,138,144,149,154,159,164,169,174,179,183,188,192,196,200},
                                        {24,35,46,56,65,74,82,90,98,105,112,119,125,131,137,143,149,154,159,164,169,174,179,184,188,193,197,201,205},
                                        {28,39,50,60,69,78,86,94,102,109,116,123,129,136,142,148,153,159,164,169,174,179,184,189,193,198,202,206,210} 
                                      };
void setup(){
  Serial.begin(115200); while(!Serial);
  for(int x=0;x<29;x++){
    Serial<<x<<"-- "<<Tabelle[2][x]<<endl;
  
  }
}
void loop(){}

Doku

Tabellentest:3:21: error: variable 'Tabelle' must be const in order to be put into read-only section by means of '__attribute__((progmem))'

 int Tabelle[23][30] PROGMEM = { {-155,-146,-136,-128,-120,-113,-105,-99,-92,-86,-79,-74,-68,-63,-58,-53,-48,-44,-39,-35,-30,-26,-22,-18,-14,-11,-7,-4,0},

                     ^

exit status 1

combie:
Doku

Auf der Seite funktioniert gar nichts!
Hast du nichts besseres?

Hier ein paar weitere Beispiele:

https://forum.arduino.cc/index.php?topic=632990.msg4285767#msg4285767

ar182:
Auf der Seite funktioniert gar nichts!
Hast du nichts besseres?

Dann checke mal Deinen Browser. Ich kann es lesen.

Gruß Tommy

ar182:
ich steh auf dem Schlauch.

Setz' Dich. Das ist bequemer :slight_smile:

Für Zugriffe auf Sachen, die Du mit dem PROGMEM-Makro in den Flash gespeichert hast, musst Du bestimmte Zugriffsmethoden verwenden. Guck hier, ganz unten, Abschnitt „Knapper Speicher“.

Gruß

Gregor

ar182:
Auf der Seite funktioniert gar nichts!
Hast du nichts besseres?

Dein Name seht jetzt auf meiner Ignorierliste.

Herzlichen Dank gregorss !!!

Wisst ihr was flüssiger als Wasser ist?

#include <Streaming.h>   //ArduinoStreaming-master
#include <avr/pgmspace.h>


const int Tabelle[43][30] PROGMEM = { {-155,-146,-136,-128,-120,-113,-105,-99,-92,-86,-79,-74,-68,-63,-58,-53,-48,-44,-39,-35,-30,-26,-22,-18,-14,-11,-7,-4,0},
                                        {-151,-142,-132,-124,-116,-109,-101,-94,-87,-81,-75,-70,-64,-59,-53,-48,-43,-39,-34,-30,-26,-22,-17,-14,-10,-6,-2,2,5},
                                        {-146,-137,-127,-119,-111,-104,-96,-89,-82,-76,-70,-65,-59,-54,-48,-43,-38,-34,-29,-25,-21,-17,-12,-9,-5,-1,3,7,10},
                                        {-142,-133,-123,-115,-107,-100,-92,-85,-78,-72,-66,-60,-54,-49,-44,-39,-34,-30,-25,-21,-16,-12,-7,-4,0,4,8,12,15},
                                        {-137,-128,-118,-110,-102,-95,-87,-80,-73,-67,-61,-55,-49,-44,-39,-34,-29,-25,-20,-16,-11,-7,-2,2,5,9,13,17,20},
                                        {-133,-124,-114,-106,-98,-90,-82,-76,-69,-63,-56,-51,-45,-40,-34,-29,-24,-20,-15,-11,-6,-2,3,7,10,14,18,22,25},
                                        {-128,-119,-109,-101,-93,-85,-77,-71,-64,-58,-51,-46,-40,-35,-29,-24,-19,-15,-10,-6,-1,3,7,11,15,19,23,27,30},
                                        {-124,-115,-105,-97,-89,-81,-73,-67,-60,-54,-47,-41,-35,-30,-25,-20,-15,-10,-5,-1,4,8,12,16,20,22,23,30,35},
                                        {-120,-110,-100,-92,-84,-76,-68,-62,-55,-49,-42,-36,-30,-25,-20,-15,-10,-5,0,5,9,13,17,21,25,24,23,32,40},
                                        {-116,-85,-55,-67,-80,-72,-64,-57,-50,-44,-38,-32,-26,-21,-15,-10,-5,0,5,10,14,18,22,26,30,32,33,40,45},
                                        {-111,-60,-9,2,-42,-75,-67,-59,-52,-45,-39,-33,-27,-21,-16,-10,-5,0,5,9,14,18,23,27,31,35,39,43,47,50},
                                        {-107,-77,-46,-59,-71,-63,-55,-48,-41,-35,-28,-23,-17,-12,-6,0,5,10,14,19,23,28,32,36,40,44,48,52,55},
                                        {-102,-93,-83,-75,-66,-58,-50,-43,-36,-30,-23,-18,-12,-7,-1,5,10,15,19,24,28,33,37,41,45,49,53,57,60},
                                        {-99,-89,-79,-71,-62,-54,-46,-39,-32,-26,-19,-13,-7,-2,4,10,15,20,24,29,33,38,42,46,50,54,58,62,65},
                                        {-96,-85,-74,-66,-57,-49,-41,-34,-27,-21,-14,-8,-2,4,9,14,19,24,29,34,38,43,47,51,55,59,63,67,70},
                                        {-91,-80,-70,-62,-53,-45,-37,-30,-23,-17,-10,-4,3,9,14,19,24,29,34,39,43,48,52,56,60,64,68,72,75},
                                        {-85,-75,-65,-57,-48,-40,-32,-25,-18,-12,-5,1,7,13,18,24,29,34,38,43,48,52,56,61,65,69,72,76,80},
                                        {-81,-71,-61,-53,-44,-36,-28,-21,-14,-7,0,6,12,18,23,29,34,39,43,48,53,57,61,66,70,74,77,81,85},
                                        {-76,-66,-56,-48,-39,-31,-23,-16,-9,-2,5,11,17,23,28,33,38,43,48,53,57,62,66,71,75,79,82,86,90},
                                        {-72,-62,-52,-44,-35,-27,-19,-12,-4,3,10,16,22,28,33,38,43,48,53,58,62,67,71,76,80,84,87,91,95},
                                        {-68,-58,-47,-39,-30,-22,-14,-7,1,8,14,20,26,32,37,43,48,53,58,63,67,72,76,80,84,88,92,96,100},
                                        {-64,-54,-43,-35,-26,-18,-10,-2,6,13,19,25,31,37,42,48,53,58,63,68,72,77,81,85,89,93,97,101,105},
                                        {-59,-49,-38,-30,-21,-13,-5,3,10,17,23,29,35,41,47,53,58,63,67,72,77,82,86,90,94,98,102,106,110},
                                        {-55,-45,-34,-26,-17,-9,0,3,6,17,28,34,40,46,52,58,63,68,72,77,82,87,91,95,99,103,107,111,115},
                                        {-50,-40,-30,-21,-12,-4,5,3,1,9,17,32,39,45,51,57,62,67,72,77,82,87,92,96,100,104,108,112,116,120},
                                        {-46,-36,-26,-17,-8,1,9,12,15,26,37,44,50,56,62,67,72,77,82,87,92,97,101,105,109,113,117,121,125},
                                        {-41,-31,-21,-12,-3,5,13,21,28,35,42,49,55,61,66,72,77,82,87,92,96,101,105,110,114,118,122,126,130},
                                        {-37,-27,-17,-8,2,10,18,26,33,40,47,54,60,66,71,77,82,87,92,97,101,106,110,115,119,124,128,132,135},
                                        {-33,-23,-12,-3,6,15,23,30,37,44,51,58,64,70,75,81,86,91,96,101,106,111,115,120,124,129,134,137,140},
                                        {-29,-19,-8,2,11,20,28,35,42,49,56,63,69,75,80,86,91,96,101,106,111,116,120,125,129,134,138,142,145},
                                        {-24,-14,-3,6,15,24,32,40,47,54,61,67,73,79,85,91,96,101,106,111,116,121,125,130,134,138,142,146,150},
                                        {-20,-10,2,11,20,29,37,45,52,59,66,72,78,84,90,96,101,106,111,116,121,126,130,135,139,143,147,151,155},
                                        {-15,-5,6,15,24,33,41,49,56,63,70,76,82,88,94,100,105,111,116,121,126,131,135,140,144,148,152,156,160},
                                        {-11,-1,10,20,29,38,46,54,61,68,75,81,87,93,99,105,110,116,121,126,131,136,140,145,149,153,157,161,165},
                                        {-7,4,14,24,33,42,50,58,65,72,79,86,92,98,104,110,115,120,125,130,135,140,145,149,153,158,162,166,170},
                                        {-3,9,19,29,38,47,55,63,70,77,84,91,97,103,109,115,120,125,130,135,140,145,150,154,158,163,167,171,175},
                                        {2,13,23,33,42,51,59,67,74,81,88,95,101,107,113,119,125,130,135,140,145,150,154,159,163,168,172,176,180},
                                        {6,17,28,38,47,56,64,72,79,86,93,100,106,112,118,124,130,135,140,145,150,155,159,164,168,173,177,181,185},
                                        {10,21,32,42,51,60,68,76,83,91,98,105,111,117,123,129,134,140,145,150,155,160,164,169,173,178,182,186,190},
                                        {15,26,37,47,56,65,73,81,88,96,103,110,116,122,128,134,139,145,150,155,160,165,169,174,178,183,187,191,195},
                                        {19,30,41,51,60,69,77,85,93,100,107,114,120,126,132,138,144,149,154,159,164,169,174,179,183,188,192,196,200},
                                        {24,35,46,56,65,74,82,90,98,105,112,119,125,131,137,143,149,154,159,164,169,174,179,184,188,193,197,201,205},
                                        {28,39,50,60,69,78,86,94,102,109,116,123,129,136,142,148,153,159,164,169,174,179,184,189,193,198,202,206,210} 
                                      };
void setup(){
  Serial.begin(115200); while(!Serial);
  for(int x=0;x<30;x++){
    int data=pgm_read_word(&(Tabelle[0][x]));
    Serial<<x<<"   "<<data<<endl;
  }
}
void loop(){}

,
Beiträge von combie.

Die sind ÜBERFLÜSSIG! :wink: :wink: :wink:

@combie
Wie handhabst Du diese Liste?
Oldscool mit Papier und Bleistift?
Habe für eBay eine 'rote Liste' - zumindest habe ich dort einen oberen Bereich, wo meine 'Lieblinge' gelistet sind ... und bleiben.
Im unteren Bereich stehen die noch offenen Auktionen und wann Diese überfällig werden.

Das wollte ich aber eigentlich nicht für jede Seite in den Tiefen des WWW wiederholen - und Papier und Bleistift sind mir zu rudimentär ... irgendwie.

MfG

PS: Gerne schon eine vorgefüllte Liste :wink:

PPS: @ar182
Was denkst Du, möchte Dir der Kompiler mit dieser Fehlermeldung sagen?
Tabellentest:3:21: error: variable 'Tabelle' must be const in order to be put into read-only section by means of 'attribute((progmem))'
Habe mir gestattet, den relevanten Teil fett hervorzuheben.

Wenn also Du Sessel-Puper zu überqualifiziert bist, diese eine Fehlermeldung Google zum Fraß vorzuwerfen - dann befürchte ich, daß Du Dir ganz bestimmt keine Gedanken über die Qualität unserer Beiträge machen musst.

postmaster-ino:
PPS: @ar182
Was denkst Du, möchte Dir der Kompiler mit dieser Fehlermeldung sagen?
Tabellentest:3:21: error: variable 'Tabelle' must be const in order to be put into read-only section by means of 'attribute((progmem))'

Das Code-Schnippselchen im OP enthält const.

postmaster-ino:
... Sessel-Puper ...

Mach mal Urlaub :wink:

Gruß

Gregor

gregorss:
Das Code-Schnippselchen im OP enthält const.

Lies mal den Thread in der richtigen Reihenfolge.
Im diskutierten Sketch war kein const bezogen auf int drin.

Gruß Tommy

postmaster-ino:
PPS: @ar182
Was denkst Du, möchte Dir der Kompiler mit dieser Fehlermeldung sagen?
Tabellentest:3:21: error: variable 'Tabelle' must be const in order to be put into read-only section by means of 'attribute((progmem))'
Habe mir gestattet, den relevanten Teil fett hervorzuheben.

Wenn du den Link von combie geöffnet und getestet hättest, dann hättest du gesehen, das da von der Verwendung von const abgeraten wird.

Aber das war dir sicherlich zu anstregend, die Beiträge genau zu lesen, bevor du hier noch einen nutzlosen Beitrag zum Besten gibst.

gregorss:
Das Code-Schnippselchen im OP enthält const.

Ups - nicht aufgefallen ... dann Mal schnell zurück ruder

Mach mal Urlaub :wink:

Jo, vll. besser ... dann bin ich aber den ganzen Tag hier 8)

PS: @ar182
Jupp, Du bist mein Held.

ar182:
Wenn du den Link von combie geöffnet und getestet hättest, dann hättest du gesehen, das da von der Verwendung von const abgeraten wird.

Das ist veraltet. Die AVR libc hat mal eigene Datentypen für PROGMEM Konstanten. Aber jetzt müssen sie zwingend const sein. Sagt ja auch die Fehlermeldung deutlich.

Auch sonst sollte man const verwenden wo möglich. Das einzige was stimmt ist dass eine keine Garantie für Optimierung ist. Bei einfachen Datentypen wird der Compiler das so optimieren dass kein RAM belegt wird. Allerdings nicht bei Arrays

Tommy56:
Lies mal den Thread in der richtigen Reihenfolge.
Im diskutierten Sketch war kein const bezogen auf int drin.

Dann hat der OP das OP nachträglich geändert. Als ich das OP gelesen habe, stand da ein const. Und da ich Threads eigentlich immer in der chronologischen Reihenfolge lese, ist für mich der dort stehende Code maßgeblich.

Naja ... Webforen, speziell dieses, sind manchmal speziell :slight_smile:

Schön' Amd!

Gregor

Die arrogante Art des TO's gefällt mir auch absolut nicht, der Ton macht die Musik.

Wenn ich die Sketches in #0 und #8 vergleiche, wurde in #8 "#include <avr/pgmspace.h>" hinzugefügt und ein paar Änderungen in setup() gemacht.

Auch wenn ich nicht genau weiß was in und durch den Sketch passiert, vermute ich dass das vergesse #include der Fehler war. Aber da der TO so überheblich ist, werden wir die Wahrheit wohl nie erfahren... :wink:

vermute ich dass das vergesse #include der Fehler war

Nöö, der include findet sich in Arduino.h
Es fehlte einfach nur die Zugriffsfunktion aufs Flash.

Im Mai konnte der TE schon mit dem Flash umgehen.
Mein Fehler, dass ich dachte, ein kleiner "Reiz" würde reichen um das schon lange gelernte wieder zu wecken.
Da habe ich mich allerdings arg geirrt.

combie:
Nöö, der include findet sich in Arduino.h
Es fehlte einfach nur die Zugriffsfunktion aufs Flash.

Dann kann es ja nur noch der Unterschied zwischen
#0: const PROGMEM int Tabelle[43][30] =
und
#8: const int Tabelle[43][30] PROGMEM =
sein?

Ist aber auch nur eine Vermutung, klingt für mich aber recht logisch.

Dann kann es ja nur noch der Unterschied zwischen
#0: const PROGMEM int Tabelle[43][30] =
und
#8: const int Tabelle[43][30] PROGMEM =
sein?

Auch das nicht.... das ist ja nur das attribute((progmem)) Attribut. Dem Gcc ist recht egal, wo das steht, Hauptsache vor der Initialisierung

Der Unterschied ist hier:

Serial<<x<<"-- "<<Tabelle[2][x]<<endl; // falsch
Serial<<x<<"-- "<<(int)pgm_read_word(&Tabelle[2][x])<<endl; // richtig

Die zweite Zeile ist nicht aus diesen Thread, sondern eine Reparatur meinerseits.
Der TE macht es indirekter.