Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Проблема с TWI
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
Страницы: 1, 2, 3, 4, 5, 6
James D.
Круто, блин. ваши файлы проектов для более поздней версии Протеуса, чем у меня... Не пошло. Только зря полтора часа качал!
А какая у вас версия программы? Где можно найти?
Кстати, в этом Протеусе, что я скачал, я что-то не нашел компонентов GND и VCC, и не понятно, как программулину в контроллер запихать.
Цитата
Ну нормально,
Я три месяца лопатил весь интернет,поднял всех на уши,в поисках рабочей версии,
в итоге все равно получил "из рук в руки",а Вы за пол дня ,с инета,и две версии.

Да я никогда особо симуляторами не увлекался, просто увидел на этом форуме ссылку, и скачал...
IgorKossak
cheers.gif
Двести постов на одну тему! Это ж надо!
James D., есть ли хоть какое-то продвижение\понимание проблемы? Суды по просмотрам этой темы за Вас уже добрая половина форума болеет. wink.gif
James D.
Да как вам сказать - если бы я понял проблему, то уже давным-давно устранил бы ее! Прогресс есть, теперь мастер передает данные на оба слэйва, а раньше только на один, а при попытке передать на второй, мастер затыкался.
Но теперь мастер не может принять данные со слэйва. Зависает. А в чем проблема - не пойму!
Думал погонять на симуляторе, так ведь нет, опять проблемы. Надо найти полностью рабочую версию программы Протеус (очень она мне понравилась), не демку - чтобы не грешить на симулятор, и, если в симуляторе будет зависание в том же месте программы - отлаживать.
Но, еще скажу: во-первых, найти, а во-вторых, качать 20 Mb - это не сахар! Я так банкротом стану через пару дней.
Можно ли мне взять помощь клуба? Плиз...
Rash
Цитата(James D. @ Jan 4 2006, 18:37) *
Да как вам сказать - если бы я понял проблему, то уже давным-давно устранил бы ее! Прогресс есть, теперь мастер передает данные на оба слэйва, а раньше только на один, а при попытке передать на второй, мастер затыкался.
Но теперь мастер не может принять данные со слэйва. Зависает. А в чем проблема - не пойму!
Думал погонять на симуляторе, так ведь нет, опять проблемы. Надо найти полностью рабочую версию программы Протеус (очень она мне понравилась), не демку - чтобы не грешить на симулятор, и, если в симуляторе будет зависание в том же месте программы - отлаживать.
Но, еще скажу: во-первых, найти, а во-вторых, качать 20 Mb - это не сахар! Я так банкротом стану через пару дней.
Можно ли мне взять помощь клуба? Плиз...

Если хочешь писать програмку с быстрее, на мой взгляд проще писать на Сях, но со знанием асма, да и непомешает, а очень поможет JTAG, а лучше JTAG mk2, тогда и надёжность повысится, т.к. всё можешь контролировать. И взял бы апликейшены AVR311 и AVR315 и горя бы не знал, там на С всё сделано для тебя разберёшься что к чему, а там и изменяй если необходимо. Лучше один раз потратится на средства отладки чем мучатся всю жизнь, ты подумай что ещё можно было сделать за 3 месяца, чем одно устройство которое до сих пор не заработало.
Petka
Цитата(bodja74 @ Jan 3 2006, 14:51) *
Petka
Ну Вы мне скажите зачем слейву проверять промежуточное значение F8,если оно имеет место
когда TWIN=0, а если TWIN=0 то и прерывания нет ,а если пошло то F8 там и не пахнет.
Тоже и по $00 ,если ошибка на шине слейв ничего не определит,а если определит он все равно не
сможет ничего сделать.
Если эти проверки нужны то только для мастера,он заведует шиной и решает что с ней делать.


Не зря Atmel приводит описание этих кодов. Повторяю: пока я в СЛЭЙВЕ (на mega16)не добавил обработку $F8 у меня зависала шина на фазе передачи. 2James D: вы добавили обработку $F8 в обработчик прерываний второго слэйва?
James D.
Добавил, но смогу прошить только завтра, и скажу результат.

Код
in  temp,TWSR
  cpi  temp,$60;Проверка принятого адреса от мастера
  breq Address
  cpi  temp,$80;Прием данных
  breq DataR

  cpi  temp,$A8;Передача данных
  breq DataT1
  cpi  temp,$B0;
  breq DataT1
  cpi  temp,$B8;
  breq DataT2

  cpi  temp,$00;
  breq Sob_00
  cpi  temp,$F8;
  breq Sob_F8

  ldi  temp,(1<<TWINT)|(1<<TWEA)|(1<<TWEN)|(1<<TWIE)
  out  TWCR,temp
  reti

Sob_00: ldi  temp,(1<<TWINT)|(1<<TWEA)|(1<<TWSTO)|(1<<TWEN)|(1<<TWIE)
  out  TWCR,temp
  reti

Sob_F8: reti    ;При коде $F8 - просто выходим из прерывания ничего не делая


Должно быть так?



Цитата
Если хочешь писать програмку с быстрее, на мой взгляд проще писать на Сях

Для этого сначала надо изучить Си, а на это тоже немало времени надо.
Цитата
...чем одно устройство которое до сих пор не заработало.

Но я не теряю надежды...
James D.
Кстати, здесь можно много чего из программ найти. Если кому нужно.
bodja74
Цитата(James D. @ Jan 4 2006, 16:47) *
Круто, блин. ваши файлы проектов для более поздней версии Протеуса, чем у меня... Не пошло. Только зря полтора часа качал!
А какая у вас версия программы? Где можно найти?
Кстати, в этом Протеусе, что я скачал, я что-то не нашел компонентов GND и VCC, и не понятно, как программулину в контроллер запихать.
Цитата
Ну нормально,
Я три месяца лопатил весь интернет,поднял всех на уши,в поисках рабочей версии,
в итоге все равно получил "из рук в руки",а Вы за пол дня ,с инета,и две версии.

Да я никогда особо симуляторами не увлекался, просто увидел на этом форуме ссылку, и скачал...


У меня 6.73 тоже демка но с подменеными основными файлами,все работает на 100%.
Лекарство подключать тоже целый ритуал.
Готовте ящик ,у меня 30 метров,по частям на три дня.

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

Подключить исходник Sourse>>>DefineCodeGenerationTool,откроется окно

В комбобоксе CodeGeneration указываете путь к компилятору AVRASM
Текстбокс SourseExtn пишете ASM
Текстбокс ObjExtn пишете OBJ
Текстбокс CommandLine пишете %1


Дальше,Sourse>>>Add/Remove ,откроется окно.

В комбобоксе SourseCodeFilename открываете путь к исходнику
В комбобоксе CodeGenerationTool Выбираете AVRASM
Текстбокс Flags пишете <имя файла>.lst <имя файла>.hex

Все!!! после этого в Sourse появиться исходник с которого можно автоматом компилировать и статовать
проект.Единственное <имя файла>.hex должно быть тоже что и у одного из контроллеров,остальные с прошивок.

Пошаговая отладка Play-pause>>>Debug>>>выбираем контроллер>>>выбираем регистры,память и т.д.
Дальше F10

GND и VCC есть,нижний ряд кнопок,у меня восьмая слева ,там в списке,
Коротче клацайте кнопками найдете много интересного.
James D.
Это вы мне хотите программу выслать? Слушайте, даже не ожидал! Ну, с меня причитается!
Почтовый ящик я увеличил до 40 метров. Шлите.

P.S. Глянул в ISIS (которую скачал), там у контроллера нет выводов VCC и GND. Это, получается, прога сама подсоединяет эти выводы к питанию и земле, или как?
bodja74
P.S. Глянул в ISIS (которую скачал), там у контроллера нет выводов VCC и GND. Это, получается, прога сама подсоединяет эти выводы к питанию и земле, или как?

Ну да,зачем париться с тем что полюбому должно быть.очередное удобство.

Пошел отсылать файлы.
James D.
В ящике получено, в общей сложности, около 35 метров. В пяти письмах. Правильно?
Ну, теперь буду вынимать. И разбираться.
Огромное спасибо!!!
bodja74
7 писем

Освобождайте ящик,файлы в инете увеличиваются 1.5 раза
James D.
Да, только что получил еще одно письмо. Шестое. Я просто самое первое, с тремя проектами не считал. Всего - 7.
Ящик я увеличил до 80 метров.
bodja74
Значит Все ,продублировал еще инструкцию к лекарству.
Пробуйте.
James D.
Уф-ф, кажись все скачал. 23 архива.
Теперь все это распаковать надо? В одну папку, или как? А потом уже устанавливать.
Пошел-ка я спать, голова что-то не варит уже...
James D.
Проверил работу МК с обработкой событий $00 и $F8 у обоих слэйвов. Старая история. Мастер, по-прежнему, зависает в одном и том же месте...
James D.
To bodja74:
СУПЕР!!! Все сделал как Вы мне советовали. Проекты запускаются и работают! В ARES проект сохраняется.
Цитата
Текстбокс Flags пишете <имя файла>.lst <имя файла>.hex

Создал я простенький проект в студии - m16 дрыгает одной ногой - назвал: program_1. В Текстбокс Flags написал: program_1.lst program_1.hex. Так или нет? Смущает расширение .lst, в папке проекта, файла с таким расширением нету...
Цитата
Единственное <имя файла>.hex должно быть тоже что и у одного из контроллеров,остальные с прошивок.

Не совсем понял. В Текстбокс Flags указывать <имя файла>.hex для одного МК, а для остальных - щелкать по изображению конкретного МК, и, в открывшемся окне, прописывать путь к HEX?
Цитата
GND и VCC есть,нижний ряд кнопок,у меня восьмая слева ,там в списке,

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

Fuse битов тоже не обнаружил.

И еще интересно: кроме питания, к МК кварц тоже, оказывается, цеплять не надо. А, если мне не нужен часовой кварц, в строке TOSC Frequency: указывается "Default"? Или нет?
bodja74
***Создал я простенький проект в студии - m16 дрыгает одной ногой - назвал: program_1. В Текстбокс Flags написал: program_1.lst program_1.hex. Так или нет? Смущает расширение .lst, в папке проекта, файла с таким расширением нету...***

Должен быть,program_1.lst program_1.hex через пробел
Потом BuildAll компиллер выдаст сообщение,в конце должно быть "ОК".

***Не совсем понял. В Текстбокс Flags указывать <имя файла>.hex для одного МК, а для остальных - щелкать по изображению конкретного МК, и, в открывшемся окне, прописывать путь к HEX?***

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

***Не нашел. В окне программы, внизу, кроме пуск, стоп и т.д. + вращение выбранного компонента, нет никаких кнопок. В каком списке?***

Не в самом низу окна ,а внизу меню(в этом ряду при запуске автоматом нажата кнопка Component)

***Fuse битов тоже не обнаружил.***

Фузы есть и не только они ,комбобокс AdvancetProterties

***И еще интересно: кроме питания, к МК кварц тоже, оказывается, цеплять не надо. А, если мне не нужен часовой кварц, в строке TOSC Frequency: указывается "Default"? Или нет?***

Ну здесь не знаю,насколько в курсе без инициализации все равно не поедет.
bodja74
Кстати мои проекты пробовали?
James D.
Проекты пробовал, поверхностно - пока что надо симулятор освоить.
Gnd и Vcc нашел. Fuзы тоже, хотя они как-то бестолково там показываются; то ли дело в CodeVision.

Кстати, а можно ли менять напряжение питания МК и Vcc?
James D.
Осваиваю потихоньку симулятор.
Пока не нашел ответа: можно ли менять напряжение питания МК и Vcc.
LCD русский текст не отображает, а жаль. У меня установлен: MT-16S2H, но там такого нет, приспособил LM016L, правда пришлось добавить питание -5В (он двуполярный).
Проверял пошагово TWI, но пока что до поломки не добрался.

И почему-то не получается в пошаговой работе шагать без захода в п/п. Что F10, что F11 - одно и тоже.
bodja74
Для пошаговой отладки без захода в подпрограммы да и просто до точки останова есть
SourseCode файл SBI.
Он отображаеться в Debug как исходник,посмотрите готовые проекты для AVR,
в нем и можно ставить точки останова и т.д.
Но я еще не как не могу понять как его создавать,через компиллер и подключать к проекту
как ресурс.

Насчет питания ,это надо в своиствах (Proterties)искать,я как то залез ,там столько всего
сразу вылез,подумал наменяю неразобравшись потом буду долго думать че не пашет.

Да еще можно подключать другие компиллеры ,например от AVRstudio и работать в ее формате
Но это тоже надо еще разбираться.
bodja74
Вот нашел

Sourse>>>DefineCodeGenerationTool

Путь CodeGenerationTool .../Tools/AVRASM/avrasm.exe
Текстбокс SourseExtn >>> ASM
Текстбокс ObjExtn >>> HEX
Текстбокс ListFile >>> LST
Путь DebugDataExtraction .../Tools/AVRASM/avrddx.exe

После этого исходник появляется при запуске ,можно делать точки останова,без входа в подпрограмму и т.д.

Кстати можно подключать исходники и на Си и на Basic,работать в паре и с другими средами
Коротче почитайте здесь по этой теме очень интересно
http://kazus.ru/modules.php?name=Forums&fi...der=asc&start=0
James D.
Сделал все как Вы описали, но у меня исходник не запускается. Из папки Samples (если взять какой-нибудь проект) - запускается. Но я заметил, что у меня в папке с проектом нет файлов с расширениями .lst и .SDI.
А почему?
James D.
Перезапустил симулятор, сразу указал для первого МК: Flags: pr_1_mega32.lst pr_1_mega32.hex.
Все файлы для трех МК из папки, которой пользуется AVRStudio, перенес в одну папку с проектом дизайна Протеуса. Здесь: "Source Code Filename" указал: PR_1_mega32.asm. Для каждого МК указал путь к их HEX файлам.
Появились 2 файла с расширениями .lst и .SDI. Но только для первого МК.
Попробовал выполнить Build All. Выдало: ERROR: PR_1_mega32.LST not found.
Для первого МК "Source Code - U1" появилось. Для двух других - нет. При попытке запустить source для U1 выдало: No source line at PC address [PC=0000].
В чем ошибка?
James D.
Ничерта сообщения не редактируются.
Сделал так:
Перезапустил симулятор, сразу указал для первого МК: Flags: pr_1_mega32.lst pr_1_mega32.hex.
Все файлы для трех МК находятся в папке, которой пользуется AVRStudio, не в одной папке с проектом дизайна Протеуса. Можно ли так делать?
Здесь: "Source Code Filename" указал: PR_1_mega32.asm. Для каждого МК указал путь к их HEX файлам.
Файлы с расширениями .lst и .SDI не появляются.
Попробовал выполнить Build All. Выдало: ERROR: PR_1_mega32.LST not found.
В чем ошибка?
James D.
В студии нашел как создать файл .lst, а .SDI создал, судя по всему, Протеус. Так что эти файлы появились.
Но при попытке выполнить Build All вываливает:

Processing ..\..\INSTALL\My projects\Project TWI\_ATmega32\_mega32.asm...
AVRASM ..\..\INSTALL\My projects\Project TWI\_ATmega32\_mega32.asm _mega32.lst _mega32.hex
AVRASM: AVR macro assembler version 1.30 (Jan 27 1999 01:30:00)
Copyright © 1995-1999 ATMEL Corporation

usage: avrasm [-m | -i | -g] [-w] <infile> <lisfile> <romfile>
-m Output Motorola S-record format
-i Output Intel HEX format (default)
-g Output Generic format
-w Relative jumps are allowed to wrap for
program ROM up to 4k words in size

ERROR: Avrasm.exe reported error code (1L).
Extracting debug data from ..\..\INSTALL\My projects\Project TWI\_ATmega32\_mega32.LST...
Processed 16855 lines.

Build FAILED with 1 error(s).

Получается так: какой исходный .asm файл я указываю в "Add/Remove Source Code Files", для того МК (из трех) и выскакивает эта ошибка.
m16
James D.
я для себя давно сделал вывод что все симуляторы - барахло и они далеки от реальных процессов в кристалле , эл. схеме. А посему отлаживаю программы через jtagice чего и вам желаю.
James D.
Спасибо, я бы с удовольствием отлаживал через JTAG, но у меня его нет, да и стоит он дороговато...

Можно, говорят, сделать самодельный, но я встречал на форумах обсуждения этих самоделок, так там тоже бывают проблемки, а у меня, слава Богу, одна уже есть. Вот когда/если я ее решу, то можно будет подумать и о jtag.
m16
Цитата(James D. @ Jan 7 2006, 18:25) *
Спасибо, я бы с удовольствием отлаживал через JTAG, но у меня его нет, да и стоит он дороговато...

нуууууу вы блин даете : мега16+макс232+кварц7.37+макетка+навеска(резюки,кондюки)=~500рэ и три часа работы
http://electronix.ru/forum/index.php?act=A...pe=post&id=2167
bodja74
Цитата(m16 @ Jan 7 2006, 18:18) *
James D.
я для себя давно сделал вывод что все симуляторы - барахло и они далеки от реальных процессов в кристалле , эл. схеме. А посему отлаживаю программы через jtagice чего и вам желаю.


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

JTAG вещь хорошая, но есть одна проблема,его нет у всех TINY и половины МЕГ.Это только по AVR,а
есть еще и другие контроллеры.

Цитата
В студии нашел как создать файл .lst, а .SDI создал, судя по всему, Протеус. Так что эти файлы появились.
Но при попытке выполнить Build All вываливает


Ничего Вы не добились.
Посмотрите Sourse>>>Add/Remove
Текстбокс Flags там скорее всего ничего не указано

Вернитесь к проблеме создания .lst файла.

Все так и должно быть при создании нового проекта и сохранении В НОВОЙ ПАПКЕ.
Проблема из за того что в ПРОТЕУСЕ остаються старые пути к файлам.
Делаем так.
Делаем новый проект >>>File>>Save As...>>сохраняем в новой папке.
Потом заносим в эту же папку исходник и и подключаемые файлы к нему.Если используете компиллер AVRASM v1.30 и мегу32 значит переносите подключаемый файл обьявления имен регистров m32def.inc в папку.
В исходнике вначале пишете диррективу .include "m32def.inc",а в самом файле m32def.inc убираете диррективу в самом начале .device ATmega32

Потом Sourse>>>Add/Remove >>>И НАЖИМАЕМ КНОПКУ "NEW" ,
Все значения заносим заново,при этом в текстбоксе SourseCodeFileName должен отображаться
ТОЛЬКО <имя>.asm БЕЗ УКАЗАНИЯ ПУТИ на тип C:/Proteus/temp/<имя>.asm
(остальное как писал) ПОТОМ КНОПКА "OK"
Все после этого должно все работать.
James D.
А .lst файл создается в AVRстудии - Project/AVR Assembler Setup/ галочку поставил - "List file", и всё.

Значит делаю так:
Создал новую папку: D:\My Projekt Proteus\Projekt_1. My system_2
Создал новый проект, сохранил в эту папку.
Потом в нее же перенес все файлы для трех МК, которые создала AVRстудия - все в одной куче без папок.
Во всех исходниках, в начале я всегда пишу - .include "m32def.inc" или .include "m16def.inc", эти файлы подредактировал - убрал строку .device ATmega32 и .device ATmega16.

Потом Source>>>Define Code Generation Tools...
В разделе Code Generation Tool>>>
Tool: AVRASM,
Path: C:\Labcenter Electronics\Proteus 6 Demonstration\Tools\AVRASM\Avrasm.exe

В разделе Make Rules>>>
Source Extn: ASM
Obj. Extn: HEX
Command Line: %1

В разделе Debug Data Extraction>>>
List File Extn: LST
Path: C:\Labcenter Electronics\Proteus 6 Demonstration\Tools\AVRASM\avrddx.EXE

Потом Source>>>Add/Remove Source Code Files
В разделе Source Code Filename>>>AZ_1_mega32.asm
В разделе Code Generation Tool>>>AVRASM
Flags: az_1_mega32.lst az_1_mega32.hex

Потом в Протеусе расположил 3 МК: 2 - m32 и 1 - m16. Для каждого в пункте Program File указал: "az_1_mega32.hex" и так же для остальных двух. Clock Frequency: 4MHz у всех МК.
Проект сохранил.
Жму Source>>>Build All, результат:

Processing AZ_1_mega32.asm...
AVRASM AZ_1_mega32.asm az_1_mega32.lst az_1_mega32.hex
AVRASM: AVR macro assembler version 1.30 (Jan 27 1999 01:30:00)
Copyright &copy; 1995-1999 ATMEL Corporation

ERROR: Unable to open input file 'AZ_1_mega32.asm'

ERROR: Avrasm.exe reported error code (1L).
Extracting debug data from AZ_1_mega32.LST...
Processed 13737 lines.

Build FAILED with 1 error(s).

Компиллер - как видите version 1.30. В AVRстудии - не знаю какой версии, в папке, в которой находится студия - AVR Tools, есть папка AvrAssembler, в ней - avrasm32.

Ну что я делаю не так? Откуда эта ошибка?
James D.
Да, еще одно. В Debug>>>AVR Source Code - U1 (az_1_mega32) - есть, а для остальных двух МК - нет. Файл AZ_1_mega32.SDI - есть, а для остальных двух МК - файлов .SDI - нет.
bodja74
Ну Вы как обычно,бежите вперед батька в пекло.

Еще толком не разобрались как подключать исходник ,а вы уже хотите подключать через AVRstudio/

У ПРОТЕУСА есть свой редактор исходного кода SRCEDIT.
Когда Вы прописали параметры в Sourse,в закладке Sourse появляеться новая строка с названием вашего исходника,нажимаете редактируете.Путь к редактору Sourse>>>SetupExternalTextEditor

Теперь ошибки,хоть в английском не силен,попробую

ERROR: Unable to open input file 'AZ_1_mega32.asm'

Здесь похоже этот файл уже открыт другим приложением,возможно AVRstudio

ERROR: Avrasm.exe reported error code (1L).
Extracting debug data from AZ_1_mega32.LST...
Processed 13737 lines.

Здесь вы же создали .lst файл компиллером AVRASM32 а каким нужно?
Компилерр AVRASM сам создаст при тех настройках что писал.
James D.
Так, получается, .asm файл создает сам Протеус?
Я думал, он будет открывать мой...
Прописал параметры в Source, в Source Code Filename нажал "Change", выбрал папку проекта Протеуса (предварительно удалив оттуда свой .asm файл), написал: AZ_1_mega32.asm. Так как его там нет, Протеус задал вопрос: надо ли его создать? Создал.
В меню Source, внизу нажал "AZ_1_mega32.asm", открылось окно редактора. Раньше, при его открытии выскакивала ошибка, типа, файл нельзя открыть, теперь отрылся нормально.
Попробовал скопировать содержимое своего .asm файла в окно редактора - обломчик, у Протеуса, видно есть ограничение на объем файла. Не вставляется туда текст. Объем моего .asm файла = 300кБ.
Что же дальше?
bodja74
300КИЛОБАЙТ????!!!!!

Ну извиняйте создатели SRCEDIT наверное явно не расчитывали что народ научиться писать код
для МК таких размеров.
Я например до сих пор пользуюсь проостыми вещами,например пишу исходники для веб-страниц и
asm на обыкновенном БЛОКНОТЕ.
При работе с файлами ВИНКОММАНДЕР и т.д.

Ладно есть два варианта я думаю

1. Путь к редактору Sourse>>>SetupExternalTextEditor указывайте редактор AVRstudio
2.Переписывайте исходник.

Ну еще 3.как я в основном делаю компилю в своей среде ,и использую только для симуляции.
James D.
Я тут вот что подумал.
В Source Code Filename надо ведь указывать любой МК, который присутствует в схеме? У меня мастер имеет объем .asm файла 300кБ, слэйв1 - 390кБ, а слэйв2 - 16кБ. Вот я слэйв2 и указал. В окне редактора я ничего не писал, просто указал путь на .asm файл, созданный студией. В SetupExternalTextEditor восстановил путь к SRCEDIT.
Исходник открывается нормально. Делаем Source>>>Build All, читаем:

Processing RTC_1.asm...
AVRASM RTC_1.asm rtc_1.lst rtc_1.hex
AVRASM: AVR macro assembler version 1.30 (Jan 27 1999 01:30:00)
Copyright &copy; 1995-1999 ATMEL Corporation

Creating 'RTC_1.eep'
Creating 'rtc_1.hex'
Creating 'RTC_1.obj'
Creating 'rtc_1.lst'

Assembling 'RTC_1.asm'
Including 'm16def.inc'

Program memory usage:
Code : 350 words
Constants (dw/db): 0 words
Unused : 20 words
Total : 370 words

Assembly complete with no errors.
Deleting 'RTC_1.eep'

Extracting debug data from RTC_1.LST...
Processed 1182 lines.

Build completed OK.

Так или не так?

Или всю эту процедуру надо проделывать для каждого МК в схеме? blink.gif
bodja74
Этим вы только указываете путь к файлу для компиляции,
но SRCEDIT том вы всеравно исходник не откроете,хотя вполне возможно SDIфайл будет.
Я тут поковырялся ,можно указать путь к AVRstudio в ПРОТЕУСЕ там править код и запускать
в ПРОТЕУСЕ но перед этим нужно сохранить файл и закрыть прогу в AVRstudio.
Возможно еще как по другому можно чтобы упростить процедуру,нужно поковыряться.
У SRCEDIT можно не выходя и сохраняя стартовать,но уж больно редактор этот простенький.
Например плохо искать ошибки в строке при компиляции и.т.д.


***Build completed OK.

Так или не так?

Или всю эту процедуру надо проделывать для каждого МК в схеме? ***

Ну наконец то пошло ,компилить для каждого конечно, прошивки же нужны и SDI-файлы тоже для просмотра полезно.
Я еще надыбал компиллер в AVRstudio покруче AVRASM2 попробую его поцепить в ПРОТЕУС,посмотреть чего хорошего.
James D.
Цитата
Этим вы только указываете путь к файлу для компиляции,
но SRCEDIT том вы всеравно исходник не откроете,хотя вполне возможно SDIфайл будет.

Исходник открывается нормально (SRCEDIT'ом), и .SDI файл имеется.
В Source>>> Add/Remove через NEW указал исходники для остальных двух МК. Редактором, правда, эти два не открываются, но .SDI файлы появились для всех 3-х МК, и, в режиме пошаговой отладки теперь можно открыть 3 окна AVR Source Code, и смотреть, как выполняется прога для каждого МК.
А что же с ошибками делать? Не может Протеус открыть мои гигантские .asm'ы...
James D.
Проверяю пошаговое выполнение программы.
Запустил отладку.
Открылось окно AVR Source Code для первого МК (у которого размер .asm файла = 300кб).
Сразу поясню: в моем исходнике сначала расположен сегмент .DSEG, потом .CSEG (прога) и, в конце, .ESEG.
Слева в окне отладчика расположены адреса (кстати, в этом окне, от меток ячеек памяти остались одни огрызки - слева от них отхвачены куски имен):

.include "m32def.inc"

---- .DSEG ;Bнуmpeнняя RAM
____
---- .ORG $0080
0100 A: .byte 32
____
---- .ORG $0100
0200 F: .byte 800
____
---- .ORG $0060
00C0 ht:.byte 1
.
.
.
---- .ORG $00F0
01E0 _kr:.byte 1 - последняя ячейка SRAM.

После этого идет сегмент .CSEG.
Прога стартует с адреса
---- .CSEG
---- .org $000
0000 rjmp RESET

Жму F11, выполнение переходит не сюда:

0052 RESET: ldi temp,high(RAMEND) . нaзнaчumь cmeк
0054 out SPH temp
0056 ldi temp,low(RAMEND)
0058 out SPL,temp

---- Уcmaнoвкa nopmoв B/B:
____
005A ldi temp,DIRA
005C out DDRA,temp ;уcmaнoвкa нanpaвлeнuя PORTA
005E ldi temp,PUPA
0060 out PORTA,temp ;uнuцuaлuзaцuя PORTA

а на сегмент .ESEG

0052 t_s: .db $00,$00,$00,$00

опять жму F11, выполнение идет на адрес 0054 - (out SPH temp), после этого на адрес 0056, 0058, а потом не на адрес 005А ( ldi temp,DIRA), а опять в .ESEG

005A t o hl:.db $00 $00

Точно так же может залететь и в .DSEG.
Что это за адреса такие, и почему они совпадают для программной памяти, ОЗУ и EEPROM?
bodja74
Тут надо с компиллером разбираться,в какой последовательности какие диррективы и т.д.
Какие он вообже переваривает.
Я .DSEG .ESEG еще не использовал,повторюсь что програмлю на графическом асме.
Возможно компиллер эту команду не переваривает high(RAMEND) ,или что другое,посмотрите описаловку на него.
James D.
Но у меня по-прежнему, при попытке выполнить Build All, выдается 2 ошибки: "Unable to open input file '*.asm'" (Не в состоянии открыть входной файл '*.asm) для двух m32. Может быть из-за этого отладчик выделывается? Нужно сначала добиться, чтобы компоновалось без ошибок, а потом уже думать дальше. Но как этого добиться?
James D.
Насколько я понял, в этом виноват avrasm. Так? А что, если из более новой версии Протеуса этот файл вынуть, и вставить вместо существующего? Слыхал, есть уже версия 6.9 - там проект просто нельзя сохранить.
Можно ли проделать такой финт?
bodja74
Попробуите заместь AVRASM подключить AVRASM2 из AVRstudio,
думаю нужно будет только переназначить пути к нему при настройках.
James D.
Да я пробовал сделать такую штуку.
Пробовал и удалить avrasm32 из папки Протеуса, и вставить вместо него avrasm32 из студии, в обоих случаях, при выполнении Build All выдает: Please specify a input file (Пожалуйста определите входной файл).
bodja74
AVRASM2 и AVRASM32 это разные компиллеры.
AVRASM2 v2.0.8 есть у меня в AVRstudio
AVRASM32 v1.57 есть и AVRstudio и в ПРОТЕУСЕ.

Кстати подключил я AVRASM32 во Flags ничего не указывать ,тогда все пойдет.
переопределить компиллер в DefineCode и Add/Remove
James D.
Да, указал Протеусу на файл AVRASM32 v1.57 в AVRstudio, скомпоновалось без ошибок! Для всех МК! Я раньше из Flags ничего не убирал. Спасибо за подсказку!
При пошаговом проходе, выпонение проги все равно скачет по всем сегментам.
Но, в принципе, я думаю, пользоваться Протеусом уже можно. Хочется надеяться, что моделирование будет происходить правильно, невзирая на все эти заморочки.
Будем посмотреть :-)
bodja74
Подключил еще AVRASM2 во Flags указать -FI -L <name>.lst

Попробуйте еще такой.
bodja74
Вот еще,теперь не нужно подключать файл и химичить с m32def.inc
Для AVRASM32 и AVRASM2 в исходнике достаточно указать например
.device ATmega32
James D.
Указал Протеусу на файл AVRASM32 в самом Протеусе, тоже работает, скомпоновалось без ошибок.
А AVRASM2 у меня нету. У вас, наверное, более новая версия студии, чем у меня (4.06). Интересно было бы узнать: с этим AVRASM2 Протеус лучше работает с большими .asm файлами или нет? В режиме пошаговой отладки у меня пока выполнение заносит не поймешь куда, за это тоже AVRASM ответственен? И будет ли лучше, если я установлю этот AVRASM2? Для этого, наверное, надо новую студию качать?
.
Цитата
Подключил еще AVRASM2 во Flags указать -FI -L <name>.lst

А это что за звери -FI -L?
Цитата
Вот еще,теперь не нужно подключать файл и химичить с m32def.inc
Для AVRASM32 и AVRASM2 в исходнике достаточно указать например
.device ATmega32

Что-то мне уже как-то не хочется экспериментов - работает и ладно, вряд ли из-за такого усовершенствования будет работать лучше.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.