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

 
 
> Помогите моргнуть лампочкой
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
Ответов
Slev
сообщение Oct 21 2009, 08:01
Сообщение #2





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



Вложил картинку про фузы.
BOOTSZ=01 - 2048 words - 4096 bytes - F800*2=1F000

2 memphis_: твой фрагмент ничего не изменил, адреса получились такие же.

Раньше делал загрузчик для mega16, mega32. Сейчас хотел тупо собрать его для mega128 - не заработал. Всё повыкидовал оттуда, оставил только лампочку - всё равно не хочет работать...

Наверное, есть какие-то нюансы для >64K...
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
mempfis_
сообщение Oct 21 2009, 09:13
Сообщение #3


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

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



Цитата(Slev @ Oct 21 2009, 11:01) *
Вложил картинку про фузы.
BOOTSZ=01 - 2048 words - 4096 bytes - F800*2=1F000

2 memphis_: твой фрагмент ничего не изменил, адреса получились такие же.


В данный момент пишу загрузчик на основе настроек линкера что дал выше - светодиод моргает smile.gif
Для моргания светодиода ньюансов нет.
1. BOOTSTART у вас выставлен правильно - по ресету прыгаем в секцию загрузчика.
2. Если фусы BOOTSZ10 = 01 то размер секции загрузчика 2048 слов и адрес с которого надо располагать программу 1F000

В моём файле линкера это выглядит так:

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

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

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


Проверил - у меня всё работает.
Не работает только в одном случае - если неправильно выставлены биты BOOTSZ10.
В вашех hex-файле видно что программа располагается с правильно адреса. Ищите косяки в установке бит BOOTSZ10.


Откомпилировал вашу программу у себя слегка изменив с параметрами
Код
-DBOOT_START_2048=1F000 //константа адрес начала секции загрузчика 2048 байт
-DBOOT_START=BOOT_START_2048 /*начало секции загрузчика*/

-DBOOT_SIZE_2048=800
-DBOOT_SIZE=BOOT_SIZE_2048//размер секции загрузчика


Попробуйте прошить.


CODE
#include <iom128.h>
#include <ina90.h>
//-------------------------------------------------------
void main(void)
{
long t=1000000;

__disable_interrupt();

MCUCR=(1<<IVCE);MCUCR=(1<<IVSEL);

PORTG = 0xff;
DDRG |= 0x08;

__enable_interrupt();

while(1){
if(t > 0) t--;
else
{
PORTG ^= 0x08;
t=1000000;
}
}

}
//--------------------------------------------------------
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
- - mempfis_   Проверте настройки линкера - начало области загруз...   Oct 20 2009, 14:56
- - 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   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 Текстовая версия Сейчас: 22nd July 2025 - 11:54
Рейтинг@Mail.ru


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