roboforum.ru

Технический форум по робототехнике.

Написать программу мигания светодиода. Помогите чайнику

Написать программу мигания светодиода. Помогите чайнику

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'а.


Re: Написать программу мигания светодиода. Помогите чайнику

HarryStar » 27 окт 2011, 19:00

А вы извращенец :)
Зачем усложнять программу?
Код: Выделить всёРазвернуть
#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;
}

Re: Написать программу мигания светодиода. Помогите чайнику

Daniil94 » 28 окт 2011, 10:07

пока ждал ответа сам уже додумался.Но проблема осталась. К portd.7 у меня подключен out tsopa, а к B.0 лампочка. В итоге когда после прошивки, лампочка постоянно горит а когда пульт направляю на tsop то едва заметно начинает "дребезжать" мигать очень часто.
!
1) чем отличаются функции PORT и PIN
2)Как сделать что бы лампочка горела только при нажатии кнопки на пульте.
3) Пример функции на СИ Которая просто распознавала кнопку с пульта. (Без всяких записей в uart usart)
Спасибо.
P.S. Вообще я хочу роботом управлять с пульта.

Re: Написать программу мигания светодиода. Помогите чайнику

HarryStar » 28 окт 2011, 10:21

Пока ждали ответа? :) 15 минут нынче много? :)

1) PORT - это выход порта, PIN это вход
2) Сделать можно программно. Ловить с д.7 импульсы и зажигать лампочку если они есть и тушить, если их нет.
3) Ну подумайте немного сами-то. Задача несложная.

Re: Написать программу мигания светодиода. Помогите чайнику

SkyStorm » 28 окт 2011, 10:39

У TSOP инверсный выход. Когда на входе пусто то лог еденица, когда сигнал то ноль.
Второе в марке последние 2 цыфры это частота, для твоего это 36 кГц.
Третье пульты бывают разных систем например RC5, так вот в RC5 передача нажатия кнопки идет последовательностью 12 бит.

Рекомендую - узнать какой у тебя пульт и найти библиотеку декодирования.

Re: Написать программу мигания светодиода. Помогите чайнику

Myp » 28 окт 2011, 13:23

Daniil94 писал(а):лампочка постоянно горит а когда пульт направляю на tsop то едва заметно начинает "дребезжать" мигать очень часто.

поздравляю, программа работает правильно :)

Re: Написать программу мигания светодиода. Помогите чайнику

Daniil94 » 28 окт 2011, 15:08

SkyStorm - спасибо, теперь я понял. У TSOP инверсный выход. (fuse тоже инверсный...скоро все будут инверсными)
HarryStar - ну за 15 мин я сам додумался. Задача конечно несложная, а вот посложнее пример подпрограммы которая распознала бы что нажата кнопка 2, если её "код" известен.
Код: Выделить всёРазвернуть
PORTB.0=~PIND.7;
- :Yahoo!:

Re: Написать программу мигания светодиода. Помогите чайнику

Dmitry__ » 28 окт 2011, 15:31

HarryStar
вот так программы и воруют, а потом выдают за свои :D

Re: Написать программу мигания светодиода. Помогите чайнику

Daniil94 » 28 окт 2011, 15:56

подскажите как каждые 1,778 мс проверять состояние PIND.7
и если 1,778X2 мс PIND.7=1 то записать в errom оставшиеся изменения за 1,778Х12

Re: Написать программу мигания светодиода. Помогите чайнику

Dmitry__ » 28 окт 2011, 16:24

Значит смотри :)
На форуме 6314 пользователей
1 вопрос: минус 1 пользователь, HarryStar отстрелялся.
Осталось 6313 пользователей ответов, минус ты сам, т.е. 6312 ответов
Правда не все тут программисты :shock:

Re: Написать программу мигания светодиода. Помогите чайнику

SkyStorm » 28 окт 2011, 16:37

Daniil94 писал(а):подскажите как каждые 1,778 мс проверять состояние PIND.7
и если 1,778X2 мс PIND.7=1 то записать в errom оставшиеся изменения за 1,778Х12

А зачем такое извращение? повесь прерывание и обработай приход данных в нем.

Re: Написать программу мигания светодиода. Помогите чайнику

Daniil94 » 28 окт 2011, 17:39

SkyStorm писал(а):
Daniil94 писал(а):подскажите как каждые 1,778 мс проверять состояние PIND.7
и если 1,778X2 мс PIND.7=1 то записать в errom оставшиеся изменения за 1,778Х12

А зачем такое извращение? повесь прерывание и обработай приход данных в нем.

Можешь привести пример декодирования rc5 на си. Искал в интернете, но не чего не понятно и не на cvavr.
Просто хочется роботом с пульта от телика упралять

Re: Написать программу мигания светодиода. Помогите чайнику

dccharacter » 28 окт 2011, 17:43

let me google that for you: cvavr rc5 infrared
http://www.avrfreaks.net/index.php?name ... 09&start=0

Добавлено спустя 1 минуту 44 секунды:
О, классный комент на АВРФрикс:
I guess I shouldn't be, but I'm LOL

Re: Написать программу мигания светодиода. Помогите чайнику

Daniil94 » 28 окт 2011, 18:17

я не чего не понял.

Re: Написать программу мигания светодиода. Помогите чайнику

dccharacter » 28 окт 2011, 18:34

Мож вот так понятнее:
Вложения
stabilizator_na_mototsikl.gif
stabilizator_na_mototsikl.gif (6.56 КиБ) Просмотров: 6008


cron
Rambler\'s Top100 Mail.ru counter