Технический форум по робототехнике.
Daniil94 » 27 окт 2011, 18:45
Помогите написать программу для atmega16 которая когда на 7 ножке порта D единица, записывала бы 1 в первую ножку порта B.
Написал на CVavr
- Код: Выделить всё • Развернуть
#define F_CPU 16000000UL // 16 MHz
#include <io.h>
#include <delay.h>
int main(void)
{
DDRD = 0x00;
PORTD = 0x00;
DDRB = 0xFF;
PORTB = 0x00;
while (1) {
PORTB.0=0;
if (PIND.7==1) {PORTB.0=1;} else{PORTB.0=0;};
}
}
Но сведодиод после 1 нажатия всё время мигает.
P.S. На самом деле я хочу что бы свеодиод мигал в так out'у TSOP'а.
HarryStar » 27 окт 2011, 19:00
А вы извращенец
![Smile :)](http://roboforum.ru/images/smilies/smile.gif)
Зачем усложнять программу?
- Код: Выделить всё • Развернуть
#define F_CPU 16000000UL // 16 MHz
#include <io.h>
int main(void)
{
DDRD = 0x00; PORTD = 0x00;
DDRB = 0xFF; PORTB = 0x00;
while (1) PORTB.0=PIND.7;
}
Daniil94 » 28 окт 2011, 10:07
пока ждал ответа сам уже додумался.Но проблема осталась. К portd.7 у меня подключен out tsopa, а к B.0 лампочка. В итоге когда после прошивки, лампочка постоянно горит а когда пульт направляю на tsop то едва заметно начинает "дребезжать" мигать очень часто.
!
1) чем отличаются функции PORT и PIN
2)Как сделать что бы лампочка горела только при нажатии кнопки на пульте.
3) Пример функции на СИ Которая просто распознавала кнопку с пульта. (Без всяких записей в uart usart)
Спасибо.
P.S. Вообще я хочу роботом управлять с пульта.
HarryStar » 28 окт 2011, 10:21
Пока ждали ответа?
![Smile :)](http://roboforum.ru/images/smilies/smile.gif)
15 минут нынче много?
![Smile :)](http://roboforum.ru/images/smilies/smile.gif)
1) PORT - это выход порта, PIN это вход
2) Сделать можно программно. Ловить с д.7 импульсы и зажигать лампочку если они есть и тушить, если их нет.
3) Ну подумайте немного сами-то. Задача несложная.
SkyStorm » 28 окт 2011, 10:39
У TSOP инверсный выход. Когда на входе пусто то лог еденица, когда сигнал то ноль.
Второе в марке последние 2 цыфры это частота, для твоего это 36 кГц.
Третье пульты бывают разных систем например RC5, так вот в RC5 передача нажатия кнопки идет последовательностью 12 бит.
Рекомендую - узнать какой у тебя пульт и найти библиотеку декодирования.
Myp » 28 окт 2011, 13:23
Daniil94 писал(а):лампочка постоянно горит а когда пульт направляю на tsop то едва заметно начинает "дребезжать" мигать очень часто.
поздравляю, программа работает правильно
![Smile :)](http://roboforum.ru/images/smilies/smile.gif)
Daniil94 » 28 окт 2011, 15:08
SkyStorm - спасибо, теперь я понял. У TSOP инверсный выход. (fuse тоже инверсный...скоро все будут инверсными)
HarryStar - ну за 15 мин я сам додумался. Задача конечно несложная, а вот посложнее пример подпрограммы которая распознала бы что нажата кнопка 2, если её "код" известен.
- Код: Выделить всё • Развернуть
PORTB.0=~PIND.7;
-
![Yahoo! :Yahoo!:](http://roboforum.ru/images/smilies/yahoo.gif)
Dmitry__ » 28 окт 2011, 15:31
HarryStar
вот так программы и воруют, а потом выдают за свои
![Very Happy :D](http://roboforum.ru/images/smilies/biggrin.gif)
Daniil94 » 28 окт 2011, 15:56
подскажите как каждые 1,778 мс проверять состояние PIND.7
и если 1,778X2 мс PIND.7=1 то записать в errom оставшиеся изменения за 1,778Х12
Dmitry__ » 28 окт 2011, 16:24
Значит смотри
![Smile :)](http://roboforum.ru/images/smilies/smile.gif)
На форуме 6314 пользователей
1 вопрос: минус 1 пользователь, HarryStar отстрелялся.
Осталось 6313 пользователей ответов, минус ты сам, т.е. 6312 ответов
Правда не все тут программисты
![Shocked :shock:](http://roboforum.ru/images/smilies/shok.gif)
SkyStorm » 28 окт 2011, 16:37
Daniil94 писал(а):подскажите как каждые 1,778 мс проверять состояние PIND.7
и если 1,778X2 мс PIND.7=1 то записать в errom оставшиеся изменения за 1,778Х12
А зачем такое извращение? повесь прерывание и обработай приход данных в нем.
Daniil94 » 28 окт 2011, 17:39
SkyStorm писал(а):Daniil94 писал(а):подскажите как каждые 1,778 мс проверять состояние PIND.7
и если 1,778X2 мс PIND.7=1 то записать в errom оставшиеся изменения за 1,778Х12
А зачем такое извращение? повесь прерывание и обработай приход данных в нем.
Можешь привести пример декодирования rc5 на си. Искал в интернете, но не чего не понятно и не на cvavr.
Просто хочется роботом с пульта от телика упралять
dccharacter » 28 окт 2011, 17:43
let me google that for you: cvavr rc5 infraredhttp://www.avrfreaks.net/index.php?name ... 09&start=0Добавлено спустя 1 минуту 44 секунды:О, классный комент на АВРФрикс:
I guess I shouldn't be, but I'm LOL
Daniil94 » 28 окт 2011, 18:17
я не чего не понял.
dccharacter » 28 окт 2011, 18:34
Мож вот так понятнее:
- Вложения
-
![stabilizator_na_mototsikl.gif](./download/file.php?id=22040&style=9&sid=1eac5719cc1fd5552d0387fb14030624)
- stabilizator_na_mototsikl.gif (6.56 КиБ) Просмотров: 6008