INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Alternative zu Programmspeicher PROGMEM
16.02.2020, 18:57
Beitrag #1
Alternative zu Programmspeicher PROGMEM
Hi,
ich fang mit meinem Projekt nochmal vorne an, ganz am Anfang.
Verwendet habe ich einen Mega.
Ich habe einen funktionierenden Sketch, in dem ein RAW Code, beim compilieren in den Programmspeicher geladen wird, und von da aus gesendet wird. Das funktioniert. Da ich aber den RAW Code von einer SD lesen will, muss ich den Code in eine Variable schreiben und ihn von dort lesen.
Wie ihr unten in dem Sketsch seht, habe ich den Code in die Variable gesetzt, und nicht in den PROGMEM geschrieben.
Das funktioniert jedoch nicht. Ich erhalte eine langsam blinkende LED. Die Anzahl der Signale ist gleich, jedoch das Timing was der RAW Code beinhaltet ist viel zu lang.
Ich denke, das das auslesen aus der Variable nicht so zügig funktioniert, wie aus dem Programmspeicher. Deshalb blinkt die Diode, die normalerweise nur einmal kurz blinkt. Ich hab den Ausgang mit Analysir überprüft.
Kann das sein?
Gibt es noch andere Alternativen zum Programspeicher (Variablen die ähnlich schnell gelesen werden können)?
Denn wenn es nur aus dem PROGMEM funktioniert, kann ich das Ganze vergessen.

Gruß
Dieter

Code:
/*
* IRremote: IRsendRawDemo - demonstrates sending IR codes with sendRaw
* An IR LED must be connected to Arduino PWM pin 3. (Defualt configuration for UNO class Arduinos)
* Version 0.1 July, 2009
* Copyright 2009 Ken Shirriff
* http://arcfn.com
*
* IRsendRawFlash - added by AnalysIR (via www.AnalysIR.com), 11 April 2016
*
* This example shows how to send a RAW signal, from flash instead of SRAM, using the IRremote library.
*
* It is more efficient to use the sendNEC style function to send NEC signals.
* Use of sendRaw_Flash here, serves only as an example of using the function to save SRAM with RAW signals.
*
* Typical Uses: Allows users to store a significant number of signals in flash for sending, without using up SRAM.
*               This is particularly important for sending RAW AC signal. Typically only one or 2 AC signals could be stored in SRAM using the traditional sendRAW function.
*               With this function a large number of RAW AC signals can be stored & sent from Flash on a standard Arduino, with no material SRAM overhead.
*               For even more Flash & signal storage, consider using a Mega1280/2560 with 128K/256K of available Flash vs the standard of 32k bytes.
*
* SRAM usage: On the Author's dev system the Arduino IDE 1.6.8 reported only 220 SRAM usage & 8,052 bytes of Flash storage used for this sketch.
*             In contrast, only one of the signals below will fit on a standard UNO using the example sendRAW function of IRremote (using SRAM to store the signal)
*/


#include <IRremote.h>

IRsend irsend; //Pin 9 on Mega

//const unsigned int AC_irSignalON[] PROGMEM = {3208,9868,576,1532,532,492,524,524,544,516,528,1552,528,492,548,504,524,508,524​,508,524,508,528,504,528,496,544,500,544,1548,528,512,500,532,528,508,524,508,52​0,1540,524,508,496,540,496,544,496,544,496,536,524,508,524,1532,548,1536,528,516​,524,}; //AnalysIR Batch Export (IRremote) - RAW
const unsigned int AC_irSignalON[] = {3208,9868,576,1532,532,492,524,524,544,516,528,1552,528,492,548,504,524,508,524​,508,524,508,528,504,528,496,544,500,544,1548,528,512,500,532,528,508,524,508,52​0,1540,524,508,496,540,496,544,496,544,496,536,524,508,524,1532,548,1536,528,516​,524,};

void setup() {
  sendRAW_Flash(AC_irSignalON, sizeof(AC_irSignalON)/sizeof(int),38); //send AC signal #3 @ 38kHz
}

void loop() {
  
}
    
     void sendRAW_Flash(const unsigned int * signalArray, unsigned int signalLength, unsigned char carrierFreq) {

  irsend.enableIROut(carrierFreq); //initialise the carrier frequency for each signal to be sent
  
  for (unsigned int i=0;i<signalLength;i++){
    //tmp=pgm_read_word_near(&signalArray[i]);
   // tmp=cleanPanasonic(tmp); //not needed
    if (i & 1) irsend.space(pgm_read_word_near(&signalArray[i]));
    else irsend.mark(pgm_read_word_near(&signalArray[i]));
  }
  irsend.space(1);//make sure IR is turned off at end of signal

}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
16.02.2020, 19:04
Beitrag #2
RE: Alternative zu Programmspeicher PROGMEM
Ich sehe keine SD.
pgm_read_word_near liest aus dem Progmem, nicht aus dem RAM.
Eine const-Variable kannst Du nicht verändern.

Das Problem ist nicht der Speicher, sondern Deine fehlenden Grundkenntnisse.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
16.02.2020, 19:11
Beitrag #3
RE: Alternative zu Programmspeicher PROGMEM
genau so eine Antwort hab ich erwartet.
Hier geht es nicht um die SD, sondern ob das Senden aus einer Variablen genauso schnell möglich ist, wie aus dem Programmspeicher.
Das ist scheinbar nicht möglich, jedenfalls nicht so wie ich es versucht habe.
Alles Andere ist erstmal uninteressant. Wenn das schon nicht geht, brauch ich gar nicht weitermachen.
Dieter
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
16.02.2020, 19:15 (Dieser Beitrag wurde zuletzt bearbeitet: 16.02.2020 19:16 von Tommy56.)
Beitrag #4
RE: Alternative zu Programmspeicher PROGMEM
(16.02.2020 19:11)volvodidi schrieb:  Hier geht es nicht um die SD, sondern ob das Senden aus einer Variablen genauso schnell möglich ist, wie aus dem Programmspeicher.
Das ist scheinbar nicht möglich, jedenfalls nicht so wie ich es versucht habe.
Ja, das geht problemlos, sogar schneller, als aus dem PROGMEM. Man muss es nur richtig machen. Dazu braucht es etwas mehr, als irgendwelche Codes zu kopieren, ohne sie zu verstehen.

Lerne die Grundlagen und informiere Dich über den Zugriff auf Arrays.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
16.02.2020, 19:26
Beitrag #5
RE: Alternative zu Programmspeicher PROGMEM
Weist du was, ich hab genug von Deinem Forum, von mir aus kannst du meine Posts alle löschen.
Du weist ja auch nicht wie es geht. Und für dumme Komentare gibt es bestimmt Leute die darauf stehen, ich nicht.

danke das wars
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
16.02.2020, 19:32
Beitrag #6
RE: Alternative zu Programmspeicher PROGMEM
Auf diese Art wirst Du bestimmt zu keiner Lösung kommen, aber das ist Dein Problem. In den anderen Foren wird es Dir auch nicht besser ergehen, wenn Du nur fordern, beschimpfen und rumheulen kannst und nicht bereit bist, zu lernen.

Viel Spaß noch.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
16.02.2020, 19:39
Beitrag #7
RE: Alternative zu Programmspeicher PROGMEM
Wenn ich so meine Auszubildenden abbügeln würde, wäre ich die längste Zeit Ausbilder gewesen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
16.02.2020, 23:40
Beitrag #8
RE: Alternative zu Programmspeicher PROGMEM
(16.02.2020 19:39)volvodidi schrieb:  Wenn ich so meine Auszubildenden abbügeln würde, wäre ich die längste Zeit Ausbilder gewesen.

...der Unterschied wird aber wohl sein das deine Azubis sich was sagen lassen...
bk Moderator

1+1 = 10 Angel ...und ich bin hier nicht der Suchmaschinen-Ersatz Dodgy...nur mal so als genereller Tipp..
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Nano: CRC-Berechnung mit PROGMEM falsch miq19 3 385 22.07.2020 13:56
Letzter Beitrag: MicroBahner
  Alternative ARDUINO IDE dl3ad 4 1.588 11.08.2019 22:35
Letzter Beitrag: MartinZ
  Zugriff auf Programmspeicher Batucada 16 2.487 26.03.2019 13:08
Letzter Beitrag: Batucada
  Pointer auf Struct-Werte im PROGMEM rkuehle 2 1.055 30.09.2018 18:15
Letzter Beitrag: rkuehle
  Programmspeicher auf i2c_EEPROM oder SD_Card erweitern? avoid 11 5.919 11.07.2016 15:46
Letzter Beitrag: avoid
  Compilerfehler mit PROGMEM?!?! Wampo 4 2.659 15.10.2015 23:50
Letzter Beitrag: Wampo
  Alternative zu delay gesucht Gelegenheitsbastler 3 3.681 28.03.2015 19:51
Letzter Beitrag: Gelegenheitsbastler
  PROGMEM Array verändern Georg 3 3.527 15.07.2014 07:48
Letzter Beitrag: Georg
  Alternative Ethernet Library itsy 7 3.697 03.07.2014 19:25
Letzter Beitrag: itsy
  Alternative zu Timer Coleby 0 1.683 04.02.2014 09:31
Letzter Beitrag: Coleby

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste