Научите писать под AVR

Обсуждаем контроллеры компании Atmel.
Ответить
Друг Кота
Аватара пользователя
Сообщения: 15752
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

Может лучше в качестве дистанционки в проект интегрировать комплект из ATS305T/ATS305R?
8)
Правда в ИК применении меня до сих пор мурыжит вопрос - каков там номинал частотнозадающего резистора ( в отличии от указанного в даташите для работы с радиоканалом)... Скоро пытать их на макетке буду.
:roll:
Реклама
akl
Друг Кота
Сообщения: 4468
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Сообщение akl »

СКАЗОЧНИК писал(а):
INT0add:
PUSH FLAG
;*******
;*******
;*******
;*******
;*******
;*******
inc FLAG ; Прибавляем единицу, флаг стал равен 1 (следующий этап определится уже, как "второй раз в прерывании"
POP FLAG
reti ; Выходим из прерывания
Если регистр флагов при входе в первое прерывание будет равен 0, то из этого цикла нет выхода.
Реклама
Идёт направо - песнь заводит, Налево - сказку говорит.
Аватара пользователя
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

Сообщение СКАЗОЧНИК »

Так там же нету этого... :shock:
akl писал(а):PUSH FLAG
Там вроде все нормально, да и выходит, т.к. срабатывает без тех команд на первое нажатие...

Код: Выделить всё

	INT0add:

			PUSHF
				
				cpi FLAG, 0			; Проверяем флаг равен нулю или нет? Были мы раньше в прерывании или нет еще?
				brbc SREG_Z, S1		; Если не равен, то переходим по метке. По сути проверяем флаг Z, который установится, если вычитание было ровным

				clr temp
				out TCNT0, temp							; Первоначально очищаем счетный регистр раймера
				ldi temp, (1<<CS02)|(0<<CS01)|(1<<CS00)	; Тактовый сигнал = CK/1024 (ЗАПУСКАЕМ ТАЙМЕР)
        		out TCCR0B, temp

				inc FLAG			; Прибавляем единицу, флаг стал равен 1
				POPF
				reti				; Выходим из прерывания
А PUSHF, это сохранение в стеке регистра флагов...

Код: Выделить всё

	.MACRO PUSHF	; Положить СРЕГ в стек
		push r16
		in r16, SREG
		push r16
	.ENDM

	.MACRO POPF		; Достать СРЕГ из стека
		pop r16
		out SREG, r16
		pop r16
	.ENDM
Прошу прощения, если получилось ввести в заблуждение... Я не хотел... :dont_know:

А это не сильно знаю, что такое...
BOB51 писал(а):]интегрировать комплект из ATS305T/ATS305R?
Да и у меня есть АТтини 13... Думал самый раз для этого пойдет.. Маленький, восьмилапый. ))))
Станислав
Друг Кота
Аватара пользователя
Сообщения: 15752
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

Регистровый файл не ограничивается только r16, да и варварство использовать "верхнюю" группу для простых пересылок регистр-память... Ибо не все регистры для команд равноценны (нормальных-то всего 16, а 6 из них - ещё и указатели адресных массивов)!
Вот, к примеру, файл для тиньки 2313 (в соответствии с моей ранее выложенной шпорой по подцвечиванию):
пустографка_1.gif
(28.34 КБ) 180 скачиваний
А чего касательно тех микрух - весьма дешовый комплект специализированный для дистанционного управления :
tx5 ats305t_rx5 ats305r_v1_00_proto.pdf
(221.13 КБ) 199 скачиваний
8)
Реклама
Эиком - электронные компоненты и радиодетали
Идёт направо - песнь заводит, Налево - сказку говорит.
Аватара пользователя
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

Сообщение СКАЗОЧНИК »

BOB51 писал(а):чего касательно тех микрух
У меня другая задача. У меня есть проектор, который висит на потолке в комнате, и есть экран, который тоже висит на потолке, он (экран) был без электропривода. Купил я ему электроотвертку ЗУБР, разобрал, и на холодную варку приделал к экрану. Получилось даже очень аккуратно и надежно. Но мне надоело в ручную включать и выключать мотор отвертки, чтобы опустить или поднять экран. Поэтому решено было использовать пульт от самого проектора, когда нажимаешь на "включить" - опускается экран, а когда нажимаешь на "выключить" два раза - поднимается экран. Два раза потому, что проектор предварительно выдает вопрос "ты действительно хочешь выключить?"...

Вот, добился я от него, чтобы на пульт реагировала моя платка на АТТини13 и Н-мост на МОСФЕТах, но реагирует именно на команду включить, как мне и надо, все другие игнорит, однако только один раз. Потом на пульт хоть занажимайся, все пофигу. Я понял, что надо дописать программу, чтобы она умела определять начало посылки, а потом уже их подсчитывать. (до этого подсчитывала все подряд, потому и ловила хорошо первую, а дальше нет). Дописал несколько строчек (см. выше) и она перестала вообще реагировать на что либо.. Не могу понять, почему...

З.Ы. одну ошибку нашел... Надо было очищать переменую CNT перед выходом из прерывания, т.к. он используется дальше... Очистил, все равно глючит... Раз - через раз реагирует на пульт... ((((( на кнопку включения если нажимать постоянно, то один раз из пяти поймает его... И то, иногда сразу ловит, а иногда только на пятое нажатие.. :kill:
Хотя, иной раз понятно, мне же надо чтобы он в обратную сторону крутился только после двух нажатий на кнопку включить/выключить. СТОП! я еще этой функции не реализовывал... :shock: Так и делает. Буду искать дальше, где косяк...
Станислав
Реклама
Идёт направо - песнь заводит, Налево - сказку говорит.
Аватара пользователя
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

Сообщение СКАЗОЧНИК »

Елки.... Переписал вообще все... И конечно, все перестало работать... . Старое не сохранял, ибо не понравилось мне...
Может кто делал уже приемник ИК для протокола НЕК? Подскажите, как добились чтобы работало?

Я делаю по такой логике.
1. Прерывание от ТСОПа запускает первое измерение таймера
2. В подпрограмме это первое измерение сравниваю с допустимыми значениями стартового импульса 13500 мкс.
3. Если равно, то дальше измеряет тем же прерываниями длительности посылок.
4. Опять проверяем длину в допустимых значениях, если маленькое, то запихиваем НОЛЬ в переменную, если большое, то запихиваем ЕДИНИЦУ, все переменные логически с переносом сдвигаем. Все это 32 раза.
5. Проверяем то, что насчитали, если получилась необходимая команда и адрес, то выполняем ЗАДАЧУ, если нет, то выходим, все сбрасываем и снова ждем посылки.

З.Ы. Соответственно, если произошли ошибки в замерах посередине программы, то тоже выходим и все сбрасываем, ждем снова посылку.
Станислав
Реклама
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18786
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

На моём сайте есть большая статья о том, как сделать простой и пригодный для любых пультов код. Все проверено и работает.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Идёт направо - песнь заводит, Налево - сказку говорит.
Аватара пользователя
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

Сообщение СКАЗОЧНИК »

Извините, что не по теме... А чего, собственно, я не могу карму поменять??? Просто крутится и все..
Станислав
Друг Кота
Аватара пользователя
Сообщения: 20104
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Сообщение Gudd-Head »

Вроде нужен вес голоса = 2... Не помню, почитайте: http://radiokot.ru/forum/viewtopic.php?f=19&t=75128
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Ответить

Вернуться в «AVR»