|
|
  |
Проблема с TWI |
|
|
|
Jan 7 2006, 15:32
|

Местный
  
Группа: Участник
Сообщений: 315
Регистрация: 10-10-05
Пользователь №: 9 466

|
Спасибо, я бы с удовольствием отлаживал через JTAG, но у меня его нет, да и стоит он дороговато...
Можно, говорят, сделать самодельный, но я встречал на форумах обсуждения этих самоделок, так там тоже бывают проблемки, а у меня, слава Богу, одна уже есть. Вот когда/если я ее решу, то можно будет подумать и о jtag.
|
|
|
|
|
Jan 7 2006, 15:36
|
Местный
  
Группа: Свой
Сообщений: 242
Регистрация: 27-01-05
Пользователь №: 2 225

|
Цитата(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
|
|
|
|
|
Jan 7 2006, 16:13
|
Знающий
   
Группа: Свой
Сообщений: 543
Регистрация: 22-10-05
Пользователь №: 9 984

|
Цитата(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" Все после этого должно все работать.
|
|
|
|
|
Jan 7 2006, 17:47
|

Местный
  
Группа: Участник
Сообщений: 315
Регистрация: 10-10-05
Пользователь №: 9 466

|
А .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 © 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.
Ну что я делаю не так? Откуда эта ошибка?
|
|
|
|
|
Jan 7 2006, 19:58
|

Местный
  
Группа: Участник
Сообщений: 315
Регистрация: 10-10-05
Пользователь №: 9 466

|
Так, получается, .asm файл создает сам Протеус? Я думал, он будет открывать мой... Прописал параметры в Source, в Source Code Filename нажал "Change", выбрал папку проекта Протеуса (предварительно удалив оттуда свой .asm файл), написал: AZ_1_mega32.asm. Так как его там нет, Протеус задал вопрос: надо ли его создать? Создал. В меню Source, внизу нажал "AZ_1_mega32.asm", открылось окно редактора. Раньше, при его открытии выскакивала ошибка, типа, файл нельзя открыть, теперь отрылся нормально. Попробовал скопировать содержимое своего .asm файла в окно редактора - обломчик, у Протеуса, видно есть ограничение на объем файла. Не вставляется туда текст. Объем моего .asm файла = 300кБ. Что же дальше?
|
|
|
|
|
Jan 7 2006, 21:36
|

Местный
  
Группа: Участник
Сообщений: 315
Регистрация: 10-10-05
Пользователь №: 9 466

|
Я тут вот что подумал. В 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 © 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. Так или не так? Или всю эту процедуру надо проделывать для каждого МК в схеме?
|
|
|
|
|
Jan 8 2006, 05:36
|

Местный
  
Группа: Участник
Сообщений: 315
Регистрация: 10-10-05
Пользователь №: 9 466

|
Цитата Этим вы только указываете путь к файлу для компиляции, но SRCEDIT том вы всеравно исходник не откроете,хотя вполне возможно SDIфайл будет. Исходник открывается нормально (SRCEDIT'ом), и .SDI файл имеется. В Source>>> Add/Remove через NEW указал исходники для остальных двух МК. Редактором, правда, эти два не открываются, но .SDI файлы появились для всех 3-х МК, и, в режиме пошаговой отладки теперь можно открыть 3 окна AVR Source Code, и смотреть, как выполняется прога для каждого МК. А что же с ошибками делать? Не может Протеус открыть мои гигантские .asm'ы...
|
|
|
|
|
Jan 8 2006, 17:23
|

Местный
  
Группа: Участник
Сообщений: 315
Регистрация: 10-10-05
Пользователь №: 9 466

|
Проверяю пошаговое выполнение программы. Запустил отладку. Открылось окно 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?
Сообщение отредактировал James D. - Jan 8 2006, 17:27
|
|
|
|
|
  |
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|