|
OSCCAL=AB, AC, A1, A1
BLEV=1
BODEN=1
SUT=2
CKSEL=F
BLB1=3
BLB0=3
OCDEN=1
JITAGEN=0
CKOPT=0
EESV=1
BSIZ=0
BRST=1
M103C=0
WDTON=1
Рабочий вариант программы:
#include int main(void) #include int i,j; int wait(void) int main(void) Помогает изменение границы стека (вставить нужно до цикла FOR), для этого Передвинул границу стека с 0x10FF -> 0xFFF. Такая граница получается после компилирования в AVRGCC, и в документации на Mega128 сказано, что последний адрес SRAM памяти 0x10FF. Пробовал менять 0x10FF -> 0x1000 не работает, в общем теряется 256 ячеек памяти. Попробовал запрограммировать два микроконтроллера mega128 в обоих случаях пока не поменяешь границу стека программа не работает. Вопрос: может кто-то может объяснить почему так происходит?
E-mail:
info@telesys.ru
#include
#include
#include
{
DDRC = 0xff;
for (;;)
{
PORTC=0xff;
i=0;
while(i<=32000)
{j=0;
while(j<=100)
{j++;}
i++;
}
PORTC=0x00;
i=0;
while(i<=32000)
{j=0;
while(j<=100)
{j++;}
i++;
}
}
return 0;
}
Не рабочий вариант:
#include
#include
#include
{
i=0;
while(i<=32000)
{
j=0;
while(j<=100)
{j++;}
i++;
}
return 0;
}
{
DDRC = 0xff;
for (;;)
{
PORTC=0xff;
wait();
PORTC=0x00;
wait();
}
return 0;
}
Volatile uint8_t ptr;
Asm volatile{
“ldi r28,0xff” “\n\t”
“ldi r29,0x0f” “\n\t”
“out 0x3E,r29” “\n\t”
“out 0x3D,r28” “\n\t”
:
: “e”(ptr)
: “r24”
};
Ответы