[an error occurred while processing this directive]
|
Цель - просто разобраться. Нужно записать любой байт в свободное место РМ. В студии все работает. Асм компилится правильный. На меге8 ничего не происходит. Шью тем же СV, фьюзы вроде правильные, lpm работает. И чего не хватает?
//СV1.24.3(или 2) точно не помню. Собственно смотрел асм Все правильно.
#define TestBit(p,n) (p & Bit(n))
#pragma warn-
void WritePM(int Adr,int Data)
{
#asm
;загрузка буфера
ldd r30,y+2 ;R30=LSB Adr ;заносим в Z = 2*(адрес для записи)
ldd r31,y+3 ;R31=MSB Adr
ldd r26,y+0 ;R26=LSB Data ;чего пишем
ldd r27,y+1 ;R27=MSB Data
mov r0,r26
mov r1,r27
cli
#endasm
//запись данных во временный буфер 64 байта
SPMCR = 0x1;
#asm ("spm");
while(TestBit(SPMCR,0));
//стирание страницы из 64 байт
SPMCR=3;
#asm ("spm");
while(TestBit(SPMCR,0));
//запись
SPMCR=5;
#asm ("spm");
while(TestBit(SPMCR,0));
#asm ("sei");
}
#pragma warn+
E-mail: info@telesys.ru