Обсуждаем контроллеры компании Atmel.
Чт мар 15, 2018 18:57:16
Никогда не понимал такого подхода, захотелось запрограммировать, быстро хватаем, быстро ляпаем свой код или воруем с инета чужой. Бац, ни хрена не работает. ААААА!!!! Памагыте! Ниче не работает!!!! Ну конечно же, все люди братья, добренькие дяди на форумах на пальцах разжуют, что да как. А вот хрена лысого на лопате!
Берешь нормальную книгу по МК и начинаешь читать. А потом пошагово что-то начинаешь пробовать. Как же! Это не наш метод. Нам сейчас все и сразу! Вот вы все начинающие и получаете граблями по лобешнику.
Планировать нужно свои действия! МК с наскоку не освоить. Покупаешь книги, изучаешь архитектуру. И только потом пошагово начинать пробовать. Не получилось? Лезем в книгу. Опять пробуем.
Чт мар 15, 2018 19:35:51
Никогда не понимал такого подхода, захотелось запрограммировать, быстро хватаем, быстро ляпаем свой код или воруем с инета чужой. Бац, ни хрена не работает. ААААА!!!! Памагыте! Ниче не работает!!!! Ну конечно же, все люди братья, добренькие дяди на форумах на пальцах разжуют, что да как. А вот хрена лысого на лопате!
Берешь нормальную книгу по МК и начинаешь читать. А потом пошагово что-то начинаешь пробовать. Как же! Это не наш метод. Нам сейчас все и сразу! Вот вы все начинающие и получаете граблями по лобешнику.
Планировать нужно свои действия! МК с наскоку не освоить. Покупаешь книги, изучаешь архитектуру. И только потом пошагово начинать пробовать. Не получилось? Лезем в книгу. Опять пробуем.
Вы решили все темы засрать подобным текстом?Люди поматерее Вас себя ведут сдержанно и мудро. А метод, как изучать, каждый решает сам. Что ж Вы тогда тут делаете я не пойму? Начинающие Вас раздражают своими вопросами... а ну да за советом пришли,ну так у Вас прекрасный подход к изучению.... Не получается берите книгу перечитывайте!!!
Чт мар 15, 2018 20:27:54
Вы только что сами своими словами доказали, что советовать вам что либо бесполезно. По простой причине. Вы не слушаете. Начинаете обижаться, огрызаться.
Давайте посмотрим на ситуацию со стороны, как наблюдатели. И мысленно проводим следующий эксперимент. Вы не читаете книги как вам советуют. А снова и снова приходите на форум. Тратите свое время. То что мы тратим свое время, я даже упоминать не буду. Вам плевать на это с высокой колокольни. И не спорьте даже. Вы уже это доказали своими действиями и словами.
То есть вы размышляете не то что на несколько шагов вперед, а на четверть шага в лучшем случае. Отдаетесь своим инстинктам. Все и сразу, никакого управления своими сиюминутными хотелками.
Другой подход. Взять хорошую толковую книжку. И просто ее прочитать. Постепенно. Пусть вы не все и не сразу поймете. Но вы увидите какие-то термины, упоминания, что-то отложится в памяти. Естественно, придется перечитать не раз. Дошли до практики. И так как вы не бегаете на форумы, не получаете какую-то обрывочную, расплывчатую информацию, а пользуетесь готовой переработанной из книги и конкретной, то есть той, что нужна на данный момент. В этом случае вы не бегаете на форумы, не тратите свое и наше время, а вспоминаете прочитанное. Притом сразу. Эту информацию не нужно ждать часами и днями с форумов. А в определенный момент накапливается критическая масса и приходит понимание. Вот про что я говорю. Этот принцип вы должны запомнить. Собирать качественную информацию, а не обрывочную и зачастую ложную, ведущую в никуда.
На форумы обращаться только в том случае, если вы честно перепробовали все что только можно и зашли в тупик.
Чт мар 15, 2018 20:51:07
Вы только что сами своими словами доказали, что советовать вам что либо бесполезно. По простой причине. Вы не слушаете. Начинаете обижаться, огрызаться.
Давайте посмотрим на ситуацию со стороны, как наблюдатели. И мысленно проводим следующий эксперимент. Вы не читаете книги как вам советуют. А снова и снова приходите на форум. Тратите свое время. То что мы тратим свое время, я даже упоминать не буду. Вам плевать на это с высокой колокольни. И не спорьте даже. Вы уже это доказали своими действиями и словами.
То есть вы размышляете не то что на несколько шагов вперед, а на четверть шага в лучшем случае. Отдаетесь своим инстинктам. Все и сразу, никакого управления своими сиюминутными хотелками.
Другой подход. Взять хорошую толковую книжку. И просто ее прочитать. Постепенно. Пусть вы не все и не сразу поймете. Но вы увидите какие-то термины, упоминания, что-то отложится в памяти. Естественно, придется перечитать не раз. Дошли до практики. И так как вы не бегаете на форумы, не получаете какую-то обрывочную, расплывчатую информацию, а пользуетесь готовой переработанной из книги и конкретной, то есть той, что нужна на данный момент. В этом случае вы не бегаете на форумы, не тратите свое и наше время, а вспоминаете прочитанное. Притом сразу. Эту информацию не нужно ждать часами и днями с форумов. А в определенный момент накапливается критическая масса и приходит понимание. Вот про что я говорю. Этот принцип вы должны запомнить. Собирать качественную информацию, а не обрывочную и зачастую ложную, ведущую в никуда.
На форумы обращаться только в том случае, если вы честно перепробовали все что только можно и зашли в тупик.
Ну спасибо за совет,что еще сказать!
Если не секрет,что конкретно Вас побудило поделиться столь ценным?
Пт мар 16, 2018 09:05:31
ROMan2947, да, дефайн OC1A- я проглядел...
) транзистору в базу резистор нужен обязательно, иначе он ногу МК перегружать будет и сам эмиттерный переход будет перегружен (есть случаи, когда резистор не нужен, но твой не из них).
) диод ставится параллельно индуктивной нагрузке (встречно питанию - чтобы при работе нагрузки он был закрыт) и замыкает через себя выброс её индукции при закрытии ключа (ток через индуктивность резко прекратиться не может, вот он и крутится через открывшийся диод, пока не погаснет)
Пт мар 16, 2018 13:02:22
) диод ставится параллельно индуктивной нагрузке
Да, нашел схему в сети, припаял, все стало стабильно работать. Благодарю!
Пт мар 16, 2018 18:10:31
диод ставится параллельно индуктивной нагрузке (встречно питанию - чтобы при работе нагрузки он был закрыт) и замыкает через себя выброс её индукции при закрытии ключа (ток через индуктивность резко прекратиться не может, вот он и крутится через открывшийся диод, пока не погаснет)
Кстати, делал подобное в наручных часах, чтобы механические удары по пищалке не приводили к глюкам или сбросам чипа.
Вт июн 05, 2018 08:03:40
Помогите плз. Хочу сделать генератор сигнала с частотой 1МГц. Он мне нужен, чтобы поправить биты в мк. Я понимаю. что можно сделать на К155ЛА3. Но по моему проще запрограммировать ATMEGA8, чтобы он генерил частоту на одной ноге, пайки меньше. Но как я не пытался настраивать таймеры я не мог достигнуть этой частоты, даже если при 8Мгк внутреннего генератора зажигал и тушил пин, все ровно частота меньше 1МГц.
Помогите советом плз. Пишу на AVRC
Вт июн 05, 2018 08:10:20
А как ты пытался настраивать таймеры? На какой частоте у тебя МК работает?
Вт июн 05, 2018 08:36:45
OCR2=Fcpu/1000000/2-1
TCCR2=1<<COM20|1<<WGM21|1<<CS20
На лапе PB3/OC2 должен появиться 1МГц
Вт июн 05, 2018 08:51:53
DDRB |= (1<<PB3) не нужно добавить?
Вт июн 05, 2018 08:59:13
Разумеется нужно перевести лапу на вывод.
Ср июн 06, 2018 10:34:20
Настраиваю таймер для обработки кнопки на Atmega32. Вроде делаю все по инструкции, но контроллер на кнопки не реагирует. Не могу понять, что не так.
Вот код:
- Код:
int main(void)
{
port_ini(); //инициализация портов
timer1_ini(); //инициализация таймера
lcd_display_init(); //инициализация дисплея
while (1)
{
Main_Menu(); //вызов меню
}
}
//----------//
void BUTTON_Handler(int *Key_pntr, int pin_state) //обработка нажатия любой кнопки
{
int Button_count=0,Button_state=0,key_delay=0,Flag=0; //служебные переменные
if (!(PIND & pin_state)) //если кнопка физически нажата (логический 0 на n ножке порта D)
{
if(Button_count<20) Button_count++; //подавление дребезга при нажатии (кнопка физически нажата 20 тактов)
else
{
Button_state=1; //регистрируем нажатие кнопки
key_delay++; //как долго кнопка нажата
}
}
else //если кнопка физически отжата
{
if (Button_count>0)Button_count--; //подавление дребезга при отжатии
else
{
Button_state=0; //регистрируем отжатие кнопки
if (key_delay<20000) Flag=1; //регистрируем короткое нажатие
else Flag=2; //регистрируем длительное нажатие
}
}
if ((Button_state==0)&&(Flag==1)) //если кнопка была "кратко" нажата
{
*Key_pntr=1;
Flag=0;
}
if ((Button_state==0)&&(Flag==2)) //если кнопка была "долго" нажата
{
*Key_pntr=1;
Flag=0;
}
else *Key_pntr=0; //кнопку вообще не нажимали
}
//----------//
ISR (TIMER1_OVF_vect) //обработчик прерывания по переполнению таймера 1
{
BUTTON_Handler(&Key_up, BUTTON_UP); //опрос кнопки UP
BUTTON_Handler(&Key_down, BUTTON_DOWN); //опрос кнопки DOWN
BUTTON_Handler(&Key_start, BUTTON_START); //опрос кнопки START
BUTTON_Handler(&Key_return, BUTTON_STOP); //опрос кнопки STOP
}
//----------//
void timer1_ini(void) //инициализация таймера 1
{ //
TCCR1B |= (1<<CS10) | (1<<CS12); //предделитель 1024
TCCR1B &=~ (1<<WGM11);
TIMSK |= (1<<TOIE1); //разрешение прерывания по переполнению счетчика
asm("sei"); //разрешение прерываний
}
//----------//
void port_ini(void) //инициализация портов
{
DDRD=0; //порт D настроен на вход
PORTD=0xF0; //4,5,6,7 ножки порта D подтянуты к питанию
DDRC=0xFF; //порт С настроен на выход
DDRA=0xFF; //порт А настроен на выход
}
//----------//
схема ниже.
По факту нажатия кнопки должна установиться в 1 одна из переменных Key_up,Key_down и тд
- Вложения
-
- фвпфвпф.png
- (98.25 KiB) Скачиваний: 256
Ср июн 06, 2018 10:47:56
Посмотрите какое значение принимает TCCR1B после timer1_ini
У вас в коде нет начальной инициализации TCCR1B
Ср июн 06, 2018 10:57:02
Все так же как установлено, но не работает
Ср июн 06, 2018 11:08:09
Как часто (по вашим расчётам) у вас должно вызываться прерывание от таймера?
При частоте МК 8 Мгц таймер будет считать на частоте 8 КГц до 0xFFFF - примерно 8 с лишним секунд получается.
Ср июн 06, 2018 12:32:59
И правда. Добавила еще TCNT1
- Код:
void timer1_ini(void) //инициализация таймера 1
{ //
TCCR1B |= (1<<CS10) | (1<<CS12); //предделитель 1024
TCCR1B &=~ (1<<WGM11);
TIMSK |=(1<<TOIE1); //разрешение прерывания по переполнению счетчика
TCNT1=65530; //
asm("sei"); //разрешение прерываний
}
8000000/1024=7812 тактов в секунду
65535-65530=5 тактов до переполнения
5/7812=640 мкс
но не работает
Ср июн 06, 2018 12:38:34
Вы сначала проверьте, что у вас вообще обработчик прерывания вызывается.
Ср июн 06, 2018 12:58:19
Вызывается
Ср июн 06, 2018 13:06:05
Чему равны BUTTON_UP, BUTTON_DOWN, BUTTON_START и BUTTON_STOP?
Powered by phpBB © phpBB Group.
phpBB Mobile / SEO by Artodia.