#include <SPI.h>
    #include "Adafruit_FRAM_SPI.h"

    /* Example code for the Adafruit SPI FRAM breakout */
    uint8_t FRAM_CS = 10;

    //Adafruit_FRAM_SPI fram = Adafruit_FRAM_SPI(FRAM_CS);  // use hardware SPI

    uint8_t FRAM_SCK= 13;
    uint8_t FRAM_MISO = 12;
    uint8_t FRAM_MOSI = 11;
    //Or use software SPI, any pins!
    Adafruit_FRAM_SPI fram = Adafruit_FRAM_SPI(FRAM_SCK, FRAM_MISO, FRAM_MOSI, FRAM_CS);

    uint16_t          addr = 0;

    void setup(void) {
      Serial.begin(9600);
      while (!Serial) delay(10);     // will pause Zero, Leonardo, etc until serial console opens
      
      if (fram.begin()) {
        Serial.println("Found SPI FRAM");
      } else {
        Serial.println("No SPI FRAM found ... check your connections\r\n");
        while (1);
      }
      
      // Read the first byte
      uint8_t test = fram.read8(0x0);
      Serial.print("Restarted "); Serial.print(test); Serial.println(" times");

      // Test write ++
      fram.writeEnable(true);
      fram.write8(0x0, test+1);
      fram.writeEnable(false);

      fram.writeEnable(true);
      fram.write(0x1, (uint8_t *)"FTW!", 5);
      fram.writeEnable(false);

      // dump the entire 8K of memory!
      uint8_t value;
      for (uint16_t a = 0; a < 8192; a++) {
        value = fram.read8(a);
        if ((a % 32) == 0) {
          Serial.print("\n 0x"); Serial.print(a, HEX); Serial.print(": ");
        }
        Serial.print("0x"); 
        if (value < 0x1) 
          Serial.print('0');
        Serial.print(value, HEX); Serial.print(" ");
      }
    }

    void loop(void) {

    }

    $regfile = "m328pdef.dat"
    $crystal = 16000000
    $baud = 19200

    $hwstack = 40
    $swstack = 16
    $framesize = 32

    ' External EEPROM Config
    Config Portb.2 = Output                                     'ss
    Config Portb.5 = Output                                     'clk
    Config Portb.3 = Output                                     'mosi
    Fram_cs Alias Portb.2 : Const Fram_csp = 2 : Const Fram_csport = Portb
    Fram_so Alias Pinb.4 : Const Fram_sop = 4 : Const Fram_soport = Pinb       'miso
    Fram_si Alias Portb.3 : Const Fram_sip = 3 : Const Fram_siport = Portb
    Fram_sck Alias Portb.5 : Const Fram_sckp = 5 : Const Fram_sckport = Portb

    $eepromsize = &H2000        '8kb
    '$eepromsize = &H8000        '32kb
    $lib "fm25c256.lib"
    ' External EEPROM Config


    Dim A(101) As Eram Byte
    Dim B As Byte
    Dim C As Byte
    Dim D As Byte

    Do

      Input "Data to write ? (0-255)" , D

      Print "Reading content of EEPROM (via ERAM Byte)"
      For C = 0 To 100
         B = A(c)
        Print "Read " ; C ; ":" ; B ; "/" ; Hex(b)
        Waitms 4
      Next

      Wait 1

      Print "Writing data to EEPROM (via ERAM Byte)"
      For C = 0 To 100
         A(c) = D
        Print "Write " ; C ; ":" ; D ; "/" ; Hex(d)
        Waitms 4
      Next

      Wait 1

      Print "Reading back data from EEPROM (via ERAM Byte)"
      For C = 0 To 100
         B = A(c)
        Print "Read " ; C ; ":" ; B ; "/" ; Hex(b)
        Waitms 4
      Next

      Wait 2

      Input "Data to write ? (0-255)" , D

      Print "Reading content of EEPROM (via READEEPROM)"
      For C = 0 To 100
        Readeeprom B , C
        Print "Read " ; C ; ":" ; B ; "/" ; Hex(b)
        Waitms 4
      Next

      Wait 1

      Print "Writing data to EEPROM (via WRITEEEPROM)"
      For C = 0 To 100
        Writeeeprom D , C
        Print "Writing " ; C ; ":" ; D ; "/" ; Hex(d)
        Waitms 4
      Next

      Wait 1

      Print "Reading content of EEPROM (via READEEPROM)"
      For C = 0 To 100
        Readeeprom B , C
        Print "Read " ; C ; ":" ; B ; "/" ; Hex(b)
        Waitms 4
      Next

      Wait 2


    Loop

    End

    Werbung

    Please publish modules in offcanvas position.