Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.145.93.221] |
|
Страницы: (2) [1] 2 все ( Перейти к последнему сообщению ) |
Сообщ.
#1
,
|
|
|
Помогите разобраться где собака порылась ?!
Записаны данные в програмный сегмент . НО при чтении команда LPM - регулярно врёт при ємуляции в AVR Studio .. Прикложу скрин с обманом . Может кто объяснит , от чего так получается ??? в описаловках НЕ НАШЁЛ ответа на проблемму .... Вот отрезок проги : LDI R30 , low (DATA*2) LDI R31 , high(DATA*2) LPM R0 , Z+ LPM R1 , Z+ LPM R2 , Z+ LPM R3 , Z+ LPM R4 , Z+ LPM R5 , Z+ LPM R6 , Z+ LPM R7 , Z+ LPM R8 , Z+ LPM R9 , Z+ LPM R10 , Z+ LPM R11 , Z+ LPM R12 , Z+ LPM R13 , Z+ LPM R14 , Z+ LPM R15 , Z+ LPM R16 , Z+ LPM R17 , Z+ LPM R18 , Z+ LPM R19 , Z+ LPM R20 , Z+ LPM R21 , Z+ LPM R22 , Z+ LPM R23 , Z+ LPM R24 , Z+ LPM R26 , Z+ LPM R27 , Z+ LPM R28 , Z+ LPM R29 , Z NOP NOP .CSEG ; .ORG 0X300 ; DATA: .DB 0X01 , 0X02 , 0X03 , 0X04 , 0X05 , 0X06 , 0X07 ; ; .DB 0X08 , 0X09 , 0X10 , 0X11 , 0X12 , 0X13 , 0X14 ; .DB 0X15 , 0X16, 0X17 , 0X18 , 0X19 , 0X20 , 0X21 ; .DB 0X22 , 0X23 , 0X24 , 0X25 , 0X26 , 0X27 , 0X28 ; .DB 0X29 , 0X30 , 0X31 , 0X32 , 0X33 , 0X34 , 0X35 ; |
Сообщ.
#2
,
|
|
|
M mike-brandy, на будущее: код заключается в теги [code][/code] |
Сообщ.
#3
,
|
|
|
Убедитесь в том, что по смещению 300 лежат нужные данные. При прошивке они во флешь запишутся, а при эмуляции не факт.
|
Сообщ.
#4
,
|
|
|
Цитата Prince @ Убедитесь в том, что по смещению 300 лежат нужные данные. При прошивке они во флешь запишутся, а при эмуляции не факт. Данные лежат там где надо ...... Добавлено Если директива DB задана в сегменте кода, а список выражений содержит более одного выражения, выражения упаковываются так, что в каждое слово памяти программы помещается два байта. Если список выражений содержит нечетное количество выражений, последнее выражение будет помещено в собственное слово памяти программы, даже если следующая строка в коде сборки содержит директиву DB. Неиспользованная половина слова программы установлена на ноль. Выдается предупреждение, чтобы уведомить пользователя о том, что в инструкцию .DB добавлен дополнительный нулевой байт. Прикреплённый файлff.PNG (69,94 Кбайт, скачиваний: 315) |
Сообщ.
#5
,
|
|
|
А это точно правильно ?
LDI R30 , low (DATA*2) LDI R31 , high(DATA*2) может попробовать: LDI R30 , low (DATA) LDI R31 , high(DATA) |
Сообщ.
#6
,
|
|
|
Так всё правильно читает lpm.
Пропущена команда lpm R25,Z+. В остальном все правильно. В чем проблема? |
Сообщ.
#7
,
|
|
|
Цитата ЫукпШ @ Это точно правильно ! Вами предложенное можете и не пробовать !!! Добавлено Цитата Prince @ Так всё правильно читает lpm. Пропущена команда lpm R25,Z+. В остальном все правильно. В чем проблема? посмотрите где-же правильно ?! |
Сообщ.
#9
,
|
|
|
Ткните пальцем, что не так. Угадайка не работает.
Если речь о нулях при чтении, то всё правильно. Если что-то другое, ткните пальцем. Добавлено Сделайте скрин не содержимого регистров, а содержимого флешь по смещению 300. |
Сообщ.
#10
,
|
|
|
Цитата Prince @ Ткните пальцем, что не так. Угадайка не работает. Если речь о нулях при чтении, то всё правильно. Если что-то другое, ткните пальцем. Добавлено Сделайте скрин не содержимого регистров, а содержимого флешь по смещению 300. если таблица скопировалась в регисты , значит данные во флеш есть ! А разговор был о нулях в регистрах , которых нет в таблице . Вопрос уже снят однако !!!! Прочитайте мои сообщения выше . Сделал перевод из дока . Добавлено Цитата mike-brandy @ Цитата Prince @ Ткните пальцем, что не так. Угадайка не работает. Если речь о нулях при чтении, то всё правильно. Если что-то другое, ткните пальцем. Добавлено Сделайте скрин не содержимого регистров, а содержимого флешь по смещению 300. если таблица скопировалась в регисты , значит данные во флеш есть ! А разговор был о нулях в регистрах , которых нет в таблице . Вопрос уже снят однако !!!! Прочитайте мои сообщения выше . Сделал перевод из дока . здесь вопрос не про работу на СИ ..... а про ЧИСТЫЙ АСМ . А компилятор сам Вам умножает на 2 , только Вы потом не смотрели на листинг асм Или не обратили внимание какие там числа стоят ..... |
Сообщ.
#11
,
|
|
|
ТС сам разобрался и опубликовал причину в №4. Умножение на 2 требуется, как я понимаю, для перевода слов в байты.
|
Сообщ.
#12
,
|
|
|
Цитата Qraizer @ ТС сам разобрался и опубликовал причину в №4. Умножение на 2 требуется, как я понимаю, для перевода слов в байты. Прекрасная мысль ! а другие почему-то не читают НАПИСАНОГО !!!! Думаю - что из этой темы не подчерпнули для СЕБЯ ничего интересного .... Добавлено Тему можно закрыть . кто хочет докапаться до истины - тот найдёт ответ (внимательно прочитав ВСЁ !!! все посты ПОСТАВЛЕННОГО ВОПРОСА . |
Сообщ.
#13
,
|
|
|
Ну не надо так кипятиться. Я вот тоже с трудом вспомнил, что на dsPIC-ах адресация в области данных как положено байтовая, а в области кода словная. Причём слово там 24 бита, кажется, по размеру инструкции. Причём мельче просто не получится, адресов нет, как вот нет отдельных адресов у полубайтов в области данных.
|
Сообщ.
#14
,
Сообщение отклонено: Qraizer -
|
Сообщ.
#15
,
|
|
|
mike-brandy, кросава, братишка!
Держи бодрящего краба!!! Так их, ленивых неучей. |