СV AVR ликбез
СV AVR ликбез
помогите пожалуйста. Нужно, что бы по приходу 1 на ногу МК другая выдавала сигнал, а по приходу 0 "молчала".
может быть так:
if (PORTD.0=1) {PORTB.4=PORTB.4} else {PORTB.4!=PORTB.4};
заранее спасибо
может быть так:
if (PORTD.0=1) {PORTB.4=PORTB.4} else {PORTB.4!=PORTB.4};
заранее спасибо
- Реклама
Re: СV AVR ликбез
вообще то по CV есть отдельная тема._sanych_ писал(а):помогите пожалуйста. Нужно, что бы по приходу 1 на ногу МК другая выдавала сигнал, а по приходу 0 "молчала".
может быть так:
if (PORTD.0=1) {PORTB.4=PORTB.4} else {PORTB.4!=PORTB.4};
заранее спасибо
а по коду возможно так ?
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 ликбез
Код: Выделить всё
if (PORTD.0=1)Код: Выделить всё
if (PIND.0)Docendo discimus
Re: СV AVR ликбез
Может быть так понятней будет:_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;
битва с дураками проиграна, победители торжествуют. слава победителям!
- Реклама
Re: СV AVR ликбез
if (PIND.0 == 1) {
PORTB.4 = 1;
}
else {
PORTB.4 = 0;
};
Дело в том, что на ноге PORTB.4 генерится ШИМ, а если писать PORTB.4 = 1, то он, наверное , будет выдавать 1. (Atmega128, ШИМ на нулевом таймере).
PORTB.4 = 1;
}
else {
PORTB.4 = 0;
};
Дело в том, что на ноге PORTB.4 генерится ШИМ, а если писать PORTB.4 = 1, то он, наверное , будет выдавать 1. (Atmega128, ШИМ на нулевом таймере).
Re: СV AVR ликбез
тоесть мне нужно, что бы по приходу на PORTD.0 1 или 0 на PORTB.4 включался или отключался ШИМ соответсятвенно.
Re: СV AVR ликбез
а 128 меги будет достаточно для выполнения такой задачи?_sanych_ писал(а):тоесть мне нужно, что бы по приходу на PORTD.0 1 или 0 на PORTB.4 включался или отключался ШИМ соответсятвенно.
Re: СV AVR ликбез
А почему нет? Может Вы не поняли вопроса?igor-x писал(а):а 128 меги будет достаточно для выполнения такой задачи?_sanych_ писал(а):тоесть мне нужно, что бы по приходу на PORTD.0 1 или 0 на PORTB.4 включался или отключался ШИМ соответсятвенно.
Сигнал приходит с датчиков холла (это либо 0 либо 1, и в зависимости от этого мне нужно либо включать, либо отключать ШИМ)
Re: СV AVR ликбез
тогда в качестве ликбеза почитать немного даташиты..._sanych_ писал(а): А почему нет? Может Вы не поняли вопроса?
Сигнал приходит с датчиков холла (это либо 0 либо 1, и в зависимости от этого мне нужно либо включать, либо отключать ШИМ)
Re: СV AVR ликбез
тогда может быть отправите на нужную страницу... я не понимаю, почему 128 мега не сможет справиться с такой задачей.igor-x писал(а):тогда в качестве ликбеза почитать немного даташиты..._sanych_ писал(а): А почему нет? Может Вы не поняли вопроса?
Сигнал приходит с датчиков холла (это либо 0 либо 1, и в зависимости от этого мне нужно либо включать, либо отключать ШИМ)
Re: СV AVR ликбез
просто задача поставлена некоректно - началось с ликбеза из одной строчки и одного сигнала, а потом оказывается МК должен работать в некой жесткой врЕменной диаграмме._sanych_ писал(а): тогда может быть отправите на нужную страницу... я не понимаю, почему 128 мега не сможет справиться с такой задачей.
для начала надо эту временную диаграмму представить слушателям форума:
1.на вход поступает периодический сигнал с частотой ХХ герц
2.по фронту входного импульса должно произойти ХХХ событие
3. ну и так далее со всеми временами и задержками........
Re: СV AVR ликбез
А что будет если написать так?
if (PIND.0 == 0) {
TCNT0 = 0;
};
if (PIND.0 == 0) {
TCNT0 = 0;
};
Re: СV AVR ликбез
Я понимаю, что делаю некорректно и неправильно и именно поэтому прошу помощи.
Re: СV AVR ликбез
ШИМ настраивается через 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;
}
}битва с дураками проиграна, победители торжествуют. слава победителям!
Re: СV AVR ликбез
не. проще направлением пина управлять
если не желательно, чтобы выход в воздухе болтался, можно резистором к земле притянуть
Код: Выделить всё
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;
битва с дураками проиграна, победители торжествуют. слава победителям!
Re: СV AVR ликбез
см выше 
Re: СV AVR ликбез
попробовал так, получается в любом случае на PORTB.4 ШИМа нет хоть 0 приходит на PIND.0 , хоть 1Мастер Ломастер писал(а):очень грубо ваша задача должна решаться примерно так:Код: Выделить всё
char temp_TCCR0 = TCCR0; while(1){ if(PIND.0){ TCCR0 = temp_TCCR0; } else { TCCR0 = 0; PORTB.4 = 0; } }


