.equ kdel = 200 ;
...
out OCR1AH, high(kdel) ; Записать ст. байт коэфф.деления
out OCR1AL, low(kdel) ; Записать мл. байт коэфф.деления
Что это???
и.... как нужно?
(я пытался даже для самого себя их просто очистить "clr" вообще в исходной проге было косвенное чтение из таблицы типа:
Table: .dw 1000, 1100, 1200; ну и так далее с вычислением адреса......
э..э в них я так понял нельзя непосредственно писать значения?
Если ещё не скачали, то обязательно скачайте себе книгу "Микроконтроллеры AVR семейства Tiny Mega фирмы Atmel" А.В.Евстифеев , там подробно описаны команды, в т.ч. ограничение их действия.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Подскажите, пожалуйста как организовать такой обмен через USART (оба MK - tiny2313V).
1. ведущее ус-во посылает байт.
2. ждет ответа от ведомого, если он не приходит, то через (ну 1-2 сек) посылает опять..
Написал проги для ведомого и ведущего, вот никак не соображу как сделать эту задержку. Про прерывания по приёму и таймеру пока только мечтаю, уж извините. Можно ли тут организовать простую задержку путем декремента регистров? и еще - в даташите даны примеры для USART - прием байта и передача, они являются жестко связанными, или в них можно что-то изменить, ту же задержку добавить?
Priem:
sbis UCSRA, RXC;
rjmp Priem;
in temp, UDR;
ret;
все по даташиту... куда можно вставит задержку?
Этот кусок кода Вам надо вставить в подпрограмму задержки. Почему. У Вас процессор выполняет одновремено две задачи. Ждёт ответ slave и считает секунды. В Вашем случае , без прерываний, нужно чтобы проверку на прием и проверку на истечение времени процессор обрабатывал вместе.
ldi теmp, 0xff ;Величина задержки для примера , сами напишите сколько Вам надо и сколько регистров потребуется для задержки 1 сек Лень - двигатель прогресса!
DELAY:
sbic UCSRA, RXC
rjmp END
subi temp,1 ;В отличие от dec команды sub и subi выставляют + ещё флаг С - привыкайте лучше к ним
brcc DELAY
out UDR,temp ;Согласно Вашему- то через (ну 1-2 сек) посылает опять..
rjmp DELAY
END:
To куда-то
Тут надо определится. Ведь подпрограмма у тебя одна, как при выходе из подпрограммы основная программа узнает что выход был по таймауту а не по считыванию данных? Надо заводить где-то признак или отводить под это целый регистр.
Ну а сама реализация... проще некуда - собственно прием данных осуществляется как? сначала проверяется приняты ли данные(один бит спецрегистра) если данные приняты - происходит считывание и выход, если нет - переход на проверку приняты ли данные. У тебя вместо этого перехода надо осуществить переход на подпрограмму формирования задержки скажем в 1мс и отсчет количества этих задержек - если этот алгоритм насчитал 2000 раз значит выставить признак таймаута и выйти с подпрограммы. Перед тем как зацикливаться конечно надо обнулить счетчик и сбросить признак таймаута.
Челюскин писал(а): Можно ли тут организовать простую задержку путем декремента регистров?
Можно, но не нужно. Тупо считать задержку вычитанием, при этом остальной процесс останавливается - это очень уж по школярски. Попробуй прерывания, это не так и сложно. Один раз сделаешь - пот`ом от них за уши не оттащишь
Сообразил тут декодер радиоканала на тиньке 13-й, в двух вариантах, на С и на асме, так вот мож кому интересно будет узнать, разница в весе кода - больше чем в 2 раза, на С - 870 байт, а на асме тоже самое - 420 байт.....
Помоему асма остается актуальной для таких мелкашек как tiny13
Я даже больше скажу -- если написать на асме программу размером байт десять, то С-шный вариант проиграет раз в пять-восемь, так как С (по крайней мере WinAVR) и всю таблицу прерываний заполняет переходом на ловушку необработанных прерываний, и прочие «общеподготовительные» вещи могут место занять. Т.е. у С-шной программы даже без желания автора обычно несколько другой функционал.
И на малых программах асм позволяет почти все переменные в регистрах разместить.
На больших программах недостаток С в виде некоторых начальных затрат и преимущество асма по размещению части переменных в оптимальных для этого регистрах пропадают и разница уже не такая большая.
Никаких противоречий со сказанным ранее про асм и С
Для tiny13, tiny26, tiny24 я и сам на асме пишу -- когда нужно вылизывать такты/потребление.
А когда не нужно — то лишь бы влезло.
Кстати, если оно на С под WinAVR или без особой привязке к компилятору, если можно — в личку оба проекта, я посмотрю, что можно сделать с С-шным вариантом.
Увидел всё по линку, гляну по свободе. На носу куча выходных
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.