avr управление светодиодами.

Здесь принимаются все самые невообразимые вопросы... Главное - не стесняйтесь. Поверьте, у нас поначалу вопросы были еще глупее :)
Ответить
Родился
Сообщения: 3
Зарегистрирован: Чт янв 10, 2013 14:20:30

Сообщение pawwwel »

Нужно написать программу осуществляющую опрос трех кнопок, нажатие каждой из кнопок назначит выключение светодиода соответствующего цвета. Время выключения каждого светодиода 3 секунды. Нажатие другой кнопки должно обнулять текущее состояние и включать соответствующий выход.
Программа должна реагировать только на замыкание контактов кнопки.
Реклама
Мудрый кот
Аватара пользователя
Сообщения: 1817
Зарегистрирован: Пн ноя 29, 2010 15:58:43

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

а как писать программу без схемЫ? выставляйте схему этого светофора, подскажу по программе
Реклама
Родился
Сообщения: 3
Зарегистрирован: Чт янв 10, 2013 14:20:30

Сообщение pawwwel »

Это условие задачи из контрольной работы и там больше ничего нету. Вы под схемой подразумеваете алгоритм?
Мудрый кот
Аватара пользователя
Сообщения: 1817
Зарегистрирован: Пн ноя 29, 2010 15:58:43

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

алгоритм как раз понятен,
чтобы написать программу надо знать
1. какой контроллер
2. на какие выводы подключены диоды
3. на какие подключены кнопки.

4. какой бюджет данного задания
Реклама
Эиком - электронные компоненты и радиодетали
Родился
Сообщения: 3
Зарегистрирован: Чт мар 28, 2013 17:23:21

Сообщение Yan 39 »

Доброго всем вечера!
0чень хочеться разобраться, как пишуться программы для микроконтроллеров.
Много полазил по нету, но понял очень мало.
Тупо скачать программу и зашить в МК - не проблем.
Хочеться научиться понимать язык программирования.

Вот один пример:


Не знаю прикрепил ли файл или нет.
Вообщем берем Мегу16, через резисторы к порту С - 8 светодиодов - минус.

Задача такая все светотиоды должны загораться поочереди, с 1-го по 8-ой и так по бесконечному кругу.

нашим язвком я понимаю:-----------------------------------------------------язык программирования

1. Надо порт С обозачить как выход. ---------------------------------------DDRC ?
2. Надо на С0 подать высокий уровень, а на остальные низкий --------PORTC 10000000
3. надо выдержать 0,5 сек-----------------------------------------------------?
4. надо на с1 подать высокий уровень, а на остальные низкий----------PORTC 01000000
5. надо выдержать 0,5 сек-----------------------------------------------------?
6. надо на с2 подать высокий уровень, а на остальные низкий----------PORTC 00100000
7. надо выдержать 0,5 сек-----------------------------------------------------?
8. надо на с3 подать высокий уровень, а на остальные низкий----------PORTC 00010000
9. надо выдержать 0,5 сек-----------------------------------------------------?
10. надо на с4 подать высокий уровень, а на остальные низкий---------PORTC 00001000
11. надо выдержать 0,5 сек----------------------------------------------------?
12. надо на с5 подать высокий уровень, а на остальные низкий---------PORTC 00000100
13. надо выдержать 0,5 сек----------------------------------------------------?
14. надо на с6 подать высокий уровень, а на остальные низкий---------PORTC 00000010
15. надо выдержать 0,5 сек ---------------------------------------------------?
16. надо на с7 подать высокий уровень, а на остальные низкий---------PORTC 00000001
17. надо выдержать 0,5 сек ---------------------------------------------------?
18. надо вернуться ко 2-ому шагу---------------------------------------------?


Сильно не пинайте пожалуйста, но мне кажеться так проще будет понимать язык, мне это точно, а может быть и остальным желающим.
Поняв принцип написания такого простого, можно усложнять и усложнять.

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

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

Поняв принцип написания такого простого, можно усложнять и усложнять.
надо скачать прграмму а не HEX прошивку. например все начинают с моргания светодиодом, поняв принцип этого простого действия можно добавлять в эту программку свои изменения. все просто )
И еще - как добавить скриншот?
а добавить скрин еще проще - нажать кнопку обзор, а потом Добавить файл
Реклама
Друг Кота
Сообщения: 13796
Зарегистрирован: Чт сен 20, 2007 14:08:00

Сообщение kalobyte »

Yan 39 писал(а):Поняв принцип написания такого простого, можно усложнять и усложнять.
чтобы усложнять - надо знать язык программирования и особенности программирования контроллеров
твой пример помещается в 3 строчки кода
Yan 39 писал(а):Много полазил по нету, но понял очень мало.
ничего необычного - 95% материала уг
кпд восприятия печатного текста 3-9%
человеческий мозг у неупотрябляющего алкоголь работает на 3%, так что все нормально
нужно затратить прилично времени, пока сам допреш или же найти человека в реале и тогда все пойдет быстрее
тематические ответы только в форуме, в приват не пишите
Родился
Сообщения: 3
Зарегистрирован: Чт мар 28, 2013 17:23:21

Сообщение Yan 39 »

все правильно вы говорите.
поэтому я и обратился сюда с такой просьбой, помочь понять и научить меня (а может и не только меня) писать программы для МК.
в реале найти пока не смог такого человека.
на сколько я понимаю писать программы можно несколькими языками.
1. какой язык для обучения выбрать (легче в обучении).
2. после выбора языка надо знать с чего начинать писать программу.
3. какие функции нужно знать для написания программы.(чтобы было более понятно выбрал МК и несколько светодиодов).
4. если это возможно то например в этой ветке и обучаться задавая спецам вопросы.может выбрать новую тему в форуме, для того чтобы желающие могли в последствии прочитать и также понять принципы написания программ.
5. то что можно написать такой цикл в три строчки я понял , но хотелось бы сначала написать полный цикл а затем в три строчки чтобы понять как это вообще пишется.

так что сильно не пинайте , а если есть возможность и желание помогите мне.
YS
Друг Кота
Аватара пользователя
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05

Сообщение YS »

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

Найдите какую-нибудь классическую книжку по Си. Именно ANSI C, без всяких плюсов и шарпов! С, С++ и C# - разные языки! Почитайте ее. Попишите консольные (чтобы не зацикливаться на GUI, он для МК ни к чему) программы на ПК. Всякие сортировки, калькуляторы, арканоиды и прочее, что пишут новички.

Параллельно изучайте цифровую и аналоговую схемотехнику. По этой теме тоже есть куча книжек. Естесственно, обязательный минимум - учебник физики и Горовиц с Хиллом ("Искусство схемотехники"). Глядите схемы, что попадаются под руку, осиливайте, как они работают.

И обязательно учите технический английский. Без него в электронике делать нечего. Берите даташит на ту же ATmega8, и переводите с техническим словарем. Берите аппноуты от производителей и действуйте так же.

Когда Вы научитесь алгоритмизовать и будете чувствовать себя уверенно в плане схемотехники, можно будет совместить два умения, и тренироваться уже с железом, постигая его специфику. На этом этапе полезно поковырять асемблер для целевого микроконтроллера.

Задавать на форуме вопросы, конечно, можно и нужно. Но перед этим надо самостоятельно разобраться с 95% материала, ибо пересказывать, например, свойства операционных усилителей Вам тут никто не будет - про это и так написаны тонны литературы.

Да, очень желательно найти рядом кого-то, кто разбирается. Причем хорошо бы, чтобы он не только знал сам, но и умел доступно объяснить. Это сильно упростит задачу.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Контактная информация:
Друг Кота
Сообщения: 13796
Зарегистрирован: Чт сен 20, 2007 14:08:00

Сообщение kalobyte »

Yan 39 писал(а):1. какой язык для обучения выбрать (легче в обучении).
нету тут никакого легче, важен синтаксис
я лично не переваривают синтаксис бейсика или паскаля, а кто-то пишет на них и не жалуется
http://www.mikroe.com/ выбери себе семейство контроллеров и компилятор под нужный язык
могу только сказать, что популярны нынче авр и си
Yan 39 писал(а):2. после выбора языка надо знать с чего начинать писать программу.
с мигания светодиодом
это есть в любом обучающем курсе
http://www.youtube.com/watch?v=jbhhINZ7 ... FE73BD1DE1 вот у этого мужика есть примеры с самого нуля
Yan 39 писал(а):3. какие функции нужно знать для написания программы.(чтобы было более понятно выбрал МК и несколько светодиодов).
никаких функций нет
смысл в программировании мк - запись и чтение числ в регистрах самого мк, а так же выставление или чтение 1 или 0 с нужных выводов мк, которые соединены со внешним миром

вот придумай себе алгоритм мигания светодиодом на простом языке и потом дальше по частям пробуй
записал ты в порт 1
сделал паузу
записал в порт 0
сделал паузу
и так в бесконечном цикле

стандартная заготовка для всех прог мк выглядит так
void main (void){

инициализация периферии

while(1){
твой код}
}

готовые стандартные функции есть в си, но для мк их не используют особо
есть готовые библиотеки для работы с внешней периферией или модулями самого мк
например в компиляторах от microe есть удобные библиотеки, которые тебе помогут на начальном уровне
как их использовать - указано в хелпе и примерах
Yan 39 писал(а):4. если это возможно то например в этой ветке и обучаться задавая спецам вопросы.может выбрать новую тему в форуме, для того чтобы желающие могли в последствии прочитать и также понять принципы написания программ.
этот вопрос уже сто раз задавался и надо просто читать статьи, брать и делать
сразу ничего не получится и надо отложить на потом
Yan 39 писал(а):5. то что можно написать такой цикл в три строчки я понял , но хотелось бы сначала написать полный цикл а затем в три строчки чтобы понять как это вообще пишется.
полный цикл и будет в 3 строчки :)))

работа твоего устройства описывается сначала алгоритмом псевдоязыка, как я тебе уже выше сказал
потом тебе надо найти, как на конкретном контроллере выставит 1 или 0 на конкретном выводе
это написано в даташите или в обучалке на этот мк
например в авр за эти операции отвечает регистр PORTx
Yan 39 писал(а):а если есть возможность и желание помогите мне
я тебе расписал все

советую для начала потренироваться просто писаниной консольных прог под виндовс, а то контроллер каждый раз надо шить, а это время занимает

и помни, что не каждый мозг заточен под быдлокодинг
я за 20 лет так и не осилил
не все же могут быть музыкантами и художниками, так и не все могут писать проги
тематические ответы только в форуме, в приват не пишите
Ответить

Вернуться в «Теория»