Перейти к содержанию

Прошить Бутлоадер Atmega16A Программатором Tl866


artos5

Рекомендуемые сообщения

Добрый вечер уважаемые форумчане!

По каким адресам необходимо зашивать бутлоадер этим программатором? Что то не пойму... Пробовал по адресу: 1C00 и пробовал по 3b00 .Обе попытки не увенчались успехом...

Бут не шлет символ '>' , пробую запускать бутлоадер в протеусе - все работает, и шлет данный символ.

не полный код бута:

void BootLoad(void)
{
// Send chip data to the programming software so that it knows
// how to format transmissions
putchar(DeviceID);
putchar(FlashSize);
putchar(BootSize);
putchar(PageSize); 
// "!" means all ok and send the next data if there is more
putchar('!');
while(1)
{
PageAddress = (unsigned int)getchar() << 8;  // Receive PageAddress high byte
PageAddress += getchar();   // Add PageAddress low byte
if (PageAddress == 0xffff) ExecCode(); // The windows program sends this value when finished 
#if defined _CHIP_ATMEGA128_ 
if (PageAddress >> 8) RAMPZ =  1;
else RAMPZ=0; 
#endif
PageAddress = PageAddress << AddressLshift; //essentially the same as multiply by PageSize
if (GetPage()) //receive one page of data followed by a checksum byte and verify data
{
   for (i=0;i<PageByte;i+=2) //fill temporary buffer in 2 byte chunks from PageBuffer	  

    {
    Pagedata=PageBuffer[i]+(PageBuffer[i+1]<<8);
    while (SPMCR&1); //wait for spm complete
    CurrentAddress=PageAddress+i;
    spmcrval=1;
    #asm
    movw r30, r6    ;//move CurrentAddress to Z pointer  
    mov r1, r3	    ;//move Pagedata MSB reg 1
    mov r0, r2	    ;//move Pagedata LSB reg 1 
    sts SpmcrAddr, r10   ;//move spmcrval to SPM control register
    spm			    ;//store program memory
    #endasm
    }   

   while (SPMCR&1);  //wait for spm complete
   spmcrval=3;	    //erase page
   #asm
   movw r30, r4	   ;//move PageAddress to Z pointer
   sts SpmcrAddr, r10    ;//move spmcrval to SPM control register			 
   spm				 ;//erase page
   #endasm

   while (SPMCR&1); //wait for spm complete
   spmcrval=5;	    //write page
   #asm
   movw r30, r4	   ;//move PageAddress to Z pointer
   sts SpmcrAddr, r10    ;//move spmcrval to SPM control register			 
   spm				 ;//write page
   #endasm
   while (SPMCR&1);  //wait for spm complete
   spmcrval=0x11;   //enableRWW  see mega8 datasheet for explanation
 // P. 212 Section "Prevent reading the RWW section
 // during self-programming
   #asm
   sts SpmcrAddr, r10   ;//move spmcrval to SPMCR			 
   spm  
   #endasm
 if (CheckFlash()) putchar('!');  //all ok, send next page
 else putchar('@'); //there was an error, resend page
 }  //end if (GetPage())
 else putchar('@');  //there was an error ,resend page
 }
 }

void main(void)
{   
// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: On
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud rate: 9600
UCSRA=0x00;
UCSRB=0x18;
UCSRC=0x86;
//UBRRH=0x00;
//UBRRL=0x2F;  
ubbr = (unsigned long int)_MCU_CLOCK_FREQUENCY_ / (BAUDRATE * 16) - 1;
UBRRH=ubbr >> 8;
UBRRL = ubbr;
putchar('>'); //I'm here, talk to me
while ( (! (UCSRA&128)) &( i < 32000) ) i++; //wait for data in or timeout
if (i < 32000)  inchar= getchar();
if (inchar == '<') BootLoad(); // I'm here too, go ahead and load the program to flash
ExecCode();  // set up and jump to application
}

Помогите пожалуйста решить проблему...

Что может быть лучше в радиоэлектронике, чем программирование микроконтроллеров ?

Ссылка на комментарий
Поделиться на другие сайты

  • 3 недели спустя...

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

Даташит почитать не?

Установить фузы корректно надо, выбрать размер бута и включить BOOTRST.

В компиляторе адрес идет в "полусловах" 16 бит, в программаторе в байтах.

Какой размер бута выбран?

Ссылка на комментарий
Поделиться на другие сайты

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...