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

Ты файл прошивки-то будешь показывать?

Чтобы не гадать, может у тебя программа какя-то кривая...

Зипом запакуй.

 

Куда'ж теперь деваться :)

 

Поделиться сообщением


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

Ты файл прошивки-то будешь показывать?

Чтобы не гадать, может у тебя программа какя-то кривая...

Зипом запакуй.

 

Куда'ж теперь деваться :)

 

пардоньте, а где прописана точка входа в прграмму? прыжки на прерывания? инициализация стеков?

Поделиться сообщением


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

пардоньте, а где прописана точка входа в прграмму? прыжки на прерывания? инициализация стеков?

 

Так это "С" делает сам. Если дизасемблировать программу (AVR Studio) видно, что по адресу 0000 сидит RJMP на программу, RJMPы на другие прерывания, перед main сидит куча присвоений в которых спрятаны организация стека и т.п. Или я не прав?

Поделиться сообщением


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

пардоньте, а где прописана точка входа в прграмму? прыжки на прерывания? инициализация стеков?

 

Так это "С" делает сам. Если дизасемблировать программу (AVR Studio) видно, что по адресу 0000 сидит RJMP на программу, RJMPы на другие прерывания, перед main сидит куча присвоений в которых спрятаны организация стека и т.п. Или я не прав?

вот этого я не скажу, с авр-студией никогда не общался, пишу в вижуал студио и использую иаровский компилятор из командной строки. все инициализации явно прописываю ручками.

скажу только, что если до ф-ии main дело не доходит, то очень возможно проблема именно вэтих самых джампах :(

Поделиться сообщением


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

Ты файл прошивки-то будешь показывать?

Чтобы не гадать, может у тебя программа какя-то кривая...

Зипом запакуй.

 

Куда'ж теперь деваться :)

 

Я зашил Port.hex в Mega8L-8PI и на 14 и 15 ногах (PB0,PB1) появились импульсы с частотой ~71.5кгц.

Мега сконфигурирована на работу от внутреннего осциллятора 1Мгц.

Вот мои фьюзы, на всяк случай:

BLEV = 1

BODEN = 0

SUT = 0

CKSEL = 1

BLB1 = 3

BLB0 = 3

WDTON = 1

CKOPT = 0

EESV = 0

BSIZ = 0

BRST = 1

 

Так что это у тебя в железе что-то не то.

Всё-таки попробуй прошить именно Port.hex и именно через avreal:

avreal32.exe -as -p1 +mega8 -o1000 -e -w -v Port.hex

но предварительно поставь фьюзы как у меня - для чистоты эксперимента.

Поделиться сообщением


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

Братцы, все заработало! Спасибо всем за обсуждение.

Если коротко, то в меге сидело не то, что я зашивал, помогло EraseChip.

 

Summary по этому топику:

 

Шьем Atmega8 через CodeVisonAVR и пользуемся AVRStudio4 как дизассемблером.

 

1) В программаторе CodeVisonAVR установлен флажок veryfy - Не верим ему.

 

2) После программирования выполняем Read Flash, затем Compare Flash - выскакивает индикатор прогресса и не говорит ничего плохого - Не верим результату.

 

3) Выполняем Read Flash и сохраняем содержимое как *.hex затем запускаем AVRStudio, открываем сохраненный файл, дизассемблируем его и смотрим что реально попало в Atmega. (Сравнить газами первый и последний байты - недостаточно.) У меня в середине программы оказались какие-то вопросы, и вообще нечто не похожее на мою программу. Не лишне будет сравнить тактовую частоту, которыя прошита в регистре OSCCAL, и видна в AVRStudio в разделе Processor.

 

4) Если программа отличается от того что должно попасть в mega, следует выполнить Erase Chip и повторить прошивку Flash и Fuse bits (последнее может и не обязательно, не знаю).

Поделиться сообщением


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

Я зашил Port.hex в Mega8L-8PI и на 14 и 15 ногах (PB0,PB1) появились импульсы с частотой ~71.5кгц.

Мега сконфигурирована на работу от внутреннего осциллятора 1Мгц.

 

Нет, фьюзы в hex файле вообще не прписаны, они шьются отдельно. Похоже у тебя в меге установлены заводские фьюзы по умолчанию (1 МГц, внутренний генератор).

 

У меня мега засвистела на частоте кварца 4 МГц, выходную частоту порта (по осциллографу) я поделил на число команд в цикле, получилось 3,3 МГц на одну команду, наверное какие-то команды двухтактные.

Поделиться сообщением


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

Нет, фьюзы в hex файле вообще не прписаны, они шьются отдельно.

Разве кто-то утверждал обратное? :)

Похоже у тебя в меге установлены заводские фьюзы по умолчанию (1 МГц, внутренний генератор).

Да, похоже, ты прочитал только первое предложение из того, что я написал ;)

[...]

1) В программаторе CodeVisonAVR установлен флажок veryfy - Не верим ему.

2) После программирования выполняем Read Flash, затем Compare Flash - выскакивает индикатор прогресса и не говорит ничего плохого - Не верим результату.

[...]

Ужос! :cranky:

Рекомендую ещё помучаться и разобраться более точно, ибо верификация должна нормально работать и верить ей можно. По кр. мере у меня если флеш не стирать, то верификация не проходит.

А в понипроге тоже верификация проходила?

4) Если программа отличается от того что должно попасть в mega, следует выполнить Erase Chip и повторить прошивку Flash и Fuse bits (последнее может и не обязательно, не знаю).

Обычно erase делают перед каждой прошивкой, если, конечно, программатор сам не делает это.

А фьюзы достаточно прошить один раз.

Поделиться сообщением


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

Ужос! :cranky:

Рекомендую ещё помучаться и разобраться более точно, ибо верификация должна нормально работать и верить ей можно. По кр. мере у меня если флеш не стирать, то верификация не проходит.

А в понипроге тоже верификация проходила?

 

Я PonyProgom всего один раз шил, уже не помню что там было. Понравился сервис CodeVision, на него и перебрался. К стати, возможно у нас разные версии, у меня CVAVR 1.24.8d Professional.

 

Я с этим несколько дней бился, именно считая, что раз верификация установлена - результат прошивки проверять не обязательно. В качестве дополнительной проверки пробовал Read Flash, затем Compare Flash, выскакивал прогресс бар и ничего больше не говорил. Это я воспринимал как test OK.

Erase не пользовался никогда. Зачем что-то стирать, он же проверил что реально прошилось в мегу.

 

А когда дизасемблировал то что прочитал из флешки - ужаснулся, вроде мой код, но с большим количеством ошибок. К стати, в СodeVision можно управлять частотой на котоой он прошивает мегу?

Поделиться сообщением


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

не знаю,я шью программатором CV постоянно через тот-же stk-200,никогда проблем не было.Попробуй

зайди в setting->programmer,там будет чек-бокс delay multiplier,у меня стоит 1,попробуй увеличить.

Да,и в progect->configure частота чипа правильно выставлена?программатор данные оттуда берет.

Поделиться сообщением


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

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

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

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

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

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

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

×
×
  • Создать...