Мелкие вопросы по МК и ПЛИС.

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Аватара пользователя
просто КОТ
Друг Кота
Сообщения: 12364
Зарегистрирован: Пт дек 17, 2010 15:07:50
Откуда: Крымский Федеральный Округ
Контактная информация:

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение просто КОТ »

vitalik_1984 писал(а):в регистре таймера и сохраняет.
TCRx, TCRLx TCRHx.

Топишь включил таймер, он своё отработал, потом пишем, что если TCRх больше указанного числа, то . . .

Понятно -- дошло. Спасибо!
Изображение
И ты врёшь!!! © Vladisman
Изображение
Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение vitalik_1984 »

вот вот,выбираем в источнике тактирования канал Тх.
и ниспадающий или восходящий импульс.и готово
В поисках истины человек развивается.
Аватара пользователя
просто КОТ
Друг Кота
Сообщения: 12364
Зарегистрирован: Пт дек 17, 2010 15:07:50
Откуда: Крымский Федеральный Округ
Контактная информация:

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение просто КОТ »

А как задать условие, что если TCNT0 больше 5 но меньше 30?! Так что ли?!

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

if (10>TCNT0>5)
Изображение
И ты врёшь!!! © Vladisman
Изображение
Аватара пользователя
uldemir
Друг Кота
Сообщения: 7357
Зарегистрирован: Пт авг 28, 2009 21:34:30
Откуда: 845-й км.

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение uldemir »

так нельзя потому что первое сравнение даст тип boolean а второе скажет, что этот тип с целым сравнивать не умею. или нет... но всё равно так нельзя. Це не матиматика, а программирование. if (a<10 && a>5)
А люди посмотрят и скажут: "Собаки летят. Вот и осень."
Аватара пользователя
просто КОТ
Друг Кота
Сообщения: 12364
Зарегистрирован: Пт дек 17, 2010 15:07:50
Откуда: Крымский Федеральный Округ
Контактная информация:

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение просто КОТ »

Под а имеется в виду мой регистр?!

&& или один & ?!
Изображение
И ты врёшь!!! © Vladisman
Изображение
Аватара пользователя
uldemir
Друг Кота
Сообщения: 7357
Зарегистрирован: Пт авг 28, 2009 21:34:30
Откуда: 845-й км.

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение uldemir »

ну типа да. Только смотрите один момент - он будет читаться дважды. поэтому, чтобы не было такой ситуации что при первом чтении прочитается одно значение, а прри втором уже другое, лучше прочитать один раз, сохранить в переменной и уже дальше делать сравнения.
& - побитное И
&& - логическое И
А люди посмотрят и скажут: "Собаки летят. Вот и осень."
Аватара пользователя
просто КОТ
Друг Кота
Сообщения: 12364
Зарегистрирован: Пт дек 17, 2010 15:07:50
Откуда: Крымский Федеральный Округ
Контактная информация:

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение просто КОТ »

И ещё одно:
Есть ли разница между Power-down и Sleep Enable?!
Изображение
И ты врёшь!!! © Vladisman
Изображение
Аватара пользователя
просто КОТ
Друг Кота
Сообщения: 12364
Зарегистрирован: Пт дек 17, 2010 15:07:50
Откуда: Крымский Федеральный Округ
Контактная информация:

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение просто КОТ »

Кстати, если MCUCR=0b00100010 заставит микр уснуть, то MCUCR=0b00000010 его разбудит?!
Изображение
И ты врёшь!!! © Vladisman
Изображение
Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение vitalik_1984 »

нет это будет некому выставить.он сам просыпается от прерывания в зависимости от того какой режим,их может быть больше или меньше.все описано в даташите.можно оставить таймеры работать,остальное спать или все спать а ацп работает.при самом экономном режиме работает только одно прерывание - низкий уровень вроде инт0.
есть специальная команда для входа в режим -sleep как бы это не было странным. :))
если при входе в режим сна работает память еепром, то она может не остановиться при том,что все остальное спит.поэтому нужно убедиться,что запись в еепром завершена прежде чем ходить в режим сна.вот так.
В поисках истины человек развивается.
Аватара пользователя
просто КОТ
Друг Кота
Сообщения: 12364
Зарегистрирован: Пт дек 17, 2010 15:07:50
Откуда: Крымский Федеральный Округ
Контактная информация:

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение просто КОТ »

Прям SLEEP и писать?!
Изображение
И ты врёшь!!! © Vladisman
Изображение
Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение vitalik_1984 »

команда асм,соответственно употреблению асм в вашем компиляторе

КВ

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

#asm ("sleep");
 

AVR Studio вроде

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


asm volatile 
("sleep"); 

асм

типа того посмотреть точно негде я с телефона.
В поисках истины человек развивается.
Аватара пользователя
hybroid
Друг Кота
Сообщения: 8007
Зарегистрирован: Вс ноя 14, 2010 19:24:26
Откуда: Лукалэнд

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение hybroid »

vitalik_1984 писал(а):AVR Studio вроде
Угу. А если подробнее - GCC. аврстудия - это IDE. :wink:
Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение vitalik_1984 »

я про то что вроде так,а не про то что вроде авр студия.
все равно студия изначально привязана к ГЦЦ, так что я не сильное упущение сделал.
В поисках истины человек развивается.
Аватара пользователя
FreshMan
Друг Кота
Сообщения: 6296
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Откуда: Ukraine

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение FreshMan »

вопрос относительно аппаратной реализации ШИМ
вот пример, он взят отсюда http://avrlab.com/node/90#comment-1788

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

#include <avr/io.h>//библиотека ввода/вывода
 
//Програма задержки
void pause (unsigned int a)
{
unsigned int i;
for (i=a;i>0;i--);
}
 
//Програма инициализации ШИМ
void init_pwm (void)
{
  TCCR1A=(1<<COM1A1)|(1<<WGM10); //На выводе OC1A единица, когда OCR1A==TCNT1, восьмибитный ШИМ
  TCCR1B=(1<<CS10);       //Делитель= /1
  OCR1A=0x00;         //Начальная яркость нулевая
}
 
//Основная програма
int main(void)
{
unsigned char i;
 
 DDRB=0x02;            //Инициализация PB1 (OC1A) как выход
 init_pwm();
 
 while (1)
  {
    for (i=0;i<255;i++)      //Плавно повышаем яркость
    {
     OCR1A++;
     pause(1000);
    }
    for (i=0;i<255;i++)      //Плавно понижаем яркость
    {
     OCR1A--;
     pause(1000);
    }
  }
 
 return 1;
}


я не могу никак взять в толк почему главная функция все время возвращает единицу и что этим добиваются ?
Tell Me The Truth
Аватара пользователя
hybroid
Друг Кота
Сообщения: 8007
Зарегистрирован: Вс ноя 14, 2010 19:24:26
Откуда: Лукалэнд

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение hybroid »

Стандарты программирования. Программы должны возвращать чего-то. От чего-то зависит, как программа завершилась, с ошибкой или нет.. В мире МК на это забиваем, в принципе, т.к. некому возвращать. В данном случае причина такая:

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

int main(void)
int видишь? Соответственно, если ты в main не затолкаешь return чего_то_похожее_на_int, то тебя компилятор выматерит, т.к. объявил ты ф-ю, которая возвращает int.

Напиши так:

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

void main(void)
Этим ты избавишься от необходимости return в теле ф-ии.
Аватара пользователя
FreshMan
Друг Кота
Сообщения: 6296
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Откуда: Ukraine

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение FreshMan »

усек....
но я по началу думал что сюда значение возвращается

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

void pause (unsigned int a)
{
unsigned int i;
for (i=a;i>0;i--);
}

теперь не пойму как этот кусок кода работает :dont_know:
Tell Me The Truth
Аватара пользователя
hybroid
Друг Кота
Сообщения: 8007
Зарегистрирован: Вс ноя 14, 2010 19:24:26
Откуда: Лукалэнд

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение hybroid »

Они возвращаются туда, откуда вызывают. В случае настольного софта - возвращаться будет вообще ядру, т.к. при копании вглубь - оно и вызывает.
Здесь просто МК загружается и начинает выполнять (или загрузчик запускает твою прошивку, не суть важно). Возвращать особо некуда.
Вот в случае вызова тобой других функций это важнее :)
Например, твой кусок с pause. От него не требуется возвращения каких-то данных, просто нужно подождать. Поэтому он void pause. Если бы это была какая-то ф-я по сложению двух переменных, например, то было бы так:

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

int sum(int a, int b)
{
return a+b;
}

Вызывалась бы уже таким образом (где-то внутри main или внутри другой ф-ии):

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

sum_result = sum(1, 2);


В случае твоего void pause тебе нужно просто чем-то загрузить проц, чтобы подождать. Загружаем мы его циклом, который ничего не делает, просто тикает. Т.е. твоя строка for (i=a;i>0;i--); занимается ничегонеделанием, пока переданное функции a (в скобках которое), присваеваемое i, будет уменьшаться и не станет равно нулю.
Вместо такой хрени в сишных либах AVR GCC есть _delay_us(), _delay_ms(), доступные при подключении utils/delay.h.
Аватара пользователя
FreshMan
Друг Кота
Сообщения: 6296
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Откуда: Ukraine

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение FreshMan »

усек....
а сколько в мс или мкс ставить задкржку ?
Tell Me The Truth
Аватара пользователя
hybroid
Друг Кота
Сообщения: 8007
Зарегистрирован: Вс ноя 14, 2010 19:24:26
Откуда: Лукалэнд

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение hybroid »

Ну в случае твоего pause задержка будет в первую очередь в "попугаях". Надо смотреть, во что компилятор превратил эту ф-ю и сколько тиков проца займёт один "попугай", переданный в скобке. Потом в зависимости от частоты посчитать число нужных попугаев для требуемого времени задержки.

На практике, если используем GCC в качестве компилятора, то делаем #include <utils/delay.h> и используем _delay_us(число_мкс) или _delay_ms(число_мс). Так же требуется указать частоту, на которой у тебя работает мк в виде #F_CPU (тут частота).
Подробнее - тут http://www.nongnu.org/avr-libc/user-man ... delay.html

Для всяких прочих CodeVision и IAR явно есть что-то подобное, я просто ими не пользовался.
Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение vitalik_1984 »

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

Вернуться в «Разные вопросы по МК»