|
Работа с опреативной памятью в AVR ASM |
|
|
|
Jan 18 2011, 09:56
|

Участник

Группа: Участник
Сообщений: 17
Регистрация: 27-09-10
Из: Харьков
Пользователь №: 59 762

|
Здравствуйте, так получилось, что на C/С++ для АВРов начал писать раньше, чем на АСМе. Теперь не совсем понятно как корректно работать с переменными в SRAM. Если на С задачу копирования адреса я решал так: Код unsigned char *ptr1, *ptr2;
ptr2 = ptr1; и копирование значения (как вариант): Код unsigned char *ptr1, *ptr2;
*ptr2 = *ptr1; то как такие задачи решаются на АСМе? если написан следующий код: Код Tmp1: .byte 1 Tmp2: .byte 1
.....
lds r16,SPDR ;для примера взят регистр SPI st Z+,r16
lds Tmp1,ZH lds Tmp2,ZL то что значат последние две строки кода: что я копирую значения старшего и младшего байтов регистра Z или что я копирую новый адрес ячейки памяти, на которую указывает Z после постинкремента? Вобщем хотелось бы знать как в АСМе скопировать адрес и как скопировать значение. Надеюсь корректно описал вопрос.
|
|
|
|
|
 |
Ответов
|
Jan 26 2011, 00:54
|
Местный
  
Группа: Участник
Сообщений: 235
Регистрация: 20-11-10
Пользователь №: 61 032

|
Не считая полезным занятием переписывание собственными словами документа "AVR Instruction Set", обратил бы внимание на: Код ldi XH, high(addr) ldi XL, low(addr) cli ; !!! ld R16, X+ ld R17, X sei ; !!! В том смысле, что если после ld R16, X+ произойдёт прерывание - после возврата из него XH и (или?) XL испортятся. Даже если попытано их сохранять/восстановлять в процедуре обработки прерывания. Где-то умнее излагается о, но ссылку либо название затрудняюсь.
|
|
|
|
|
Jan 26 2011, 05:04
|
Участник

Группа: Участник
Сообщений: 46
Регистрация: 19-11-08
Пользователь №: 41 782

|
Цитата(нечитатель @ Jan 26 2011, 03:54)  В том смысле, что если после ld R16, X+ произойдёт прерывание - после возврата из него XH и (или?) XL испортятся. Даже если попытано их сохранять/восстановлять в процедуре обработки прерывания.
Где-то умнее излагается о, но ссылку либо название затрудняюсь.  ну во-первых , после ld R16, X+ прерывание не может произойти , а во-вторых-что за диверсант будет портить регистр X ? upd.Аааааа - V_G понял откуда ноги растут...  Цитата... Доступ к 16-разрядным регистрам Регистры TCNTn, OCRnA/B/C и ICRn являются 16-разрядными, поэтому, доступ к ним через 8-разр. шину данных AVR ЦПУ может быть осуществлен с помощью двух инструкций чтения или записи. У каждого 16-разр. таймера имеется свой 8-разр. регистр для временного хранения старшего байта данных. Поэтому, во время доступа к 16-разр. регистрам одного таймера используется один и тот же временный регистр... ...Не все 16-разрядные регистры используют временный регистр для копирования старшего байта. Чтение 16-разр. регистров OCRnA/B/C не связано с использованием временного регистра... ...При этом следует обратить внимание на проблему, которая связана с необходимостью выполнения двух инструкций для получения доступа к 16-разр. регистру. Если после выполнения первой инструкции доступа 16-разр. регистра происходит прерывание и в процедуре обработки прерывания также происходит обновление этого же или другого регистра, но относящегося к тому же таймеру, то по завершении обработки прерывания изменяется содержимое временного регистра и выполнение второй инструкции приведет к некорректному результату. Таким образом, когда и в основной программе и в прерываниях происходит обновление временного регистра, то в основной программе перед инициацией доступа к 16-разр. регистру необходимо запретить прерывания... Конец Цитаты.
Сообщение отредактировал OlegNZH - Jan 26 2011, 05:44
|
|
|
|
Сообщений в этой теме
HoboTech Работа с опреативной памятью в AVR ASM Jan 18 2011, 09:56 ILYAUL Кодlds Tmp1,ZH
lds Tmp2,ZL
Вы считывете в Tmp1- зн... Jan 18 2011, 10:38 HoboTech Цитата(ILYAUL @ Jan 18 2011, 12:38) Вы сч... Jan 18 2011, 11:52 ILYAUL Что бы понять до конца задачу - прерывания идут ... Jan 18 2011, 13:17 HoboTech Цитата(ILYAUL @ Jan 18 2011, 15:17) Что б... Jan 18 2011, 13:51 ILYAUL Код.def R16,temp
.def R17,count
.def R4,SaveSREG
.... Jan 18 2011, 15:02 HoboTech Я так понял Ваш код будет работать только в случае... Jan 18 2011, 15:39  Дмитрий Ветра Цитата(HoboTech @ Jan 18 2011, 17:39) Я т... Jan 18 2011, 16:31   HoboTech Цитата(Дмитрий Ветра @ Jan 18 2011, 18:31... Jan 18 2011, 17:04  ILYAUL Цитата(HoboTech @ Jan 18 2011, 18:39) Я т... Jan 18 2011, 17:26 HoboTech И все таки туго что-то до меня доходит работа с ад... Jan 21 2011, 11:19 _Bill Цитата(HoboTech @ Jan 21 2011, 15:19) И в... Jan 22 2011, 06:06  HoboTech Про lds и ldi я понял, спасибо. Не понял что именн... Jan 24 2011, 08:42   _Pasha Цитата(HoboTech @ Jan 24 2011, 12:42) P.S... Jan 24 2011, 09:20   demiurg_spb Цитата(HoboTech @ Jan 24 2011, 11:42) Не ... Jan 24 2011, 09:57   _Bill Цитата(HoboTech @ Jan 24 2011, 12:42) Про... Jan 24 2011, 12:35  ILYAUL Цитата(_Bill @ Jan 22 2011, 09:06) В реги... Jan 24 2011, 11:08 V_G Это вы байт загружаете.
Адрес - другой командой (д... Jan 21 2011, 12:22 ILYAUL Цитата(V_G @ Jan 21 2011, 15:22) Это вы б... Jan 21 2011, 13:26 V_G Как это в SRAM?
LDS - загрузка ИЗ SRAM в регистр (... Jan 21 2011, 13:50 ILYAUL Цитата(V_G @ Jan 21 2011, 16:50) Как это ... Jan 21 2011, 14:28 ILYAUL Можно , так же открыть Ефремова . Почитать главу ... Jan 24 2011, 13:42 HoboTech Спасибо за ответы. Еще почитаю, наверняка возникну... Jan 24 2011, 14:06 _Bill Цитата(нечитатель @ Jan 26 2011, 04:54) Н... Jan 26 2011, 04:02 V_G Цитата(нечитатель @ Jan 26 2011, 10:54) е... Jan 26 2011, 05:01  _Bill Цитата(OlegNZH @ Jan 26 2011, 09:04) ну ... Jan 26 2011, 05:46   OlegNZH Цитата(_Bill @ Jan 26 2011, 08:46) Ну, во... Jan 26 2011, 06:02    _Bill Цитата(OlegNZH @ Jan 26 2011, 10:02) Вооб... Jan 26 2011, 06:12    ILYAUL Цитата(OlegNZH @ Jan 26 2011, 09:02) Вооб... Jan 26 2011, 06:15 _Pasha Цитата(нечитатель @ Jan 26 2011, 03:54) п... Jan 26 2011, 06:53  _Bill Цитата(_Pasha @ Jan 26 2011, 10:53) Это б... Jan 26 2011, 06:57  нечитатель Цитата(_Pasha @ Jan 26 2011, 09:53) Это б... Jan 26 2011, 19:52   _Pasha Цитата(нечитатель @ Jan 26 2011, 23:52) С... Jan 27 2011, 04:32    OlegNZH Цитата(_Pasha @ Jan 27 2011, 07:32) Первы... Jan 27 2011, 09:19 OlegNZH Bill Да причём тут целостность инструкции! Уж... Jan 26 2011, 07:13  _Bill Цитата(OlegNZH @ Jan 26 2011, 11:13) Bill... Jan 26 2011, 07:15   OlegNZH Цитата(_Bill @ Jan 26 2011, 10:15) Что зн... Jan 26 2011, 07:44  ILYAUL Цитата(OlegNZH @ Jan 26 2011, 10:13) Bill... Jan 26 2011, 07:49 OlegNZH О,господи..... Вы мой пост #27 прочитайте. (и #26 ... Jan 26 2011, 08:31 _Bill Цитата(OlegNZH @ Jan 26 2011, 12:31) О,го... Jan 26 2011, 09:51 ILYAUL Цитата(OlegNZH @ Jan 26 2011, 11:31) О,го... Jan 26 2011, 13:01
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|