/* ----------------------- Flash írás, olvasás, törlés, --------------------------------------------------- */

#include "io430.h"
#include "stdint.h"
#include "flash_command.h"

int *Flash_ptr;        // flash mutató
uint16_t ftemp;

//------------------------------- Flash törlés -----------------------------------------------------
void flash_clear(int cim){
     Flash_ptr = (int *) cim;   // flash mutató cim=0x
     FCTL1 = FWKEY + ERASE;     // erase bit 1-be
     FCTL3 = FWKEY;             // lezárás kikapcsolása
     *Flash_ptr = 0;            // segmens törlése
     while (FCTL3 & BUSY);      // írás kikapcsolása
     FCTL3 = FWKEY + LOCK;      // lezárás
}  // void
//------------------------------- Flash írás -------------------------------------------------------
void flash_write(int cim, int val, char cim_1){
     Flash_ptr = (int *) cim + cim_1;     // flash mutató cim=0x1040 .....
     FCTL3 = FWKEY;                       // lezárás kikapcsolása
     FCTL1 = FWKEY + WRT;                 // írás engedélyezése
     *Flash_ptr = val;                    // érték beírása 
     while (FCTL3 & BUSY);
     FCTL1 = FWKEY;                       // írás kikapcsolása
     FCTL3 = FWKEY + LOCK;                // lezárás
} // void
//------------------------------- Flash olvasása ---------------------------------------------------
uint16_t flash_read(int cim, char cim_1){
     Flash_ptr = (int *) cim + cim_1;   // olv_val = 0x1000
     ftemp = *Flash_ptr;                // mutató másolása
     return ftemp;
}