Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
11.12.2008, 22:59
|
#1
|
Частый гость
Регистрация: 24.03.2008
Сообщений: 18
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Регистры r0-r15 у mega169
Подскажите пожалуйста как работать с r0 - r15, почему при обращении к ним возникает ошибка?
|
|
|
|
12.12.2008, 09:22
|
#2
|
Почётный гражданин KAZUS.RU
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
|
Возможно это глюк среды программирования (какая?). R0...R15 - такие же регистры как 16...31, только не умеют работать с константами.
|
|
|
|
14.12.2008, 18:08
|
#3
|
Частый гость
Регистрация: 24.03.2008
Сообщений: 18
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Работаю в AVR Studio 4. Делаю так .def countK = r2, компилирую получаю "C:AVRNev1313.asm(116): error: Invalid register". Если так .def countK = r20 все хорошо.
И еще не могу понять одно по таймеру делаю прерывание по совпадению в обработке этого прерывания в PORTA записываю $FF или другое значение любое, т.е. зажигаю светодиоды потом здесь же таймер отключаю
OC2:
ser tmp
out PORTA, tmp
LDI TMP,0
CLR r31
ldi r30,TCCR2A
ST Z,TMP
reti
При симуляции все хорошо в порт записывается значение и не изчезает. Заливаю в ATmega 169 светодиоды горят очень тускло и чем больше время до прерывания тем тусклее. Если в сновной программе записываю то же самое горят ярко как должны. Почему?
|
|
|
|
14.12.2008, 18:35
|
#4
|
Прописка
Регистрация: 24.09.2008
Сообщений: 116
Сказал спасибо: 0
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
|
Сообщение от myxan
|
Работаю в AVR Studio 4. Делаю так .def countK = r2, компилирую получаю "C:AVRNev1313.asm(116): error: Invalid register". Если так .def countK = r20 все хорошо.
|
А что у Вас делается в строчке 116? Русским же языком написано: "R0...R15 - такие же регистры как 16...31, только не умеют работать с константами"!
Цитата:
|
OC2:
ser tmp
out PORTA, tmp
LDI TMP,0
CLR r31
ldi r30,TCCR2A
ST Z,TMP
reti
|
Вас кто так учил "кодить"?
Хотя бы так:
Код:
|
OC2:
ser tmp
out PORTA, tmp
clr TMP
out TCCR2A, TMP
reti |
Цитата:
|
При симуляции все хорошо в порт записывается значение и не изчезает. Заливаю в ATmega 169 светодиоды горят очень тускло и чем больше время до прерывания тем тусклее. Если в сновной программе записываю то же самое горят ярко как должны. Почему?
|
Как тут часто говорится: "Всевидящих здесь нету, коды в студию"!
__________________
Если мы вам не подходим, вы нам вовсе не нужны! ![Сомнение](images/smilies/icon_neutral.gif)
Услышал и забыл, увидел и запомнил, сделал и понял! ![Горд собой](images/smilies/icon_dovl.gif)
Нейрон - штука тонкая! ![Одобряю](images/smilies/icon_true.gif)
Чудес на свете не бывает!
|
|
|
|
14.12.2008, 22:26
|
#5
|
Частый гость
Регистрация: 24.03.2008
Сообщений: 18
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
В строке 116 следующее ser k.
Код в архиве. Это просто пример если его залить в МК то получаю что сведиоды на порте А светят тускло (если перемещать плату со светодиодами видно что они мерцают) а на порте С светит постоянно и не мерцает.
Прикрепленный файл: 3945283.RAR
|
|
|
|
14.12.2008, 22:37
|
#6
|
Частый гость
Регистрация: 24.03.2008
Сообщений: 18
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Цитата:
|
Вас кто так учил "кодить"?
Хотя бы так:
Код:
|
OC2:
ser tmp
out PORTA, tmp
clr TMP
out TCCR2A, TMP
reti |
|
Я самоучка! Извени но не ко всем регистра специального назначения есть прямой доступ, если я использую ваш код получу ощибку "C:AVRNev1313.asm(8 ![Горд собой](images/smilies/icon_dovl.gif) : error: Invalid register" В строке 88!
Вот и преходится использовать косвенную адресацию!
|
|
|
|
14.12.2008, 22:49
|
#7
|
Почётный гражданин KAZUS.RU
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
|
Вообще то кодить на асме лучше в Algorithm Builder - он сам исправляет подобные ошибки, да и просто удобней и наглядней. Есть на этом сайте версия 5.17
|
|
|
|
14.12.2008, 22:55
|
#8
|
Частый гость
Регистрация: 24.03.2008
Сообщений: 18
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
У меня есть версия 5.33 но в ней ограничения по обему кода кажется 2 Кб. В версии 5.17 нет?
|
|
|
|
14.12.2008, 23:27
|
#9
|
Частый гость
Регистрация: 24.03.2008
Сообщений: 18
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Да еще в Algorithm Builder 5.33 нет симулятора ATmega 169.
|
|
|
|
15.12.2008, 00:17
|
#10
|
Частый гость
Регистрация: 24.03.2008
Сообщений: 18
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Походу AVR Studio 4 соверщенно глюкнутая программа. Написал ту же програмку на СИ с помощью CodeVisionAVR, зашил. Все работает, как надо, так что перехожу на СИ и CodeVisionAVR (он поддерживает mega 169) симулирует с помощью того же AVR Studio это собственно не важно, отлаживаю на девайсе.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 14:19.
|
|