[an error occurred while processing this directive]
Ответ:
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено Сидоргек 30 января 2006 г. 17:30
В ответ на: Массив >64K в атмеге128 (CV AVR) отправлено <font color=gray>Viktor Yurchenko</font> 30 января 2006 г. 17:24

Все так и должно быть (в смысле, не работать).
В хелпе к КодВижену прописано, что суммарный размер констант во FLASH не может превышать 64К.
Мне в подобной ситуации пришлось написать нижеприведенный "баян":

// Çàëèâêà ïðîøèâêè â Àëüòåðó
void AlteraLoad(void)
{
ClrLine(1);
printf(" Çàãðóçêà ");

// Ðàçðåøàþ ðàáîòó ñî âíåøíåé øèíîé
MCUCR = 0b11000000;
XMCRA = 0b00001110;
// Îòêëþ÷àþ àäðåñ îò ïîðòà Ñ
XMCRB = 0b00000111;

// Íàñòðîéêà êîíòðîëëåðà SPI
SPCR = 0x78;
SPSR = 0x00;

// Óïðàâëÿþùèå íîãè
PORTB &= 0b11111000;
DDRB |= 0b00000111;
PORTE |= 0b10000000;
DDRE |= 0b01000000;

#ifdef DEBUG_OUT
dprintf("Çàãðóçêà ÏËÈÑ\n");
#endif

// Íà÷àëî çàãðóçêè
nCONFIG = 0;
delay_ms(10);
nCONFIG = 1;

while (!nSTATUS);

#ifdef DEBUG_OUT
dprintf("Åñòü nSTATUS\n");
#endif

// Çàãðóçêà äàííûõ (íà÷èíàþòñÿ ñðàçó ïîñëå êîäà)
#asm
.equ conf_done = 0x16
.equ conf_done_bit = 3

push r28
push r29
in r29, rampz
push r29
push r30
push r31

ldi r30, LOW(__END_OF_CODE << 1) ;addr = (íà÷àëî ïðîøèâêè << 1)
ldi r31, BYTE2(__END_OF_CODE << 1)
ldi r29, BYTE3(__END_OF_CODE << 1)

altera_load_loop: ; Öèêë çàãðóçêè áàéò
out rampz, r29 ; Î÷åðåäíîé áàéò ñ àâòîèíêðåìåíòîì àäðåñà
elpm r28, z+

out spdr, r28
spi_ready_loop: ; Ñóþ åãî â SPI
sbis spsr, 7
rjmp spi_ready_loop

tst r30 ; Ñòàðøèé áàéò àäðåñà
brne skip_29_inc
tst r31
brne skip_29_inc
inc r29
skip_29_inc:

sbis conf_done, conf_done_bit ; Ïðîâåðÿþ CONF_DONE
rjmp altera_load_loop

pop r31
pop r30
pop r29
out rampz, r29
pop r29
pop r28
#endasm

#ifdef DEBUG_OUT
dprintf("Çàãðóçèë\n");
#endif

// Äëÿ òîãî, ÷òî áû ïðîøèâêà çàðàáîòàëà
spi(0);
spi(0);
spi(0);
spi(0);
spi(0);

// Ñáðîñ ñõåìû â Àëüòåðå
ARESET = 0;
delay_ms(10);
ARESET = 1;
delay_ms(10);
}

Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 
NoIX ключ Запомнить

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Rambler's Top100 Рейтинг@Mail.ru
Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание

E-mail: info@telesys.ru