kobzar Опубликовано 13 июня, 2014 Поделиться Опубликовано 13 июня, 2014 Посмотрите уроки с начала - и вы найдете ответы на ваши вопросы. Я специально обьяснял регистровые сдвиги! 0 коплю на мечту - Днепр К750 Ссылка на комментарий Поделиться на другие сайты Поделиться
vitaliy_glata Опубликовано 16 июня, 2014 Поделиться Опубликовано 16 июня, 2014 (изменено) Здравствуйте! Я попробывал сделать ДЗ к 5 видеоуроку, только у меня произвольно мигают все светодиоды одного из портов. Вот код: #include <mega8.h> #include <delay.h> #include <stdlib.h> void preset(){ DDRB=0xff; PORTB=0b00000000; DDRC=0xff; PORTC=0b00000000; DDRD=0xff; PORTD=0b00000000; } void main(void) { unsigned int f_number; int i; preset(); while (1) { f_number = rand()>>3; switch (f_number) { case 0: for(i=0;i<=7;i++) { PORTB = (1<<i); delay_ms(50); } break; case 1: for(i=7;i>=0;i--) { PORTC = (1<<i); delay_ms(50); } break; case 2: for(i=0;i<=7;i++) { PORTD = (1<<i); delay_ms(50); } break; } }; } Врпрос: а как правильно сделать, чтобы мигали только по одному из светодиодов каких-либо портов? Ну вобщем по условию домашнего задания к 5 уроку? Работа с портами часть 3.rar Изменено 16 июня, 2014 пользователем vitaliy_glata 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
20% скидка на весь каталог электронных компонентов в ТМ Электроникс!Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!Перейти на страницу акции Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849
lazudhic Опубликовано 16 июня, 2014 Поделиться Опубликовано 16 июня, 2014 Приветствую всех!!! Такой вопрос можно ли на меге8 часть портов к примеру pc0,pc1,pc2 настроить как аналоговый преобразователь ,а рс3,рс4,рс5,pc6 как цифровой выход в одном проекте, и можно ли их менять и использовать то как выход то переключать и использовать как вход в одном проекте?. Сложно ли мегу подключить к порту (com или usb) чтоб получать данные(с adc) или передавать данные(на pb). И возможно ли цифровой сигнал преобразовать в аналоговый на данном устройстве ? Уроки замечательные !!!! на 7 уроке мозг раз 6 отключался от урока -пытаясь понять как это можно применить на реальности в различных устройствах логических и аналоговых а может старым становлюсь 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>> Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161
COKPOWEHEU Опубликовано 17 июня, 2014 Поделиться Опубликовано 17 июня, 2014 Разве в уроках не сказано, что разные линии одного порта почти независимы друг от друга? То есть можно настроить скажем PC0 - аналоговый вход, PC1 - цифровой вход, PC2 - цифровой выход, PC4,PC5 - альтернативная функция (I2C). Но питание у всего порта С общее (AVCC), так что если часть выводов используется как аналоговые, а часть как цифровые - получите помехи на аналоговых и пониженную точность. Поэтому для максимальной точности АЦП рекомендуется не вешать на выводы, соединенные с аналоговым мультиплексором, ничего, использующего большие токи и использовать специальный режим сна. Но если особая точность не нужна - не страшно. К usb есть готовая библиотека (vusb). Простейшую программу с ее использованием написать несложно, для большего придется разбираться. С аналоговыми сигналами ядро контроллера работать не умеет, для этого существуют АЦП и компаратор, делающий из них цифровые. 0 Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз. Часть моих наработок. Ссылка на комментарий Поделиться на другие сайты Поделиться
forever_student Опубликовано 17 июня, 2014 Поделиться Опубликовано 17 июня, 2014 ...Но питание у всего порта С общее (AVCC)... Вот что об этом пишут в Atmel: "AVCC is the supply voltage pin for the A/D Converter, Port C (3..0), and ADC (7..6). It should be externally connected to VCC, even if the ADC is not used. If the ADC is used, it should be con- nected to VCC through a low-pass filter. Note that Port C (5..4) use digital supply voltage, VCC." 0 Нет слова "не могу", есть слово "не хочу"... Ссылка на комментарий Поделиться на другие сайты Поделиться
stenkodv Опубликовано 18 июня, 2014 Поделиться Опубликовано 18 июня, 2014 Спасибо за уроки, по ним начал делать измеритель уровня бензина на свою таврюшку старушку, конечно без лсд, его жалко туда лепить, просто ряд диодов будет стоять . Жду с нетерпением следующего курса, если конечно будет. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
COKPOWEHEU Опубликовано 19 июня, 2014 Поделиться Опубликовано 19 июня, 2014 конечно без лсдЭто радует, находиться за рулем под такими веществами и правда не стоит. :-DЕсли серьезно, научитесь, наконец, различать LSD (Lysergsäurediethylamid) / ЛСД (скорее, правда, ДЛК) и LCD (Liquid crystal display) / ЖК (жидкокристаллический) дисплей. 1 Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз. Часть моих наработок. Ссылка на комментарий Поделиться на другие сайты Поделиться
K.A. Опубликовано 19 июня, 2014 Поделиться Опубликовано 19 июня, 2014 Добрый день.Вопрос по заданиям к 7 уроку. Откуда мы в расчетах выводимого на экран значения взяли 30 и почему не удается измерить значение больше 24 вольт? Lcd_printf(0,0,FONT_1X,((readADC(0)*2.56*(30/2.56))/1023),1); 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Alex_Andr1 Опубликовано 19 июня, 2014 Поделиться Опубликовано 19 июня, 2014 (изменено) Привет. У меня вопрос по 6-му уроку, а точнее по "железу". Прошивка в Протеусе заработала нормально, а вот когда попробовал собрать это дело на макетке - горят все писели дисплея. Вообще расположение контактов на реальном дисплее отличается от тех, что на схеме в Протеусе. Я соединял следующим образом: Может я чего напутал? Изменено 19 июня, 2014 пользователем Alex_Andr1 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Andreylev Опубликовано 19 июня, 2014 Поделиться Опубликовано 19 июня, 2014 подключил правильно это у вас помоем контраст очень накручен 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Alex_Andr1 Опубликовано 19 июня, 2014 Поделиться Опубликовано 19 июня, 2014 Оказывается про контрастность говорится в начале 7-го урока! Прграмно не стал менять контрастность (лень было препрошивать мегу). Снизил напряжение питания на дисплей и всё пришло в норму. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
vitaliy_glata Опубликовано 19 июня, 2014 Поделиться Опубликовано 19 июня, 2014 (изменено) Всем привет! Подскажите пожалуйста как в CodeVisionAVR 2.05 добавить файлы n5110.h и n5110.с к проекту, чтобы начать программировать дисплей от Nokia? Изменено 19 июня, 2014 пользователем vitaliy_glata 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Alex_Andr1 Опубликовано 20 июня, 2014 Поделиться Опубликовано 20 июня, 2014 В сети поищи книжку М.Б Лебедев «CodeVision AVR пособие для начинающих». Сам я в CodeVisionAVR только прошиваю микроконтроллеры, потому что AVR Studio не поддерживает мой программатор. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
kobzar Опубликовано 21 июня, 2014 Поделиться Опубликовано 21 июня, 2014 Спасибо за уроки, по ним начал делать измеритель уровня бензина на свою таврюшку старушку, конечно без лсд, его жалко туда лепить, просто ряд диодов будет стоять . Жду с нетерпением следующего курса, если конечно будет. а как на счет заменить диоды на двухрозрядный семисегметный индикатор? просто лаконично и практично! цыфрами покажет литры! Темболее они есть красные синие зеленые.... Добрый день.Вопрос по заданиям к 7 уроку. Откуда мы в расчетах выводимого на экран значения взяли 30 и почему не удается измерить значение больше 24 вольт? Lcd_printf(0,0,FONT_1X,((readADC(0)*2.56*(30/2.56))/1023),1); 30 ето предельное напряжение вольт которое мы измеряем ! Теперь представим что 30 вольт после нашего делителя - будут навны на входе м/к 2.56 вольта! потому мы делим 30 на 2/56 и получаем коэфициент на который нам нужно умножить имеренную величину перед выводом на экран дабы привести ее к читабельному виду. Пересмотрите урок не перематывая. Оказывается про контрастность говорится в начале 7-го урока! Прграмно не стал менять контрастность (лень было препрошивать мегу). Снизил напряжение питания на дисплей и всё пришло в норму. Дисплей согласно даташита работает от 3и3 вольт. Подозреваю что вы запитали схему от 5. По сему нужно либо менять програмно уровень контраста либо питать схему от 3и3 вольта либо пойти другим путем Всем привет! Подскажите пожалуйста как в CodeVisionAVR 2.05 добавить файлы n5110.h и n5110.с к проекту, чтобы начать программировать дисплей от Nokia? Дико прошу прощения но вопрос принципиальный: 18 страница 354 пост - но так как читать всем лень процитирую его для вас Опубликовано 19 Май 2014 - 08:44Внимание !!! Важное сообщение ! Уважаемые друзья! На днях, волею судеб - у меня возникла необходимость набросать небольшой код в CоdevisonAVR... По сему хочу предупредить заранее. Отвечать на какие либо вопросы пользователям этой убогой, нелогичной, неудобной, кривой и дыбильной IDE - я не буду. Если у Вас по какой либо причине (а они будут) не работает в ней код из урока... задавайте вопросы фанатам этой гадости. Этот тот редкий случай когда действительно лучше писать в блокноте. Благодарю за внимание. 0 коплю на мечту - Днепр К750 Ссылка на комментарий Поделиться на другие сайты Поделиться
K.A. Опубликовано 22 июня, 2014 Поделиться Опубликовано 22 июня, 2014 Спасибо за ответ! 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
lazudhic Опубликовано 22 июня, 2014 Поделиться Опубликовано 22 июня, 2014 доброго времени суток!!! у меня вопрос как можно сделать ожидание сигнала ? пытаюсь разобраться с COM портом и подключить его к atmega8 . подробнее- микроконтроллер чтоб ждал изменение сигнала на ноге после чего принимал 7- 8 бит т.е. как сделать программно ожидание?может кроме способа с if есть ещё команды какие? 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
COKPOWEHEU Опубликовано 22 июня, 2014 Поделиться Опубликовано 22 июня, 2014 А аппаратный USART не устраивает? Если надо именно по изменению ноги - ATmega88 удобнее, она умеет генерировать прерывание по такому событию. На обычной m8 можно завести на Int0/Int1/AIN или еще какую переферию, но будет чуть сложнее. Если не нужна особая точность - по таймеру проверяется состояние интересующего вывода, xor'ится с предыдущим (сохраненным в переменной) и, если после xor получилось 1, то состояние изменилось. Недостатки по сравнению с предыдущими методами: требуется лишняя переменная (хотя бы 1 бит) и таймер; достаточно короткое изменение (если оно скакнуло с 0 на 1 и обратно между прерываниями таймера) можно пропустить. 0 Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз. Часть моих наработок. Ссылка на комментарий Поделиться на другие сайты Поделиться
lazudhic Опубликовано 22 июня, 2014 Поделиться Опубликовано 22 июня, 2014 (изменено) А строчку кода подскажите!!! а то я тут мучаюсь пытаюсь while(PINC &(1<<PC0)&PINC &(1<<PC1)) опрос сделать пока всё впустую -как я только логику не пытался прикрутить получаю в студии всё вроде в норме то в протеусе либо проскакивает(не опрашивает) и выплёвывает на светодиоды что все нули либо останавливается и стоит без эмоций не реагирует (я уже осциллограф подключил в протеусе) Изменено 22 июня, 2014 пользователем lazudhic 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Alex Опубликовано 22 июня, 2014 Поделиться Опубликовано 22 июня, 2014 А строчку кода подскажите!!!Строчку ? Вы считаете, что завести таймер, отлавливать внешнее прерывание, проверять состояние входа, и т.д... (всё, написанное COKPOWEHEU'ем) - это всего-лишь одна строчка ? 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
lazudhic Опубликовано 22 июня, 2014 Поделиться Опубликовано 22 июня, 2014 (изменено) #define F_CPU 2000000//ЧАСТОТА ПРОЦЕССОРА #include <avr/io.h> #include <util/delay.h>//библиотека паузы void present(){ DDRB = 0xff;//порт настроен на выход PORTB = 0b00000000;// настройка какая ножка выдаёт 1 а какая 0 DDRC = 0x00;//порт настроен на вход PORTC = 0x3f;// настройка какая ножка втягивующие рзисторы DDRD = 0xff;//порт настроен на выход PORTD = 0b00000000;// настройка какая ножка выдаёт 1 а какая 0 } int main(void) { present();//перейти на vold present while(1)// while(1)-бесконечое повторение { //PORTc = 0b00000001; while(PORTC==0) { } for(int i=0;i<=7;i++)//переменая i= равна от 0 до 7 с шагом 1 { if (PINC&(1<<PC0))//проверка наличия 1 на входе С0 { PORTB =(PORTB << 1);//СДВИНУТЬ сигнал PORTD=~PORTD;//инвертировать сигнал } else//если условие не верно в строке if { PORTB =(PORTB |00000001);//присвоить 1 PORTB =(PORTB << 1);//СДВИНУТЬ символ PORTD=~PORTD;//инвертировать сигнал } _delay_ms(0.0184);//пауза } _delay_ms(500);//пауза } } вот что есть пока ну что теперь скажите!!!!! какую строчку стоит добавить или поменять? Изменено 22 июня, 2014 пользователем Alex Тег CODE 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
COKPOWEHEU Опубликовано 22 июня, 2014 Поделиться Опубликовано 22 июня, 2014 #define F_CPU 2000000//ЧАСТОТА ПРОЦЕССОРАPORTB =(PORTB << 1);//СДВИНУТЬ сигнал Капсом, чтобы контроллер уж точно понял, что от него хотят :-)while(PORTC==0) { } Оно из этого цикла вообще выходит? А то в настройках PORTC=0x3F, а прерывания не разрешены. Или это я чего-то не вижу?while(PINC &(1<<PC0)&PINC &(1<<PC1))А, простите, какой смысл в выражении PINC & PINC ?А строчку кода подскажите!!!В начале программы добавить #include <brain.h>Вы считаете, что всё, написанное COKPOWEHEU'ем - это всего-лишь одна строчка ?Ну, язык позволяет и в одну строчку записать при желании :-)Так-то я привел 4 варианта решения, могу добавить еще пятый, аналогичный использованию таймера - сравнивать состояние ноги с предыдущем не в прерывании, а в бесконечном цикле. Так какой из них Вы пытаетесь реализовать? ну что теперь скажите!!!!! какую строчку стоит добавить или поменять?Звучит как "я уже даже код выложил, хоть теперь сделайте за меня". Наверное, я невнимательно читал код, но так и не понял, какой ножкой Вы пытаетесь принимать UART, PC0 что ли? 0 Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз. Часть моих наработок. Ссылка на комментарий Поделиться на другие сайты Поделиться
lazudhic Опубликовано 22 июня, 2014 Поделиться Опубликовано 22 июня, 2014 Как я уже только не пробовал . ожидается сигнал C0 . как я понимаю необходимо сделать проверку, что на ноге появилась единица. целый день по форумам бегаю гляжу . книжки скачиваю . но там идёт речь о других мк. код частично похож . как сделать типа такого ---- если(сигнал) pc0 неравен 0 то выполнить следующее действие .............если равно 0 то повторить сравнение либо наоборот если рс0 равен 0 повторить цикл сравнения если неравен 0 выполнить действие........смысл одинаковый . но чтоб данное условие ещё и выполнить в протеусе while(сравнение ножки с 0)-если получим 1 цикл запуститься если 0 то........ if pc==1 {выполняем считывание} else {как сделать переход к проверке на оператор if?} 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
kobzar Опубликовано 22 июня, 2014 Поделиться Опубликовано 22 июня, 2014 (изменено) Я даже не стал разбирать код! Я уроки в таком формате не давал! И не собираюсь сидеть и переводить 16-ти ричную систему в десятичную ! Судя по всему ТС проходит какойто другой курс - но у него ничего не получаеться и он просто попросил помощи. Потому что банально тему с юсартом мы вобщене проходили! ТС - не по теме вопрос короче. Задавай его тому у кого обучаешься И в догонку - если бы ты внимательно смотрел уроки - у тебя был бы ответ на вопрос как сделать проверку на состояние сигнала. НО для этого надо понимать регистровые сдвиги которые мы все тут проходили! а учитывая твою манеру записи битов - ты этот урок не проходил. Изменено 22 июня, 2014 пользователем kobraz 0 коплю на мечту - Днепр К750 Ссылка на комментарий Поделиться на другие сайты Поделиться
mvkarp Опубликовано 22 июня, 2014 Поделиться Опубликовано 22 июня, 2014 kobraz, ТС в этой теме - сам admin! 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
kobzar Опубликовано 22 июня, 2014 Поделиться Опубликовано 22 июня, 2014 Чото вальтонул я .... КАРОЧЕ не ТС а lazudhic 0 коплю на мечту - Днепр К750 Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы публикуете как гость. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.