Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Небольшой проект на AVR
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему
Viper
Доброго времени суток, уважаемые форумчане!

Ранее я занимался изготовлением в основном аналоговых устройств, работающих со звуком(усилители, гитарные примочки и т.п.), поэтому опыт есть. Совсем недавно заинтересовался устройствами на микроконтроллерах фирмы Atmel. Успешно повторил несколько простых устройств на основе этих микропроцессоров. И соответственно захотелось разработать собственное устройство. Но, проблема в том, что с программированием у меня туго. В связи с чем и обращаюсь к вам за помощью.

Идея проста - управлять с компьютера в реальном времени через микроконтроллер вкл/выкл светодиода. Для этих целей планируется использовать atmega8, порт USB, протокол RS-232(т.е. использовать виртуальный COM порт), всё должно питаться соответственно от USB.
Собственно с реализацией аппаратной части проблем нет, но вот прошивку и программу я сам написать не могу sad.gif
Может есть люди, которые помогут разобраться и обьяснить принципы работы с портами, микроконтроллером, желательно из среды Borland c++.

Если это уже обсуждалось на форуме - пните ссылкой, поиск юзал, ничего подходящего не нашёл.
Если есть инфа по работе с портами из-под Borland c++(желательно на русском), буду очень благодарен за ссылку.

Если что - моё мыло в профиле.

Заранее спасибо.
dimka76
Цитата(Viper @ Feb 14 2007, 14:05) *
Доброго времени суток, уважаемые форумчане!

Ранее я занимался изготовлением в основном аналоговых устройств, работающих со звуком(усилители, гитарные примочки и т.п.), поэтому опыт есть. Совсем недавно заинтересовался устройствами на микроконтроллерах фирмы Atmel. Успешно повторил несколько простых устройств на основе этих микропроцессоров. И соответственно захотелось разработать собственное устройство. Но, проблема в том, что с программированием у меня туго. В связи с чем и обращаюсь к вам за помощью.

Идея проста - управлять с компьютера в реальном времени через микроконтроллер вкл/выкл светодиода. Для этих целей планируется использовать atmega8, порт USB, протокол RS-232(т.е. использовать виртуальный COM порт), всё должно питаться соответственно от USB.
Собственно с реализацией аппаратной части проблем нет, но вот прошивку и программу я сам написать не могу sad.gif
Может есть люди, которые помогут разобраться и обьяснить принципы работы с портами, микроконтроллером, желательно из среды Borland c++.

Если это уже обсуждалось на форуме - пните ссылкой, поиск юзал, ничего подходящего не нашёл.
Если есть инфа по работе с портами из-под Borland c++(желательно на русском), буду очень благодарен за ссылку.

Если что - моё мыло в профиле.

Заранее спасибо.


На Borland c++ программы для микроконтроллеров не пишут.
Для этого есть специалисированные компиляторы.
WinAVR - бесплатный
IAR, KEIL, CodeVisionAVR, ImageCraft.
Доку по авр посмотри на www.atmel.com, www.atmel.ru
Есть раздел в этом форуме, посвященный AVR. Сходи туда.
Wraven
Цитата(Viper @ Feb 14 2007, 14:05) *
Идея проста - управлять с компьютера в реальном времени...



Таже самая ситуация, хотел разобраться с микроконтроллерами, но знакомый с большим стажем в этом деле сказал - оно те нафиг нужно... писать программы для контроллеров на прямую с учетом того что они чуть ли не каждый год меняются это уже прошлый век. Посоветовал сразу развернуть свои стопа в сторону MIPS т.е на сколько я понимаю самодостаточный процессор в который можно грузануть линух и уже от этого плясать, согласитесь на много интересней. Вот теперь собираю информацию по этому направлению smile.gif
gormih
Скажу по секрету, светодиодом с компа можно управлять использовав всего один транзистор в ключевом режиме :-) Микроконтроллер здесь совершенно ни к чему!

Возьмите простенькую библиотеку для работы скажем с LPT портом, есть огромное число экземплов в сети, на всех известных языках - delphi, visual basic, C++

Подключите ключ (лучше всего полевик) к одному из выводов DATA LPT порта, и передергивая соответствующий бит из простенькой проги - управляйте сколько влезет :-)
Screw
Цитата(gormih @ Feb 15 2007, 00:56) *
Скажу по секрету, светодиодом с компа можно управлять использовав всего один транзистор в ключевом режиме :-) Микроконтроллер здесь совершенно ни к чему!

Возьмите простенькую библиотеку для работы скажем с LPT портом, есть огромное число экземплов в сети, на всех известных языках - delphi, visual basic, C++

Подключите ключ (лучше всего полевик) к одному из выводов DATA LPT порта, и передергивая соответствующий бит из простенькой проги - управляйте сколько влезет :-)


Видимо человек хочет поработать с усартом, а не оптимизировать задачу....

Есть такая книжка: Агуров П. "практика программирования USB" 2006 г.
Дак вот, там все это изложено в доступной форме. Погуглите, думаю найдете
Viper
Цитата
На Borland c++ программы для микроконтроллеров не пишут.

На Borland c++ мне надо написать праграмму для компа, а не для контроллера.
Цитата
хотел разобраться с микроконтроллерами, но знакомый с большим стажем в этом деле сказал - оно те нафиг нужно... писать программы для контроллеров на прямую с учетом того что они чуть ли не каждый год меняются это уже прошлый век. Посоветовал сразу развернуть свои стопа в сторону MIPS т.е на сколько я понимаю самодостаточный процессор в который можно грузануть линух и уже от этого плясать, согласитесь на много интересней

Интереснее то оно интереснее, только вот дорого и на порядок сложнее. Очень порадовала фраза "самодостаточный процессор" =)
Цитата
Скажу по секрету, светодиодом с компа можно управлять использовав всего один транзистор в ключевом режиме

Чесно говоря не понял, зачем нужен транзистор, если можно напрямую к лпт подключить и из проги управлять.
Цитата
Видимо человек хочет поработать с усартом, а не оптимизировать задачу....

Ну хоть кто-то меня понял, мне эта простая схема нужна с целью изучить аспекты управления девайсом с компа. А управлять то я буду не светодиодом, а намного более сложными вещами.
Цитата
Есть такая книжка: Агуров П. "практика программирования USB" 2006 г.

За книгу огромное СПАСИБО, хоть я не собирался работать с юсб, но прочитав решил передумать =)
VXDRV
По моему книга Агурова немного не по теме. USB - отдельная песня.
Есть книги по AVR - у нас в Караганде даже такие есть в политехе и даже по ATMega там про ассемблер чего-то было (комманды точно) где б их в электронке взять (PIC-ами занимаюсь но и всторону AVR одним глазом посматриваю). Посмотрю автора если интересно и напишу. А ещё в электронке по С есть чего-то - по AVR.
birden
Добавлю свои 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 - гасим
}
}

Писал по памяти, но должно работать. Если что-то не так, сообщите, будем править smile.gif

Схемотехника:
- на PC.0 контроллера вешаем светодиод ч/з резистор 560 Ом на землю
- ноги PD.0, PD.1 (RXD и TXD) ч/з преобразователь уровней TTL-RS-232 (типа AD202) к компьютеру
- кварц 8МГц (можно internal RC-osc с той же частотой)

На копьютере удобно использовать программу типа ComPortToolkit (кажется так) для отправки и приема байтов.
Ну и удачи конечно же. Вопросы - обращайтесь.
upc2
<<Чесно говоря не понял, зачем нужен транзистор, если можно напрямую к лпт подключить и из проги управлять>>

Сожгете порт.Выходной ток LPT около 2 mA. Номинальный ток светодиода (тех, которые под рукой валяются ) около 10mA.
vova8211
ого. ну и понаписали тута.

1. единственное что по теме - это программа для меги8. smile.gif

2. контроллер centronics далеко не 2ма выдает (и не такое вешали).
3. Книгу по юсб человеку не надо - он прямо сказал, что будет использовать виртуальный ком-порт.
4. MIPS это аббривеатура выполнения миллионов инструкций за секунду. и отношения к "самодостаточным" процам не имеет. скорее имелось в виду ARM (если линух вешать).

а теперь отсебятины:
в гугле ищешь компонент для ком-порта для с++. (обычно имеет название: ComPort, ComPort32, CPDrv, Comm32 и т.д.). Обычно также включают в себя демо-прогу.) Устанавливаешь компонент, запускаешь эту демо-прогу (с настройками разберешся). все, пихаешь в мегу прогу birdena и вперед.
Настройки - одинаковые для проца и компа битрейты, стоповые биты, четность... и такое остальное.

НО! если это первое в жизни знакомство с контроллерами - то это слишком резкая нагрузка. smile.gif
Dog Pawlowa
Цитата(vova8211 @ Mar 10 2007, 04:03) *
НО! если это первое в жизни знакомство с контроллерами - то это слишком резкая нагрузка. smile.gif


Согласен. Для начала нужно упростить задачу - научить светодиод, подключенный к микроконтроллеру, просто моргать. Это будет хорошим тестом. Тогда время, необходимое для подключенного таинственного прибора MIPS под LINUX будет равно этому времени, умноженному на 100-200. Если уйдет неделя на моргание, то получится два-четыре года. С учетом того что в институте учат 5 лет, вполне реально, если девушками не увлекаться.
L00b6
Раз начинающий, то прямая дорога в интернет, идея тут не с светодиоде , как , многие поняли... идея именно научится АВРки програмить и с компа управлять... Dog Pawlowa правильно сказал, для начали посто запрограмь на моргание, а подключить АВРку к компу через LPT COM а сейчас и USB не составляет труда, схем куча , как любительских как и проффффф.. И еще если человек собрался сразу и АВР и C++ к нему изучать, то это только респект и уважуха, посмотрим может мы еще будем ему программы заказывать!!!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.