Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
15.12.2008, 01:47
|
#11
|
Супер-модератор
Регистрация: 13.03.2004
Адрес: Minsk
Сообщений: 2,378
Сказал спасибо: 1,955
Сказали Спасибо 1,327 раз(а) в 578 сообщении(ях)
|
Сообщение от myxan
|
не ко всем регистра специального назначения есть прямой доступ, если я использую ваш код получу ощибку "C:AVRNev1313.asm(8 : error: Invalid register" В строке 88!
Вот и преходится использовать косвенную адресацию!
|
Все верно, в меге169 порты ввода-вывода "вылезли" за тот предел, до которого к ним можно обращаться по in/out. Но косвенную делать необязательно - есть команда STS. Если "разовое" обращение - то через STS экономнее, да и читабельнее.
Кроме того, обязательно сохраняйте в стеке все, что изменяете в прерывании. Учтите - прерывание возникает когда угодно. Вы в нем изменяете tmp,Z и слово состояния. Как поведет себя основная программа при этом? Правильно - абы как.
Потому не поленитесь сделать так:
Код:
|
OC2:
push TMP
in TMP,SREG
push TMP
;-----
ser tmp
out PORTA, tmp
clr TMP
sts TCCR2A, TMP
;-----
pop TMP
out SREG,TMP
pop TMP
reti |
Возможно, что глюки-то и пропадут...
Кстати, если SER и CLR заменить на засылку констант - что по тактам то же самое - то SREG можно и не сохранять. Но это уже тонкости. Лучше - SREG сохранять всегда.
|
|
|
|
15.12.2008, 10:36
|
#12
|
Прописка
Регистрация: 24.09.2008
Сообщений: 116
Сказал спасибо: 0
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
|
Мой "косят" - не обратил внимание на "ATmega169"
nml как всегда прав на 100%
Цитата:
|
Походу AVR Studio 4 соверщенно глюкнутая программа.
|
Ну это не так! AVR Studio нормально работает за исключением не больших глюков в отладке
Цитата:
|
Написал ту же програмку на СИ с помощью CodeVisionAVR, зашил. Все работает, как надо
|
![Улыбка](images/smilies/icon_smile.gif) А теперь сравни .hex после компиляции на С и asm.
P.S. "Возвращаю Ваш портрет", ну с "небольшой" корректировкой...
Прикрепленный файл: 9196288.rar
__________________
Если мы вам не подходим, вы нам вовсе не нужны! ![Сомнение](images/smilies/icon_neutral.gif)
Услышал и забыл, увидел и запомнил, сделал и понял! ![Горд собой](images/smilies/icon_dovl.gif)
Нейрон - штука тонкая! ![Одобряю](images/smilies/icon_true.gif)
Чудес на свете не бывает!
|
|
|
|
15.12.2008, 10:44
|
#13
|
Прописка
Регистрация: 24.09.2008
Сообщений: 116
Сказал спасибо: 0
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
|
Цитата:
|
Я самоучка! Извени...
|
Я не думаю что здесь есть люди которые изучали(ют) курс програмирования AVR в учебных заведениях. "Мы все учились по не много...". Читай "матчасть", изучай "чужие" исходники, разбирайся - если это действительно нужно...
P.S. Зарание извеняюсь за флуд...
__________________
Если мы вам не подходим, вы нам вовсе не нужны! ![Сомнение](images/smilies/icon_neutral.gif)
Услышал и забыл, увидел и запомнил, сделал и понял! ![Горд собой](images/smilies/icon_dovl.gif)
Нейрон - штука тонкая! ![Одобряю](images/smilies/icon_true.gif)
Чудес на свете не бывает!
|
|
|
|
17.12.2008, 01:08
|
#14
|
Частый гость
Регистрация: 24.03.2008
Сообщений: 18
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Спасибо ra9mig за наглядный пример правильного программирования, но к сожалению это не помогло. После заливки программы в mega 169 на порту С светодиод светится в полную силу, а в порту А тускло (мерцает). Чем больше задержка до прерывания тем слабее светит.
Заливал вот это
Код:
|
;---------------------------------------
.include "m169def.inc"
;---------------------------------------
.def Zero = r2
.def tmp = r16
;---------------------------------------
.cseg
.org 0
jmp RESET
;-----------------------
.org OVF0addr
jmp OVF0
;---------------------------------------
.org INT_VECTORS_SIZE
RESET:
ldi tmp, High(RAMEND)
out SPL, tmp
ldi tmp, Low(RAMEND)
out SPL, tmp
clr Zero
;-----------------------
out PORTA, Zero
out PORTC, Zero
ser tmp
out DDRA, tmp
out DDRC, tmp
;-----------------------
ldi tmp, (1‹‹TOIE0)
sts TIMSK0, tmp
ldi tmp, (1‹‹CS02)|(0‹‹CS00)|(0‹‹CS01)
out TCCR0A, tmp
;-----------------------
sei
;---------------------------------------
MainLoop:
ser tmp
out PORTC, tmp
rjmp MainLoop
;---------------------------------------
OVF0:
push tmp
in TMP,SREG
push TMP
ser tmp
out PORTA, tmp
out TCCR0A, Zero
pop tmp
out SREG,TMP
pop TMP
reti
;--------------------------------------- |
В архиве проэкт AVR Studio 4.
Помогите пожалуйста, непонимаю что происходит.
|
|
|
|
17.12.2008, 01:45
|
#15
|
Частый гость
Регистрация: 24.03.2008
Сообщений: 18
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Забыл присоеденить
Прикрепленный файл: 3607019.rar
|
|
|
|
17.12.2008, 12:21
|
#16
|
Прописка
Регистрация: 24.09.2008
Сообщений: 116
Сказал спасибо: 0
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
|
myxan
Вопрос был про регистры и т.п. Про алгоритм разговора не было. Но можно и поговорить:
- А как должно быть ...?
__________________
Если мы вам не подходим, вы нам вовсе не нужны! ![Сомнение](images/smilies/icon_neutral.gif)
Услышал и забыл, увидел и запомнил, сделал и понял! ![Горд собой](images/smilies/icon_dovl.gif)
Нейрон - штука тонкая! ![Одобряю](images/smilies/icon_true.gif)
Чудес на свете не бывает!
|
|
|
|
17.12.2008, 12:56
|
#17
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Проверьте установку указателя стека. А то запись два раза в SPL выглядит странно.
|
|
|
|
17.12.2008, 13:30
|
#18
|
Прописка
Регистрация: 24.09.2008
Сообщений: 116
Сказал спасибо: 0
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
|
Да, это косяк (очипятка)
P.S. myxan Вот вам лампочками помигать - красота...
Прикрепленный файл: 3246049.rar
__________________
Если мы вам не подходим, вы нам вовсе не нужны! ![Сомнение](images/smilies/icon_neutral.gif)
Услышал и забыл, увидел и запомнил, сделал и понял! ![Горд собой](images/smilies/icon_dovl.gif)
Нейрон - штука тонкая! ![Одобряю](images/smilies/icon_true.gif)
Чудес на свете не бывает!
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 16:28.
|
|