AVR studio в вопросах и ответах

Обсуждаем контроллеры компании Atmel.
Ответить
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 342
Зарегистрирован: Чт ноя 21, 2013 14:05:26
Откуда: Україна

Сообщение DJZEM »

Спасибо за советы. Буду искать что ни будь такое :lol: эдакое, типа оптимизировать программу
Контактная информация:
Реклама
Друг Кота
Аватара пользователя
Сообщения: 6322
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

Сообщение Jack_A »

Пришлось мне работать с МК ST6265. MK довольно убогий, даже сдвига вправо не было (!), и тормозной. Но там очень интересно организована работа с EEPROM. Переключением одного бита в PSW на место одной страницы ОЗУ подключается EEPROM, и с ее байтами можно запросто работать как с операндами команды, безо всяких read_EEPROM и wrire_EEPROM.
DJZEM, я понимаю, Вам в этой задаче это вряд ли поможет, но для общего сведения.
Реклама
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 342
Зарегистрирован: Чт ноя 21, 2013 14:05:26
Откуда: Україна

Сообщение DJZEM »

:o Оказывается код можно оптимизировать, просто нужно понять как работает функция :))) А я леплю, такой, одно и то же пачками...
Контактная информация:
xkp
Опытный кот
Аватара пользователя
Сообщения: 781
Зарегистрирован: Ср ноя 18, 2009 12:50:31
Откуда: ковров

Сообщение xkp »

всем мяу. Я пользуюсь AVRstudio 4.18 ибо новые версии меня не устраивают. все бы ни чего но к вам меня завел некий вопрос.
С моим компьютером случилось так, что его погрызли мыши. пришлось переустанавливать винду. поставил вин7 домашнюю расширенную, ну она собственно и стояла у меня.
установка студии 4,18 требует 4 установок. 1 - установка версии 4.12. 2 - обновление. 3 - обновление до 4.18. 4 - обновление до 4.18sp3.
ну так вот на втором этапе вышла ошибка и установка прекратилась. при повторном запуске все прошло нормаль, до последнего этапа. в нем уже выдает ошибку что вы не прошли 3 этап.
ой муторно как думаю не поймете. короче "зависла" программа установки где то. сейчас стоит 4.12 неработающая.
при запуске выдает окно
Изображение
удалить не получается её. как это сделать? через диспетчер удалени программ делает вид что удаляется но на самом деле ни чего не происходит. программа остается. как удалить?

удалил файлы программы вручную в program files (x86)
скачал установщик 4,18 с офф сайта. запускается. устанавливается. Но ничего нового не появляется ни в в program files (x86), ни в program files, ни в меню пуск, ни в удалении программ
R5VCH
Хотелки:
СпойлерАналоговый осциллограф С1-112, С1-118, другие
не/рабочие модули от комплекса ОДА-102
всё что касается AVR, arduino, raspberry
всё что касается КВ-УКВ-радиосвязи, mashtastic
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Первый раз сказал Мяу!
Сообщения: 37
Зарегистрирован: Ср июл 28, 2010 20:29:22
Откуда: Ukraine

Сообщение HF_Cat »

2 xkp, у меня под 7-кой установлена AVR Studio 4.19 + AVR Toolchain (avr-toolchain-installer-3.3.0.710-win32.win32.x86.exe). Всё норм работает.

Вопрос: как в AVR GCC assembler, в .S файле оформить сохранение таблици чисел во flash-памяти и правильно считывать из неё числа?
Пробовал так... Сохранял таблицу так...

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

.section .text
CRCtable:
  .asciz	"0", "94", "188", "226"
Считывал числа так

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

	ldi		ZH, hi8(CRCtable)
	ldi		ZL, lo8(CRCtable)
........
	clc
	rol		ZL
	rol		ZH
        	lpm		r18, Z
В результате AVR Studio 4,19 ошибок не выдаёт, код выполняется. Но считывается не правильный начальный адрес таблицы в flash-памяти и правильные данные я не получаю.
Подскажите как правильно сделать.
Реклама
akl
Друг Кота
Сообщения: 4450
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Сообщение akl »

HF_Cat писал(а):Подскажите как правильно сделать.

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

	ldi		ZH, high(CRCtable*2)
	ldi		ZL, low(CRCtable*2)
;	ldi		ZH, hi8(CRCtable)
;	ldi		ZL, lo8(CRCtable)
........
;	clc
;	rol		ZL
;	rol		ZH
        	lpm		r18, Z
Реклама
Первый раз сказал Мяу!
Сообщения: 37
Зарегистрирован: Ср июл 28, 2010 20:29:22
Откуда: Ukraine

Сообщение HF_Cat »

akl, такой вариан подходит для обычного .asm файла, а в .S файле сразу ошибка: "Error: garbage at end of line"
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1163
Зарегистрирован: Ср янв 05, 2011 16:25:15

Сообщение ChipKiller »

HF_Cat писал(а):в .S файле сразу ошибка: "Error: garbage at end of line"
на какую конкретно строку идет ругань?

ps. .. а вообще экстрасенсы в отпуске, поэтому если хотите получить ответ - исключайте ситуацию, чтобы отвечающим приходилось гадать...
Первый раз сказал Мяу!
Сообщения: 37
Зарегистрирован: Ср июл 28, 2010 20:29:22
Откуда: Ukraine

Сообщение HF_Cat »

ChipKiller,
на эти две

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

   ldi      ZH, high(CRCtable*2)
   ldi      ZL, low(CRCtable*2)
потому что в GCC Assembler синтакис немного другой и адрес задаётся как

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

   ldi      ZH, hi8(CRCtable)
   ldi      ZL, lo8(CRCtable)
В смысле вместо High, Low используются hi8, lo8

И умножение "адреса" на 2 было сделано в начальном коде через сдвиг. (есть в моём начальном посте)
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1163
Зарегистрирован: Ср янв 05, 2011 16:25:15

Сообщение ChipKiller »

тогда попробуйте

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

ldi      ZH, hi8(CRCtable*2)
ldi      ZL, lo8(CRCtable*2)
или

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

ldi      ZH, hi8(CRCtable<<1)
ldi      ZL, lo8(CRCtable<<1)
HF_Cat писал(а):умножение "адреса" на 2 было сделано в начальном коде через сдвиг
..зачем тратить лишние такты и память?

.ps Посмотрите в листинге какой адрес подставляется в r30,r31
Первый раз сказал Мяу!
Сообщения: 37
Зарегистрирован: Ср июл 28, 2010 20:29:22
Откуда: Ukraine

Сообщение HF_Cat »

Z = 0x2434, а это вне адресноо пространства Atmega168
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1163
Зарегистрирован: Ср янв 05, 2011 16:25:15

Сообщение ChipKiller »

HF_Cat писал(а):Z = 0x2434, а это вне адресноо пространства Atmega168
с чего вдруг такой вывод? 0x2434=9268, что лежит в пределах 16КB
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич

Сообщение Alexeyslav »

Адресация меток идет словами, потому что команды занимают целое число слов и указатель команд на исполнение работает с словами. Адресация памяти через LPM/SPM идет побайтовая, поэтому любой адрес метки находящейся в сегменте кода надо умножать на два. Метки для RAM и EEPROM - побайтовые, поэтому их умножать не нужно.

Посмотри в отладчике, что находится в программной памяти по твоему адресу. Многое станет ясно. Можно еще посмотреть сгенерированый листинг кода и MAP-файл в котором находятся реальные адреса всех меток получившиеся в процессе компиляции, опять же с учетом того что адресация в программной памяти идет по словам.
Контактная информация:
Первый раз сказал Мяу!
Сообщения: 37
Зарегистрирован: Ср июл 28, 2010 20:29:22
Откуда: Ukraine

Сообщение HF_Cat »

Посмотрел .hex файл программы, по этому адресу(0x2434) совсем другие значения и моей таблицей по-близости нет. В .map файле программы моей метки\имени таблицы (CRCtable) нет вообще. А в AVR Studio в Program memory адрес последнего слова 0x1FFF.(ATmega168)
Наверное, синтаксис записи таблицы не правильный. Буду искать правильный.
Alexeyslav, а что вы имеете в виду под
Можно еще посмотреть сгенерированый листинг кода
, и где он находится?
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич

Сообщение Alexeyslav »

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

А что вообще за сущность такая CRCtable что не находится в map-файле? может файл старый лежит, или вовсе не от этого исходника?
Контактная информация:
Собутыльник Кота
Аватара пользователя
Сообщения: 2896
Зарегистрирован: Сб ноя 13, 2010 12:53:25
Откуда: приходит весна?

Сообщение B@R5uk »

Подскажите, пожалуйста, можно ли в AVR Studio 4 на си программировать? Пытаюсь скомпилировать простейшую программу:

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

void main ()
{
	while (1)
	{
	}
}
В ответ тишина, ни сообщений о завершении компиляции, ни хекс-файла, ничего. Может надо что-то дополнительно настроить? С ассемблером всё компилится нормально.
Друг Кота
Аватара пользователя
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Сообщение Gudd-Head »

B@R5uk писал(а): Может надо что-то дополнительно настроить?
Надо поставить. WinAVR, например.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Собутыльник Кота
Аватара пользователя
Сообщения: 2896
Зарегистрирован: Сб ноя 13, 2010 12:53:25
Откуда: приходит весна?

Сообщение B@R5uk »

Не понял. Что именно поставить? Сама студия не имеет какого-то компонента по умолчанию?
Друг Кота
Аватара пользователя
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Сообщение Gudd-Head »

B@R5uk писал(а):Что именно поставить? Сама студия не имеет какого-то компонента по умолчанию?
Сишный компилятор. Да, не имеет.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Собутыльник Кота
Аватара пользователя
Сообщения: 2896
Зарегистрирован: Сб ноя 13, 2010 12:53:25
Откуда: приходит весна?

Сообщение B@R5uk »

Понятно, спасибо.
Ответить

Вернуться в «AVR»