Hi ich versuche im MPLAB x und auch Microchipstudio im simulator den
EEPROM/USER_ROW zu programmieren. Leider sehe ich nirgends einen schreib
vorgang im memory. Ich wollte es erst im simulator testen um nichts im
"echten" attiny zu überschreiben, da er bereits in die Schaltung
eingebaut ist. Das ist der code den ich bisher benutzt habe
1 | #include <avr/cpufunc.h> /* Required header file */
|
2 | #include <avr/eeprom.h>
|
3 | #include <avr/io.h>
|
4 |
|
5 | volatile uint8_t a,b;
|
6 |
|
7 | #define USR_ADDR ((uint8_t *)0x1300-0x1400)
|
8 | #define EEPR_ADDR ((uint8_t *)0)
|
9 | int main(void) {
|
10 | _NOP();
|
11 | while(NVMCTRL.STATUS&NVMCTRL_EEBUSY_bm)
|
12 | eeprom_write_byte(EEPR_ADDR, 3); //EEPROM
|
13 | while(NVMCTRL.STATUS&NVMCTRL_EEBUSY_bm)
|
14 | eeprom_write_byte(USR_ADDR , 3); //USER_ROW
|
15 | while(NVMCTRL.STATUS & NVMCTRL_EEBUSY_bm);
|
16 | a= eeprom_read_byte(0);
|
17 | b=USERROW.USERROW0;
|
18 | _NOP();
|
19 | while(1);
|
20 |
|
21 | return 0;
|
22 | }
|
und diesen hier
1 | #include <avr/cpufunc.h> /* Required header file */
|
2 | #include <avr/eeprom.h>
|
3 | #include <avr/io.h>
|
4 | #include "bitoperation.h"
|
5 |
|
6 | volatile int b;
|
7 | int main(void) {
|
8 | _NOP();
|
9 | while(NVMCTRL.STATUS&NVMCTRL_EEBUSY_bm);
|
10 |
|
11 | NVMCTRL_ADDR=0x1300;
|
12 | NVMCTRL_DATA=15;
|
13 | BITMASK_SET(NVMCTRL_CTRLA,NVMCTRL_CMD_PAGEERASEWRITE_gc); //ERWP ERASE and write
|
14 | _NOP();
|
15 | _NOP();
|
16 | _NOP();
|
17 | while(NVMCTRL.STATUS & NVMCTRL_EEBUSY_bm);
|
18 | b=USERROW.USERROW0;
|
19 | _NOP();
|
20 | while (1);
|
21 | return 0;
|
22 | }
|