Страница 7 из 160

Добавлено: Вт фев 17, 2009 13:09:50
ARV
Kaspar писал(а):Существует ли возможность загрузки EEPROM файла, генерируемого AVR Studio в его же симулятор? На мой взгляд очень неправильно, что это не делается сразу по-умолчанию...
разумеется! после старта отладки через меню Debug - Up/Download Memory

Добавлено: Сб фев 21, 2009 18:24:03
Negor
Кто нибуть может научить меня в каком ассемблере чего нельзя делать. Вот например в авр студии билд 528 кажется был такой фокус - в ассемблере 2 нельзя юзать запись/чтение из РАМ с пост инкрементом, зато в асме 1 всё хорошо. Теперь поставил дома саму последнюю авр студию и там не работает постинкремент, а в ассемблере 1 нельзя в макросах юзать макросы... есть гденить стандарты или описания?

Добавлено: Сб фев 21, 2009 23:14:46
smac
Negor писал(а):Кто нибуть может научить меня в каком ассемблере чего нельзя делать. Вот например в авр студии билд 528 кажется был такой фокус - в ассемблере 2 нельзя юзать запись/чтение из РАМ с пост инкрементом, зато в асме 1 всё хорошо. Теперь поставил дома саму последнюю авр студию и там не работает постинкремент, а в ассемблере 1 нельзя в макросах юзать макросы... есть гденить стандарты или описания?
С постинкрементом там все хорошо, по крайней мере у меня ни разу проблем не возникало (Вы бы код показали, может что-то не так делаете). Описания есть в хелпе студии - Assembler help.

Добавлено: Вс фев 22, 2009 00:52:48
Negor
Я имел ввиду описание разници между асм 1 и асм 2. Вот для С тоже ж есть много стандартов....

Добавлено: Вс фев 22, 2009 19:45:02
Aheir
Это какие же?

Добавлено: Вс фев 22, 2009 23:13:09
ARV
принципиальная разница между вторым и первым ассемблером AVR Studio в том, что второй более Си-ориентирован: он понимает и обрабатывает все макросы Си-стиля, например, вместо директивы .def можно использовать #define и т.п. В остальном разницы нет. Ну, разве что второй ассемблер поддерживает последние новинки, а первый они похоже забросили в плане обновления.

Ни о каком "стандарте" ассемблера речь не идет - слишком мелкие масштабы у Atmel, чтобы их детище стало стандартом. Речь идет лишь о внутрикорпоративном подходе, а потому "что хочу, то и ворочу". Не используйте первый ассемблер, да и все. Второй прекрасно понимает программы в стиле первого (но не наоборот).

2 Aheir : стандартов Си действительно существует более одного, классика - ANSII C, при этом Си по Кернигану и Ритчи несколько от него отличается (и тем не менее де-факто тоже является стандартом). Есть еще модификации стандарта ISO C90, ISO C99 и еще ряд менее распространенных. Отличия между ними порой весьма существенные, например, С99 позволяет делать определение переменных в любом месте, а ANSII С - нет.

Добавлено: Пн фев 23, 2009 16:18:14
Anatrulij
А как настроить AVR Studio на работу с С++ кодом?

Добавлено: Пн фев 23, 2009 20:07:39
ARV
Anatrulij писал(а):А как настроить AVR Studio на работу с С++ кодом?
AVR Studio - это лишь оболочка, а для работы с С++ нужен компилятор. подключайте WinAVR, работайте, только вот с отладкой могут быть проблемы...

Добавлено: Пн фев 23, 2009 20:51:55
Anatrulij
ARV писал(а):AVR Studio - это лишь оболочка, а для работы с С++ нужен компилятор. подключайте WinAVR, работайте, только вот с отладкой могут быть проблемы...
По поводу оболочьки - это понятно. Но я не знаю как эту оболочьку настроить именно под C++.

Добавлено: Пн фев 23, 2009 21:32:02
Aheir
Ага, ARV, спасибо. Как раз их названия искал...

Добавлено: Сб фев 28, 2009 19:50:50
Alexeus
что то не пойму на что ругается AVR Studio:

AVR Simulator: IO Module: CAN (AVRSimIOCAN00.SimIOCAN00) not supported

Собираюсь программировать AT90CAN128, как раз нужен будет интерфейс CAN, а тут такое сообщение возникает уже при компиляции кода безобидного мигания светодиодом. А когда пытаюсь активировать CAN, пишет:

error: Operand 1 out of range: 0xd8

на это:

ldi r16,0x02
out CANGCON,r16

Добавлено: Сб фев 28, 2009 22:48:08
smac
Alexeus писал(а):что то не пойму на что ругается AVR Studio: ...
А когда пытаюсь активировать CAN, пишет:

error: Operand 1 out of range: 0xd8

на это:

ldi r16,0x02
out CANGCON,r16
Это значит что адрес SFR CANGCON больше 0x5f к такому SFR нельзя применять команду out , нужно сделать так:

Код: Выделить всё

ldi r16,0x02
sts CANGCON,r16

Добавлено: Чт мар 05, 2009 09:35:10
Alexeus
что то снова не так... Stack underflow at 0x005d, invalid opcode at 0xffff at adress 0x00ffff

вроде правильно инициализировал:
; ******************************************************
; BASIC .ASM template file for AVR
; ******************************************************

.include "can128def.inc"

; Define here the variables
;
.def temp =r16
.def temp2 =r17
.def temp3 =r18
.def DATA =r19
.def counter =r20

.cseg
.org 0

rjmp reset
reti
...
reti
;всего 36 reti

reset:
ldi r16,high(RAMEND); Main program start
out SPH,r16 ; Set Stack Pointer to top of RAM
ldi r16,low(RAMEND)
out SPL,r16
sei ;cli interrupts

; Program starts here after Reset
ldi temp,0b11111000
out PORTA,temp
....

появляется при возврате (ret) из вызванной функции (rcall) в основной цикл.

почему так?

Добавлено: Чт мар 05, 2009 10:39:45
smac
Alexeus писал(а):что то снова не так... Stack underflow at 0x005d, invalid opcode at 0xffff at adress 0x00ffff

вроде правильно инициализировал:
...
почему так?
Похоже на то, что вы когда возвращаетесь из подпрограммы выполняете ret 2 раза, при этом Ваша подпрограмма была вызвана из основного цикла, в результате происходит выборка адреса возврата из стека по несуществующему адресу.
И еще, таблица прерывания скорее всего не правильная, т. к. подозреваю что у вашего контроллера два слова программной памяти на каждый вектор прервывания. А вообще лучше код целиком покажите.

Добавлено: Чт мар 05, 2009 11:35:50
Alexeus
контроллер AT90CAN128
smac проверь личку

...

Мяу!!! вот тупанул, нужно было вызывать подпрограмму (Call), а я прыгал на нее (Jmp) Невнимательность... :)

Спасибо Smac

EEPROM

Добавлено: Сб мар 14, 2009 11:07:20
Pitty
Kaspar писал(а):Существует ли возможность загрузки EEPROM файла, генерируемого AVR Studio в его же симулятор? На мой взгляд очень неправильно, что это не делается сразу по-умолчанию...
Несмотря на ответ на этот вопрос: можно загружать через load memory, хочу уточнить вопрос:
Можно ли как-то заставить ассемблер пихать данные EEPROM в HEX файл, а не в отдельный файл.
Можно ли написать какой-то скрипт, чтобы автоматом загружалась память еепром при симуляции?
Работает ли симуляция еепром для тини26??? У меня не работает. Попробовал симулировать 261 с тем же кодом - работает, а с 26 не работает. Кто-нибудь сталкивался?
Ещё последний вопрос: есть ли возможность заставить понипрог автоматом открывать eep файл при загрузке HEX???
Как-то всё блин глючно... блин-блин-блин.

Добавлено: Пт мар 27, 2009 07:40:48
BerZerK-ku
AVR Studio 4.08. Столкнулся с подобной проблемой: при симуляции ни в какую не хочет писать в ЕЕПРОМ, проверял 100% рабочий код на Tint2313 и Mega8.

Добавлено: Пт мар 27, 2009 09:20:34
ikarab
BerZerK-ku писал(а):AVR Studio 4.08. Столкнулся с подобной проблемой: при симуляции ни в какую не хочет писать в ЕЕПРОМ, проверял 100% рабочий код на Tint2313 и Mega8.
А в докуметации написано что должна писать ???

Используйте VMLAB или PROTEUS с библиотекой от 7.5 - будет работать.

А студию скачайте 4.16

Добавлено: Пт мар 27, 2009 12:39:18
BerZerK-ku
ikarab писал(а): А в докуметации написано что должна писать ???
Может Вам покажется это странным, но написано.
ikarab писал(а): Используйте VMLAB или PROTEUS с библиотекой от 7.5 - будет работать.
А студию скачайте 4.16
Это тут вообще причем? [/quote]

Добавлено: Вт мар 31, 2009 20:00:45
sachok
Подскажите в Studio ясть окно терминала где можно посмотреть что передается по USART? В книге видел что в старой версии есть,а в 4,16 найти немогу.