1 | module EEPROM_Operationen 'Eigentlich Flash_Operationen
|
2 | include "Variabel_Definitionen"
|
3 |
|
4 | Const Flashmemmorystart = 0x7FF 'Höchste Addresse beim PIC16F1503
|
5 |
|
6 | dim Sub Procedure LoadSettings
|
7 | dim Sub Procedure Speichere_Einschaltpunkt_Relais1
|
8 | dim Sub Procedure Speichere_Ausschaltpunkt_Relais1
|
9 | dim Sub Procedure Speichere_Einschaltpunkt_Relais2
|
10 | dim Sub Procedure Speichere_Ausschaltpunkt_Relais2
|
11 |
|
12 | implements
|
13 |
|
14 | sub Procedure WaitForWrite
|
15 | delay_ms(10)
|
16 | end sub
|
17 |
|
18 | sub procedure Write_LongWord(dim Flash_start as word, dim byref val_LongWord as LongWord)
|
19 | 'Write 4 words in Flash memory
|
20 | dim counter as byte
|
21 | data_ as word
|
22 | dataAR as word[4][4]
|
23 |
|
24 | 'First read the actual values from the flash memory, to avoid, to overwirte it.
|
25 | dataAR[0][0]= FLASH_Read(Flash_start)
|
26 | dataAR[0][1]= FLASH_Read(Flash_start +1)
|
27 | dataAR[0][2]= FLASH_Read(Flash_start +2)
|
28 | dataAR[0][3]= FLASH_Read(Flash_start +3)
|
29 | dataAR[1][0]= FLASH_Read(Flash_start +4)
|
30 | dataAR[1][1]= FLASH_Read(Flash_start +5)
|
31 | dataAR[1][2]= FLASH_Read(Flash_start +6)
|
32 | dataAR[1][3]= FLASH_Read(Flash_start +7)
|
33 | dataAR[2][0]= FLASH_Read(Flash_start +8)
|
34 | dataAR[2][1]= FLASH_Read(Flash_start +9)
|
35 | dataAR[2][2]= FLASH_Read(Flash_start +10)
|
36 | dataAR[2][3]= FLASH_Read(Flash_start +11)
|
37 | dataAR[3][0]= FLASH_Read(Flash_start +12)
|
38 | dataAR[3][1]= FLASH_Read(Flash_start +13)
|
39 | dataAR[3][2]= FLASH_Read(Flash_start +14)
|
40 | dataAR[3][3]= FLASH_Read(Flash_start +15)
|
41 |
|
42 | 'Now move the value to the buffer
|
43 | dataAR[0][0]= Lo(val_LongWord)
|
44 | dataAR[0][1]= Hi(val_LongWord)
|
45 | dataAR[0][2]= Higher(val_LongWord)
|
46 | dataAR[0][3]= Highest(val_LongWord)
|
47 |
|
48 | 'Now write the buffer to the internal Flash
|
49 | for counter = 0 to 3
|
50 | Delay_ms(100)
|
51 | FLASH_Write(Flash_start+counter*4, dataAR[counter])
|
52 | next counter
|
53 | Delay_ms(500)
|
54 | end sub
|
55 |
|
56 | sub function Read_LongWord(dim Flash_start as word) as LongWord 'read 4 words from Flash memory
|
57 | dim Helper as longword
|
58 | Lo(Helper) = FLASH_Read(Flash_start)
|
59 | Hi(Helper) = FLASH_Read(Flash_start + 1)
|
60 | Higher(Helper) = FLASH_Read(Flash_start + 2)
|
61 | Highest(Helper) = FLASH_Read(Flash_start + 3)
|
62 | Read_LongWord = Helper
|
63 | end sub
|
64 |
|
65 | Sub Procedure LoadSettings
|
66 | dim Flashmemmorystart as word
|
67 | Einschaltpunkt_Relais1 = Read_LongWord(Flashmemmorystart - 16)
|
68 | Ausschaltpunkt_Relais1 = Read_LongWord(Flashmemmorystart - 32)
|
69 | Einschaltpunkt_Relais2 = Read_LongWord(Flashmemmorystart - 48)
|
70 | Ausschaltpunkt_Relais2 = Read_LongWord(Flashmemmorystart - 64)
|
71 | end sub
|
72 |
|
73 | Sub Procedure Speichere_Einschaltpunkt_Relais1
|
74 | Write_LongWord(Flashmemmorystart - 16,Einschaltpunkt_Relais1)
|
75 | end sub
|
76 |
|
77 | Sub Procedure Speichere_Ausschaltpunkt_Relais1
|
78 | Write_LongWord(Flashmemmorystart - 32,Ausschaltpunkt_Relais1)
|
79 | end sub
|
80 |
|
81 | Sub Procedure Speichere_Einschaltpunkt_Relais2
|
82 | Write_LongWord(Flashmemmorystart -48,Einschaltpunkt_Relais2)
|
83 | end sub
|
84 |
|
85 | Sub Procedure Speichere_Ausschaltpunkt_Relais2
|
86 | Write_LongWord(Flashmemmorystart - 64,Ausschaltpunkt_Relais2)
|
87 | end sub
|
88 |
|
89 | end.
|