-         

Ergebnis 1 bis 4 von 4

Thema: Variablen in SRAM speichern?

  1. #1
    Moderator Roboter Genie
    Registriert seit
    26.08.2004
    Beiträge
    1.228

    Variablen in SRAM speichern?

    Anzeige

    Hallo!
    Ich möchte ein kleines "Nachmittags Experiment" starten. Ich will den ADC meines Mega8 im Free-Run-Mode laufen lassen und möglichst viele Messungen im internen SRAM des Mega speichern. Ist der Speicher voll soll das ganze per RS232 an den PC übertragen werden.

    Mein Problem besteht darin, das ich keinen Befehl in Bascom gefunden hab welcher es mir ermöglicht meine Daten fortlaufend im SRAM zu speichern!
    Was ich brauche ist so eine Art "writeeeprom" Befehl, nur für's SRAM!

    Wenn ich den ADC auf 10 Bit stelle könnte ich eine max. Samperate von ~14kS/s erreichen, wie hoch kann ich bei nur 8 Bit gehen? Das Datenblatt sagt ja nur, dass die Frequenz zw. 50kHz und 200kHz für die höchste Auflösung sein muss...für kleinere kann eine größere Frequenz gewählt werden. Wenn ich nun eine Taktfrequenz von 3,68MHz habe und den kleinsten Teiler nehme, würde ich auf ~127kS/s kommen (vorrausgesetzt ich hab richtig gerechnet )
    Stimmt das so?

    MfG
    Basti

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    10.08.2004
    Ort
    Großbardorf
    Alter
    30
    Beiträge
    674
    Du könntest ja ein großes array anlegen, das den gesamten SRAM umfasst(bis auf ein paar bytes, die für andere Dinge benötigt werden, wie stack, andere variablen usw.). Dann nimmst du noch eine Zählvariable, die du nach jedem Schreiben um eins erhöhst und schreibst nach jeder Wandlung den Wert in das array an der Stelle der Zählvariable.

    Meinst du mit "Nachmittags Experiment", dass das den gesamten Nachmittag dauern soll?
    Denn nach 1024(ein paar weniger, siehe oben) mal Lesen wäre spätestens Schluss, da dann der SRAM voll ist.
    Oder meinst du, dass der SRAM vollgeschrieben, dann an den PC gesendet und dann wieder weiter in den SRAM geschrieben wird?

  3. #3
    Moderator Roboter Genie
    Registriert seit
    26.08.2004
    Beiträge
    1.228
    Hallo!
    Das mit dem Array muss ich gleich mal ausprobieren! Das Array werd ich wohl für den Anfang auf 512Bytes beschränken...die müssten dann nach ungefähr 4ms voll sein
    Danach soll das ganze an den PC zur "Auswertung".

    Mit Nachmittags Experiment meinte ich viel mehr, dass ich das mal Testen wollte und kein größeres Projekt dran hängt...quasi Just for Fun.

  4. #4
    Moderator Roboter Genie
    Registriert seit
    26.08.2004
    Beiträge
    1.228
    So, Experiment scheint geglückt zu sein! Ich speichere 800 Messwerte (bei 8Bit Auflösung sind das 800 Byte) und gebe die auf einen Schlag an meinen PC weiter.
    Getestet hab ich mit Timer1 im CTC-Mode, jetzt muss ich nur noch irgendwie auf die Frequenz schließen...und da hab ich meine Probleme!

    Des weiteren kommt eine Übertragung der Messwerte erst ab einem Prescaler von 16 (ADC) zustande. Vorher liefert der Mega wohl keinen Interrupt -> ADC wahrscheinlich zu schnell!
    Somit komme ich auf eine Samplerate von ca 17kS/s...d.h. nach 47ms wird Übertragen (3686400Hz/Prescaler 16 = 230400s/13,5 cycles = 17066 Samples/s)!
    Für einen Messwert benötige ich damit ca. 59µS (1/17066Hz=0,000059s). Wenn meine Frequenz nun nach z.B. 31 Messungen (0,000059*31=0,0018s) einmal von Low nach High nach Low geht, welche Frequenz hab ich dann?
    Das müssten doch dann 1/0,00182 = 550Hz sein...das kommt mir aber sehr wenig vor!

    MfG
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken frequenz.jpg  

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •