Viper 0 14 февраля, 2007 Опубликовано 14 февраля, 2007 · Жалоба Доброго времени суток, уважаемые форумчане! Ранее я занимался изготовлением в основном аналоговых устройств, работающих со звуком(усилители, гитарные примочки и т.п.), поэтому опыт есть. Совсем недавно заинтересовался устройствами на микроконтроллерах фирмы Atmel. Успешно повторил несколько простых устройств на основе этих микропроцессоров. И соответственно захотелось разработать собственное устройство. Но, проблема в том, что с программированием у меня туго. В связи с чем и обращаюсь к вам за помощью. Идея проста - управлять с компьютера в реальном времени через микроконтроллер вкл/выкл светодиода. Для этих целей планируется использовать atmega8, порт USB, протокол RS-232(т.е. использовать виртуальный COM порт), всё должно питаться соответственно от USB. Собственно с реализацией аппаратной части проблем нет, но вот прошивку и программу я сам написать не могу :( Может есть люди, которые помогут разобраться и обьяснить принципы работы с портами, микроконтроллером, желательно из среды Borland c++. Если это уже обсуждалось на форуме - пните ссылкой, поиск юзал, ничего подходящего не нашёл. Если есть инфа по работе с портами из-под Borland c++(желательно на русском), буду очень благодарен за ссылку. Если что - моё мыло в профиле. Заранее спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 42 14 февраля, 2007 Опубликовано 14 февраля, 2007 · Жалоба Доброго времени суток, уважаемые форумчане! Ранее я занимался изготовлением в основном аналоговых устройств, работающих со звуком(усилители, гитарные примочки и т.п.), поэтому опыт есть. Совсем недавно заинтересовался устройствами на микроконтроллерах фирмы 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. Сходи туда. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
wraven 0 14 февраля, 2007 Опубликовано 14 февраля, 2007 · Жалоба Идея проста - управлять с компьютера в реальном времени... Таже самая ситуация, хотел разобраться с микроконтроллерами, но знакомый с большим стажем в этом деле сказал - оно те нафиг нужно... писать программы для контроллеров на прямую с учетом того что они чуть ли не каждый год меняются это уже прошлый век. Посоветовал сразу развернуть свои стопа в сторону MIPS т.е на сколько я понимаю самодостаточный процессор в который можно грузануть линух и уже от этого плясать, согласитесь на много интересней. Вот теперь собираю информацию по этому направлению :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gormih 0 15 февраля, 2007 Опубликовано 15 февраля, 2007 · Жалоба Скажу по секрету, светодиодом с компа можно управлять использовав всего один транзистор в ключевом режиме :-) Микроконтроллер здесь совершенно ни к чему! Возьмите простенькую библиотеку для работы скажем с LPT портом, есть огромное число экземплов в сети, на всех известных языках - delphi, visual basic, C++ Подключите ключ (лучше всего полевик) к одному из выводов DATA LPT порта, и передергивая соответствующий бит из простенькой проги - управляйте сколько влезет :-) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Screw 0 15 февраля, 2007 Опубликовано 15 февраля, 2007 · Жалоба Скажу по секрету, светодиодом с компа можно управлять использовав всего один транзистор в ключевом режиме :-) Микроконтроллер здесь совершенно ни к чему! Возьмите простенькую библиотеку для работы скажем с LPT портом, есть огромное число экземплов в сети, на всех известных языках - delphi, visual basic, C++ Подключите ключ (лучше всего полевик) к одному из выводов DATA LPT порта, и передергивая соответствующий бит из простенькой проги - управляйте сколько влезет :-) Видимо человек хочет поработать с усартом, а не оптимизировать задачу.... Есть такая книжка: Агуров П. "практика программирования USB" 2006 г. Дак вот, там все это изложено в доступной форме. Погуглите, думаю найдете Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Viper 0 15 февраля, 2007 Опубликовано 15 февраля, 2007 · Жалоба На Borland c++ программы для микроконтроллеров не пишут. На Borland c++ мне надо написать праграмму для компа, а не для контроллера. хотел разобраться с микроконтроллерами, но знакомый с большим стажем в этом деле сказал - оно те нафиг нужно... писать программы для контроллеров на прямую с учетом того что они чуть ли не каждый год меняются это уже прошлый век. Посоветовал сразу развернуть свои стопа в сторону MIPS т.е на сколько я понимаю самодостаточный процессор в который можно грузануть линух и уже от этого плясать, согласитесь на много интересней Интереснее то оно интереснее, только вот дорого и на порядок сложнее. Очень порадовала фраза "самодостаточный процессор" =) Скажу по секрету, светодиодом с компа можно управлять использовав всего один транзистор в ключевом режиме Чесно говоря не понял, зачем нужен транзистор, если можно напрямую к лпт подключить и из проги управлять. Видимо человек хочет поработать с усартом, а не оптимизировать задачу.... Ну хоть кто-то меня понял, мне эта простая схема нужна с целью изучить аспекты управления девайсом с компа. А управлять то я буду не светодиодом, а намного более сложными вещами. Есть такая книжка: Агуров П. "практика программирования USB" 2006 г. За книгу огромное СПАСИБО, хоть я не собирался работать с юсб, но прочитав решил передумать =) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VXDRV 0 15 февраля, 2007 Опубликовано 15 февраля, 2007 (изменено) · Жалоба По моему книга Агурова немного не по теме. USB - отдельная песня. Есть книги по AVR - у нас в Караганде даже такие есть в политехе и даже по ATMega там про ассемблер чего-то было (комманды точно) где б их в электронке взять (PIC-ами занимаюсь но и всторону AVR одним глазом посматриваю). Посмотрю автора если интересно и напишу. А ещё в электронке по С есть чего-то - по AVR. Изменено 15 февраля, 2007 пользователем VXDRV Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Birden 0 16 февраля, 2007 Опубликовано 16 февраля, 2007 · Жалоба Добавлю свои 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 (кажется так) для отправки и приема байтов. Ну и удачи конечно же. Вопросы - обращайтесь. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
upc2 0 16 февраля, 2007 Опубликовано 16 февраля, 2007 · Жалоба <<Чесно говоря не понял, зачем нужен транзистор, если можно напрямую к лпт подключить и из проги управлять>> Сожгете порт.Выходной ток LPT около 2 mA. Номинальный ток светодиода (тех, которые под рукой валяются ) около 10mA. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vova8211 0 10 марта, 2007 Опубликовано 10 марта, 2007 · Жалоба ого. ну и понаписали тута. 1. единственное что по теме - это программа для меги8. :) 2. контроллер centronics далеко не 2ма выдает (и не такое вешали). 3. Книгу по юсб человеку не надо - он прямо сказал, что будет использовать виртуальный ком-порт. 4. MIPS это аббривеатура выполнения миллионов инструкций за секунду. и отношения к "самодостаточным" процам не имеет. скорее имелось в виду ARM (если линух вешать). а теперь отсебятины: в гугле ищешь компонент для ком-порта для с++. (обычно имеет название: ComPort, ComPort32, CPDrv, Comm32 и т.д.). Обычно также включают в себя демо-прогу.) Устанавливаешь компонент, запускаешь эту демо-прогу (с настройками разберешся). все, пихаешь в мегу прогу birdena и вперед. Настройки - одинаковые для проца и компа битрейты, стоповые биты, четность... и такое остальное. НО! если это первое в жизни знакомство с контроллерами - то это слишком резкая нагрузка. :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DogPawlowa 0 10 марта, 2007 Опубликовано 10 марта, 2007 · Жалоба НО! если это первое в жизни знакомство с контроллерами - то это слишком резкая нагрузка. :) Согласен. Для начала нужно упростить задачу - научить светодиод, подключенный к микроконтроллеру, просто моргать. Это будет хорошим тестом. Тогда время, необходимое для подключенного таинственного прибора MIPS под LINUX будет равно этому времени, умноженному на 100-200. Если уйдет неделя на моргание, то получится два-четыре года. С учетом того что в институте учат 5 лет, вполне реально, если девушками не увлекаться. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
L00b6 0 12 марта, 2007 Опубликовано 12 марта, 2007 · Жалоба Раз начинающий, то прямая дорога в интернет, идея тут не с светодиоде , как , многие поняли... идея именно научится АВРки програмить и с компа управлять... Dog Pawlowa правильно сказал, для начали посто запрограмь на моргание, а подключить АВРку к компу через LPT COM а сейчас и USB не составляет труда, схем куча , как любительских как и проффффф.. И еще если человек собрался сразу и АВР и C++ к нему изучать, то это только респект и уважуха, посмотрим может мы еще будем ему программы заказывать!!! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться