СV AVR ликбез

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
_sanych_
Родился
Сообщения: 11
Зарегистрирован: Вт мар 13, 2012 02:57:11

СV AVR ликбез

Сообщение _sanych_ »

помогите пожалуйста. Нужно, что бы по приходу 1 на ногу МК другая выдавала сигнал, а по приходу 0 "молчала".

может быть так:

if (PORTD.0=1) {PORTB.4=PORTB.4} else {PORTB.4!=PORTB.4};

заранее спасибо
Реклама
Аватара пользователя
igor-x
Мудрый кот
Сообщения: 1817
Зарегистрирован: Пн ноя 29, 2010 15:58:43

Re: СV AVR ликбез

Сообщение igor-x »

_sanych_ писал(а):помогите пожалуйста. Нужно, что бы по приходу 1 на ногу МК другая выдавала сигнал, а по приходу 0 "молчала".

может быть так:

if (PORTD.0=1) {PORTB.4=PORTB.4} else {PORTB.4!=PORTB.4};

заранее спасибо
вообще то по CV есть отдельная тема.

а по коду возможно так ?

if (PIND.0==1)... и. т. д.

а чтобы код написать дальше надо понять что такое "приход " еденицы и нуля
.. кажется начинаю понимать что нужно.
когда на ноге PIND.0 еденица, то PORTB.4 тоже еденица
когда на ноге PIND.0 ноль, то PORTB.4 тоже ноль.

для этого и программы не надо- просто коротнуть на плате PORTB.4 и PORTD.0
Реклама
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

Re: СV AVR ликбез

Сообщение pyzhman »

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

if (PORTD.0=1)
Работать не будет. Будет так:

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

if (PIND.0)
Docendo discimus
Аватара пользователя
mr_smit
Вымогатель припоя
Сообщения: 651
Зарегистрирован: Пн мар 23, 2009 09:25:58
Откуда: Самара

Re: СV AVR ликбез

Сообщение mr_smit »

_sanych_ писал(а): может быть так:

if (PORTD.0=1) {PORTB.4=PORTB.4} else {PORTB.4!=PORTB.4};
Может быть так понятней будет:

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

if (PIND.0 == 1) {
  PORTB.4 = 1;
  } 
else {
  PORTB.4 = 0;
  };
Нельзя всё знать, достаточно понимать.
Реклама
Эиком - электронные компоненты и радиодетали
Мастер Ломастер
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город
Контактная информация:

Re: СV AVR ликбез

Сообщение Мастер Ломастер »

ну а if-то зачем? сразу и пишите PORTB.4 = PIND.0;
битва с дураками проиграна, победители торжествуют. слава победителям!
Реклама
_sanych_
Родился
Сообщения: 11
Зарегистрирован: Вт мар 13, 2012 02:57:11

Re: СV AVR ликбез

Сообщение _sanych_ »

if (PIND.0 == 1) {
PORTB.4 = 1;
}
else {
PORTB.4 = 0;
};

Дело в том, что на ноге PORTB.4 генерится ШИМ, а если писать PORTB.4 = 1, то он, наверное , будет выдавать 1. (Atmega128, ШИМ на нулевом таймере).
Реклама
_sanych_
Родился
Сообщения: 11
Зарегистрирован: Вт мар 13, 2012 02:57:11

Re: СV AVR ликбез

Сообщение _sanych_ »

тоесть мне нужно, что бы по приходу на PORTD.0 1 или 0 на PORTB.4 включался или отключался ШИМ соответсятвенно.
Аватара пользователя
igor-x
Мудрый кот
Сообщения: 1817
Зарегистрирован: Пн ноя 29, 2010 15:58:43

Re: СV AVR ликбез

Сообщение igor-x »

_sanych_ писал(а):тоесть мне нужно, что бы по приходу на PORTD.0 1 или 0 на PORTB.4 включался или отключался ШИМ соответсятвенно.
а 128 меги будет достаточно для выполнения такой задачи?
_sanych_
Родился
Сообщения: 11
Зарегистрирован: Вт мар 13, 2012 02:57:11

Re: СV AVR ликбез

Сообщение _sanych_ »

igor-x писал(а):
_sanych_ писал(а):тоесть мне нужно, что бы по приходу на PORTD.0 1 или 0 на PORTB.4 включался или отключался ШИМ соответсятвенно.
а 128 меги будет достаточно для выполнения такой задачи?
А почему нет? Может Вы не поняли вопроса?
Сигнал приходит с датчиков холла (это либо 0 либо 1, и в зависимости от этого мне нужно либо включать, либо отключать ШИМ)
Аватара пользователя
igor-x
Мудрый кот
Сообщения: 1817
Зарегистрирован: Пн ноя 29, 2010 15:58:43

Re: СV AVR ликбез

Сообщение igor-x »

_sanych_ писал(а): А почему нет? Может Вы не поняли вопроса?
Сигнал приходит с датчиков холла (это либо 0 либо 1, и в зависимости от этого мне нужно либо включать, либо отключать ШИМ)
тогда в качестве ликбеза почитать немного даташиты...
_sanych_
Родился
Сообщения: 11
Зарегистрирован: Вт мар 13, 2012 02:57:11

Re: СV AVR ликбез

Сообщение _sanych_ »

igor-x писал(а):
_sanych_ писал(а): А почему нет? Может Вы не поняли вопроса?
Сигнал приходит с датчиков холла (это либо 0 либо 1, и в зависимости от этого мне нужно либо включать, либо отключать ШИМ)
тогда в качестве ликбеза почитать немного даташиты...
тогда может быть отправите на нужную страницу... я не понимаю, почему 128 мега не сможет справиться с такой задачей.
Аватара пользователя
igor-x
Мудрый кот
Сообщения: 1817
Зарегистрирован: Пн ноя 29, 2010 15:58:43

Re: СV AVR ликбез

Сообщение igor-x »

_sanych_ писал(а): тогда может быть отправите на нужную страницу... я не понимаю, почему 128 мега не сможет справиться с такой задачей.
просто задача поставлена некоректно - началось с ликбеза из одной строчки и одного сигнала, а потом оказывается МК должен работать в некой жесткой врЕменной диаграмме.

для начала надо эту временную диаграмму представить слушателям форума:
1.на вход поступает периодический сигнал с частотой ХХ герц
2.по фронту входного импульса должно произойти ХХХ событие
3. ну и так далее со всеми временами и задержками........
_sanych_
Родился
Сообщения: 11
Зарегистрирован: Вт мар 13, 2012 02:57:11

Re: СV AVR ликбез

Сообщение _sanych_ »

А что будет если написать так?

if (PIND.0 == 0) {
TCNT0 = 0;
};
_sanych_
Родился
Сообщения: 11
Зарегистрирован: Вт мар 13, 2012 02:57:11

Re: СV AVR ликбез

Сообщение _sanych_ »

Я понимаю, что делаю некорректно и неправильно и именно поэтому прошу помощи.
a_skr
Вымогатель припоя
Сообщения: 630
Зарегистрирован: Пн июн 14, 2010 13:07:29
Откуда: Жуковский

Re: СV AVR ликбез

Сообщение a_skr »

ШИМ настраивается через COM01 и COM00 в TCCR0?
тогда

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

if(PIND.4) TCCR0 |= (1<<COM01); // или как там у вас настраивается
else TCCR0 &= ~((1<<COM01)|(1<<COM00));
Мастер Ломастер
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город
Контактная информация:

Re: СV AVR ликбез

Сообщение Мастер Ломастер »

очень грубо ваша задача должна решаться примерно так:

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

char temp_TCCR0 = TCCR0;
while(1){
   if(PIND.0){
      TCCR0 = temp_TCCR0;
   } else {
      TCCR0 = 0;
      PORTB.4 = 0;
   }
}
битва с дураками проиграна, победители торжествуют. слава победителям!
a_skr
Вымогатель припоя
Сообщения: 630
Зарегистрирован: Пн июн 14, 2010 13:07:29
Откуда: Жуковский

Re: СV AVR ликбез

Сообщение a_skr »

не. проще направлением пина управлять

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

DDRB.4 = PIND.4;
если не желательно, чтобы выход в воздухе болтался, можно резистором к земле притянуть
Последний раз редактировалось a_skr Вт мар 13, 2012 15:38:40, всего редактировалось 1 раз.
Мастер Ломастер
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город
Контактная информация:

Re: СV AVR ликбез

Сообщение Мастер Ломастер »

a_skr писал(а):не. проще направлением пина управлять

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

DDRB.4 = PIND.4;
уверены, что при этом состояние на выходе будет однозначно прогнозируемым?
битва с дураками проиграна, победители торжествуют. слава победителям!
a_skr
Вымогатель припоя
Сообщения: 630
Зарегистрирован: Пн июн 14, 2010 13:07:29
Откуда: Жуковский

Re: СV AVR ликбез

Сообщение a_skr »

см выше :)
_sanych_
Родился
Сообщения: 11
Зарегистрирован: Вт мар 13, 2012 02:57:11

Re: СV AVR ликбез

Сообщение _sanych_ »

Мастер Ломастер писал(а):очень грубо ваша задача должна решаться примерно так:

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

char temp_TCCR0 = TCCR0;
while(1){
   if(PIND.0){
      TCCR0 = temp_TCCR0;
   } else {
      TCCR0 = 0;
      PORTB.4 = 0;
   }
}
попробовал так, получается в любом случае на PORTB.4 ШИМа нет хоть 0 приходит на PIND.0 , хоть 1 :?
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»