реклама на сайте
подробности

 
 
> Помогите моргнуть лампочкой
Slev
сообщение Oct 20 2009, 08:53
Сообщение #1





Группа: Участник
Сообщений: 6
Регистрация: 18-09-09
Пользователь №: 52 449



Эта супер-программа должна моргать лампочкой со скважностью ~0,5 сек.
Собираю всё в EWB 3.21, шью - PonyProg2000.
Не получается заставить её работать в верхних 4 кб mega128.
Во фьюзах ставлю галочки у BOOTRST и BOOTSZ1.
Подправил адреса в xcl-файле (с 1F000 ).

Подскажите где я промахнулся...

Код
#include <iom128.h>
#include <ina90.h>
//-------------------------------------------------------
void main(void)
{
long t=0;
  
  __disable_interrupt();
  
   MCUCR=(1<<IVCE);MCUCR=(1<<IVSEL);

  PORTG = 0xff;
  DDRG |= 0x08;

  __enable_interrupt();
          
  while(1){    
    if(t++ > 100000){
      PORTG ^= 0x08;
      t=0;
    }
  }
}
//--------------------------------------------------------

Проект также прилагается.
Прикрепленные файлы
Прикрепленный файл  Micro.rar ( 16.14 килобайт ) Кол-во скачиваний: 24
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
mempfis_
сообщение Oct 20 2009, 14:56
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 001
Регистрация: 27-06-06
Пользователь №: 18 409



Проверте настройки линкера - начало области загрузчика и размер секции векторов (там 35 векторов по 4 байта).
Ещё проверте фус-биты настройки размера секции загрузчика, фус-бит старта из секции загрузчика. И выключите режим совместимости.
Снизу фрагмент файла линкера на котором я осваивал бут-секцию атмеги 128.
Выделе фрагмент где описано расположение сегментов во флеш - посмотрите может чемто поможет smile.gif

CODE


-DBOOT_START_512=1FC00 //константа адрес начала секции загрузчика 512 байт
-DBOOT_START_1024=1F800 //константа адрес начала секции загрузчика 1024 байт
-DBOOT_START_2048=1F000 //константа адрес начала секции загрузчика 2048 байт
-DBOOT_START_4096=1E000 //константа адрес начала секции загрузчика 4096 байт

-DBOOT_START=BOOT_START_4096 /*начало секции загрузчика*/


-DBOOT_SIZE_512=200
-DBOOT_SIZE_1024=400
-DBOOT_SIZE_2048=800
-DBOOT_SIZE_4096=1000
-DBOOT_SIZE=BOOT_SIZE_4096 //размер секции загрузчика

/* Code (flash) segments */
-D_..X_INTVEC_SIZE=8C /* 4 bytes * 35 vectors */
-D_..X_FLASH_TEND=FF /* End of tiny flash memory */
-D_..X_FLASH_NEND=FFFE /* End of near flash memory */
-D_..X_FLASH_END=(1FFFF-2) /* End of flash memory */ //тут указывается конечный адрес памяти минус 2 байта на crc
-D_..X_CRC_FLASH_END=(1FFFF) /*указываем что crc16 будет размещаться в конце памяти отведённой для программы*/




/* Code memory */
-Z(CODE)INTVEC=BOOT_START-(BOOT_START+_..X_INTVEC_SIZE-1)

/* Fill unused interrupt vector's with RETI */
-H1895
-h(CODE)BOOT_START-(BOOT_START+_..X_INTVEC_SIZE)

-Z(CODE)TINY_F=(BOOT_START+_..X_INTVEC_SIZE)-(BOOT_START+_..X_FLASH_TEND)
-Z(CODE)NEAR_F,SWITCH,DIFUNCT=(BOOT_START+_..X_INTVEC_SIZE)-(BOOT_START+_..X_FLASH_NEND)
-Z(CODE)CODE=(BOOT_START+_..X_INTVEC_SIZE)-_..X_FLASH_END
-Z(FARCODE)FAR_F=(BOOT_START+_..X_INTVEC_SIZE)-_..X_FLASH_END
-Z(CODE)HUGE_F,INITTAB=(BOOT_START+_..X_INTVEC_SIZE)-_..X_FLASH_END
-Z(CODE)TINY_ID,NEAR_ID=(BOOT_START+_..X_INTVEC_SIZE)-_..X_FLASH_END
-Z(CODE)CHECKSUM=(_..X_CRC_FLASH_END-1)-_..X_CRC_FLASH_END //тут располагается сегмент crc16 - 2 последних байта памяти

//а это ключ линкера для вычисления crc16 по области (CODE)0-(_..X_CRC_FLASH_END-2)
//-J2,crc16,1,=(CODE)0-(_..X_CRC_FLASH_END-2)
-J2,crc16,1//=(CODE)1E004-1E00b // BOOT_START-(BOOT_START+2)

Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Slev   Помогите моргнуть лампочкой   Oct 20 2009, 08:53
- - МП41   А разве можно прямо в проверке условия делать инкр...   Oct 20 2009, 10:53
|- - MrYuran   Цитата(МП41 @ Oct 20 2009, 14:53) А разве...   Oct 20 2009, 10:56
- - zltigo   Цитата(Slev @ Oct 20 2009, 11:53) Эта суп...   Oct 20 2009, 10:59
- - virtual9900   Цитата(МП41 @ Oct 20 2009, 13:53) А разве...   Oct 20 2009, 10:59
|- - Сергей Борщ   Цитата(virtual9900 @ Oct 20 2009, 13:59) ...   Oct 20 2009, 13:10
- - Xenia   Обращаю внимание присутствующих (и особливо суперп...   Oct 20 2009, 11:27
|- - Палыч   Цитата(Xenia @ Oct 20 2009, 14:27) ...пос...   Oct 20 2009, 12:41
- - SSerge   Точно! По умолчанию в Меге128 прошит fuse M103...   Oct 20 2009, 12:45
- - Slev   Спасибо всем, кто откликнулся (особенно Ксении - з...   Oct 20 2009, 22:01
|- - Dog Pawlowa   Цитата(Slev @ Oct 21 2009, 01:01) Посмотр...   Oct 21 2009, 03:51
- - Палыч   Цитата(Slev @ Oct 21 2009, 01:01) При сбо...   Oct 21 2009, 05:12
- - Slev   Вложил картинку про фузы. BOOTSZ=01 - 2048 words -...   Oct 21 2009, 08:01
|- - mempfis_   Цитата(Slev @ Oct 21 2009, 11:01) Вложил ...   Oct 21 2009, 09:13
- - Slev   memphis, твоя прошивка работает ! А в чём ты ...   Oct 21 2009, 09:39
|- - Сергей Борщ   Цитата(Slev @ Oct 21 2009, 12:39) Может э...   Oct 21 2009, 09:46
|- - mempfis_   Цитата(Slev @ Oct 21 2009, 12:39) memphis...   Oct 21 2009, 09:57
- - Slev   И ещё, самый первый вектор у нас разный: у меня 0С...   Oct 21 2009, 10:22
|- - mempfis_   ОК. map и lst в архиве. По поводу библиотек - особ...   Oct 21 2009, 11:00
- - SysRq   В нерабочем коде (дизасм ja tools\reavr): Код...   Oct 21 2009, 10:45
- - Slev   Нашёл! Проблема была не с CODE, а с DATA...   Oct 21 2009, 12:14


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 19:04
Рейтинг@Mail.ru


Страница сгенерированна за 0.0143 секунд с 7
ELECTRONIX ©2004-2016