DDS AD9850 #01 – Sketchen

DDS AD9850 #01 – Sketchen

Sådan bevarer du dine variable.


Det ville være dejligt, hvis ens DDS startede op det sted, hvor man slukkede ned for den. Det kan man godt kode sig ud af, men først lad os først tage et kig på memory. En Atmega348 (Uno og Nano) har følgende memory til rådighed:

  • Flash:           32k
  • SRAM:           4k
  • EEPROM:      1k

En Atmega2560 (MEGA) har lidt mere plads:

  • Flash:            256k
  • SRAM:              8k
  • EEPROM:        4k

Flash memory is where the sketch resides. SRAM is where the Arduino handles your variables during runtime. Flash-memory is persistent and holds the sketch which stays onboard even after you power off. SRAM however is volatile and that is why the actual state of the variables in your sketch is not stored. EEPROM is the place to keep information for long time storage after power off.

Selve sketchen bliver gemt i Flash-memory og SRAM er den del af memory, hvor Arduino håndterer dine variable. Sketchen bliver bevaret men SRAM bliver slettet eller nulstillet ved hver opstart og her er forklaringen på, at du ikke umiddelbart starter op hvor du forlod din Arduino. Men i EEPROM kan man gemme de variable, som har betydning i forhold til at starte hvor man slutter.

Heldigvis er der et bibliotek, som kan håndtere tingene for os: Det hedder EEPROM og kommer som standard med vores Arduino IDE og bliver derfor automatisk installeret.

EEPROM giver os to sæt af metoder til at håndtere tingene:

  • ‘write’ ‘read’
  • ‘put’     ‘get’

De første to metoder arbejder på et byte-til-byte grundlag. Det betyder, at du på den ene eller anden måde skal splitte dine variable op i bytes, før du skriver til EEPROM. Byte for byte – adresse for adress.

Det andet sæt metoder klarer tingene for dig, idet de kan skelne mellem forskellige typer variable og derfor selv sørger for at allokere den nødvendige plads. Men DU skal være meget opmærksom på, at du selv skal sørge for ikke at skrive til en adresse, som allerede er optaget. Ellers overskriver du dine variable. Der er ingen beskyttelse af de enkelte celler i EEPROM. Det skal du tage dig af. I denne DDS-sketch har jeg valgt at allokere 8 bytes til hver af min variable for at være sikker på at de har nok plads og får at gøre det let at finde frem til dem igen.

The first set operates on a byte-by-byte basis: i.e one way or the other you have to split your variables into bytes before writing them to EEPROM. Byte by byte – address by address.

Se eksemplet herunder:

Skærmbillede 2015-11-02 kl. 11.33.13

Prøv at ændre linje 12 og linje 22 som herunder. Upload sketchen og se hvad der sker!

Skærmbillede 2015-11-02 kl. 12.33.38

Det går helt galt!

Leave a Reply

Your email address will not be published. Required fields are marked *