|
Небольшой проект на AVR, помогите разобраться новичку |
|
|
|
Feb 14 2007, 14:05
|

Группа: Новичок
Сообщений: 2
Регистрация: 14-02-07
Из: Волт №13
Пользователь №: 25 348

|
Доброго времени суток, уважаемые форумчане! Ранее я занимался изготовлением в основном аналоговых устройств, работающих со звуком(усилители, гитарные примочки и т.п.), поэтому опыт есть. Совсем недавно заинтересовался устройствами на микроконтроллерах фирмы Atmel. Успешно повторил несколько простых устройств на основе этих микропроцессоров. И соответственно захотелось разработать собственное устройство. Но, проблема в том, что с программированием у меня туго. В связи с чем и обращаюсь к вам за помощью. Идея проста - управлять с компьютера в реальном времени через микроконтроллер вкл/выкл светодиода. Для этих целей планируется использовать atmega8, порт USB, протокол RS-232(т.е. использовать виртуальный COM порт), всё должно питаться соответственно от USB. Собственно с реализацией аппаратной части проблем нет, но вот прошивку и программу я сам написать не могу  Может есть люди, которые помогут разобраться и обьяснить принципы работы с портами, микроконтроллером, желательно из среды Borland c++. Если это уже обсуждалось на форуме - пните ссылкой, поиск юзал, ничего подходящего не нашёл. Если есть инфа по работе с портами из-под Borland c++(желательно на русском), буду очень благодарен за ссылку. Если что - моё мыло в профиле. Заранее спасибо.
--------------------
War...war never change...
|
|
|
|
|
 |
Ответов
(1 - 11)
|
Feb 14 2007, 15:30
|

developer
   
Группа: Свой
Сообщений: 902
Регистрация: 12-04-06
Из: Казань
Пользователь №: 16 032

|
Цитата(Viper @ Feb 14 2007, 14:05)  Доброго времени суток, уважаемые форумчане! Ранее я занимался изготовлением в основном аналоговых устройств, работающих со звуком(усилители, гитарные примочки и т.п.), поэтому опыт есть. Совсем недавно заинтересовался устройствами на микроконтроллерах фирмы Atmel. Успешно повторил несколько простых устройств на основе этих микропроцессоров. И соответственно захотелось разработать собственное устройство. Но, проблема в том, что с программированием у меня туго. В связи с чем и обращаюсь к вам за помощью. Идея проста - управлять с компьютера в реальном времени через микроконтроллер вкл/выкл светодиода. Для этих целей планируется использовать atmega8, порт USB, протокол RS-232(т.е. использовать виртуальный COM порт), всё должно питаться соответственно от USB. Собственно с реализацией аппаратной части проблем нет, но вот прошивку и программу я сам написать не могу  Может есть люди, которые помогут разобраться и обьяснить принципы работы с портами, микроконтроллером, желательно из среды Borland c++. Если это уже обсуждалось на форуме - пните ссылкой, поиск юзал, ничего подходящего не нашёл. Если есть инфа по работе с портами из-под Borland c++(желательно на русском), буду очень благодарен за ссылку. Если что - моё мыло в профиле. Заранее спасибо. На Borland c++ программы для микроконтроллеров не пишут. Для этого есть специалисированные компиляторы. WinAVR - бесплатный IAR, KEIL, CodeVisionAVR, ImageCraft. Доку по авр посмотри на www.atmel.com, www.atmel.ru Есть раздел в этом форуме, посвященный AVR. Сходи туда.
--------------------
Все может быть и быть все может, и лишь того не может быть-чего уж точно быть не может, хотя..и это может быть.
|
|
|
|
|
Feb 14 2007, 17:03
|

Участник

Группа: Новичок
Сообщений: 31
Регистрация: 31-01-07
Из: Москва
Пользователь №: 24 890

|
Цитата(Viper @ Feb 14 2007, 14:05)  Идея проста - управлять с компьютера в реальном времени... Таже самая ситуация, хотел разобраться с микроконтроллерами, но знакомый с большим стажем в этом деле сказал - оно те нафиг нужно... писать программы для контроллеров на прямую с учетом того что они чуть ли не каждый год меняются это уже прошлый век. Посоветовал сразу развернуть свои стопа в сторону MIPS т.е на сколько я понимаю самодостаточный процессор в который можно грузануть линух и уже от этого плясать, согласитесь на много интересней. Вот теперь собираю информацию по этому направлению
--------------------
Улыбайтесь чаще - это так всех раздражает!
|
|
|
|
|
Feb 15 2007, 07:35
|

Частый гость
 
Группа: Свой
Сообщений: 149
Регистрация: 29-11-06
Из: Барнаул
Пользователь №: 22 916

|
Цитата(gormih @ Feb 15 2007, 00:56)  Скажу по секрету, светодиодом с компа можно управлять использовав всего один транзистор в ключевом режиме :-) Микроконтроллер здесь совершенно ни к чему!
Возьмите простенькую библиотеку для работы скажем с LPT портом, есть огромное число экземплов в сети, на всех известных языках - delphi, visual basic, C++
Подключите ключ (лучше всего полевик) к одному из выводов DATA LPT порта, и передергивая соответствующий бит из простенькой проги - управляйте сколько влезет :-) Видимо человек хочет поработать с усартом, а не оптимизировать задачу.... Есть такая книжка: Агуров П. "практика программирования USB" 2006 г. Дак вот, там все это изложено в доступной форме. Погуглите, думаю найдете
|
|
|
|
|
Feb 15 2007, 18:53
|

Группа: Новичок
Сообщений: 2
Регистрация: 14-02-07
Из: Волт №13
Пользователь №: 25 348

|
Цитата На Borland c++ программы для микроконтроллеров не пишут. На Borland c++ мне надо написать праграмму для компа, а не для контроллера. Цитата хотел разобраться с микроконтроллерами, но знакомый с большим стажем в этом деле сказал - оно те нафиг нужно... писать программы для контроллеров на прямую с учетом того что они чуть ли не каждый год меняются это уже прошлый век. Посоветовал сразу развернуть свои стопа в сторону MIPS т.е на сколько я понимаю самодостаточный процессор в который можно грузануть линух и уже от этого плясать, согласитесь на много интересней Интереснее то оно интереснее, только вот дорого и на порядок сложнее. Очень порадовала фраза "самодостаточный процессор" =) Цитата Скажу по секрету, светодиодом с компа можно управлять использовав всего один транзистор в ключевом режиме Чесно говоря не понял, зачем нужен транзистор, если можно напрямую к лпт подключить и из проги управлять. Цитата Видимо человек хочет поработать с усартом, а не оптимизировать задачу.... Ну хоть кто-то меня понял, мне эта простая схема нужна с целью изучить аспекты управления девайсом с компа. А управлять то я буду не светодиодом, а намного более сложными вещами. Цитата Есть такая книжка: Агуров П. "практика программирования USB" 2006 г. За книгу огромное СПАСИБО, хоть я не собирался работать с юсб, но прочитав решил передумать =)
--------------------
War...war never change...
|
|
|
|
|
Feb 16 2007, 07:47
|
Участник

Группа: Участник
Сообщений: 31
Регистрация: 28-10-06
Из: Новосибирск
Пользователь №: 21 743

|
Добавлю свои 5 капель: Пример программы на С (IAR) для работы с UART: #include <iom8.h> #define Led_on() PORTC |= 0x01 // включение светодиода #define Led_off() PORTC &= ~0x01 // выключение светодиода // Отправка байта // void rs_out(unsigned char byte) { while ( !( UCSRA & (1<<UDRE)) ); UDR = byte; } // Прием байта // unsigned char rs_in(void) { while ( !(UCSRA & (1<<RXC)); return UDR; } // Основная программа // void main(void) { unsigned char d; // инициализация портов DDRC = 0x01; PORTC = 0x00; // PC0 - выход DDRD = 0x02; PORTD = 0x00; // RXD - вход, TXD выход // инициализация UART UBRRH = 0; UBRRL = 51; // скорость 9600 бод для кварца 8МГц USCRB = (1<<RXEN)|(1<<TXEN); // разрешаем прием и передачу UCSRC = (1<<URSEL)|(3<<UCSZ0); // Цикл приема отправки while(1) { d = rs_in(); // Принимаем байт rs_out(~d); // инвертируем и отправляем (для наглядности) if (d == 0x10) Led_on(); // пришло 0x10 - зажигаем if (d == 0x20) Led_off(); // пришло 0x20 - гасим } } Писал по памяти, но должно работать. Если что-то не так, сообщите, будем править Схемотехника: - на PC.0 контроллера вешаем светодиод ч/з резистор 560 Ом на землю - ноги PD.0, PD.1 (RXD и TXD) ч/з преобразователь уровней TTL-RS-232 (типа AD202) к компьютеру - кварц 8МГц (можно internal RC-osc с той же частотой) На копьютере удобно использовать программу типа ComPortToolkit (кажется так) для отправки и приема байтов. Ну и удачи конечно же. Вопросы - обращайтесь.
|
|
|
|
|
Mar 10 2007, 03:03
|
Группа: Новичок
Сообщений: 2
Регистрация: 9-03-07
Пользователь №: 26 010

|
ого. ну и понаписали тута. 1. единственное что по теме - это программа для меги8. 2. контроллер centronics далеко не 2ма выдает (и не такое вешали). 3. Книгу по юсб человеку не надо - он прямо сказал, что будет использовать виртуальный ком-порт. 4. MIPS это аббривеатура выполнения миллионов инструкций за секунду. и отношения к "самодостаточным" процам не имеет. скорее имелось в виду ARM (если линух вешать). а теперь отсебятины: в гугле ищешь компонент для ком-порта для с++. (обычно имеет название: ComPort, ComPort32, CPDrv, Comm32 и т.д.). Обычно также включают в себя демо-прогу.) Устанавливаешь компонент, запускаешь эту демо-прогу (с настройками разберешся). все, пихаешь в мегу прогу birdena и вперед. Настройки - одинаковые для проца и компа битрейты, стоповые биты, четность... и такое остальное. НО! если это первое в жизни знакомство с контроллерами - то это слишком резкая нагрузка.
|
|
|
|
|
Mar 10 2007, 09:57
|
Гуру
     
Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823

|
Цитата(vova8211 @ Mar 10 2007, 04:03)  НО! если это первое в жизни знакомство с контроллерами - то это слишком резкая нагрузка.  Согласен. Для начала нужно упростить задачу - научить светодиод, подключенный к микроконтроллеру, просто моргать. Это будет хорошим тестом. Тогда время, необходимое для подключенного таинственного прибора MIPS под LINUX будет равно этому времени, умноженному на 100-200. Если уйдет неделя на моргание, то получится два-четыре года. С учетом того что в институте учат 5 лет, вполне реально, если девушками не увлекаться.
--------------------
Уходя, оставьте свет...
|
|
|
|
|
Mar 12 2007, 00:54
|

Участник

Группа: Новичок
Сообщений: 59
Регистрация: 11-03-07
Пользователь №: 26 057

|
Раз начинающий, то прямая дорога в интернет, идея тут не с светодиоде , как , многие поняли... идея именно научится АВРки програмить и с компа управлять... Dog Pawlowa правильно сказал, для начали посто запрограмь на моргание, а подключить АВРку к компу через LPT COM а сейчас и USB не составляет труда, схем куча , как любительских как и проффффф.. И еще если человек собрался сразу и АВР и C++ к нему изучать, то это только респект и уважуха, посмотрим может мы еще будем ему программы заказывать!!!
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|