Перейти к содержанию
    

Небольшой проект на AVR

Доброго времени суток, уважаемые форумчане!

 

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

 

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

Собственно с реализацией аппаратной части проблем нет, но вот прошивку и программу я сам написать не могу :(

Может есть люди, которые помогут разобраться и обьяснить принципы работы с портами, микроконтроллером, желательно из среды Borland c++.

 

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

Если есть инфа по работе с портами из-под Borland c++(желательно на русском), буду очень благодарен за ссылку.

 

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Доброго времени суток, уважаемые форумчане!

 

Ранее я занимался изготовлением в основном аналоговых устройств, работающих со звуком(усилители, гитарные примочки и т.п.), поэтому опыт есть. Совсем недавно заинтересовался устройствами на микроконтроллерах фирмы 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. Сходи туда.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Идея проста - управлять с компьютера в реальном времени...

 

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Скажу по секрету, светодиодом с компа можно управлять использовав всего один транзистор в ключевом режиме :-) Микроконтроллер здесь совершенно ни к чему!

 

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Скажу по секрету, светодиодом с компа можно управлять использовав всего один транзистор в ключевом режиме :-) Микроконтроллер здесь совершенно ни к чему!

 

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

 

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

 

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

 

Есть такая книжка: Агуров П. "практика программирования USB" 2006 г.

Дак вот, там все это изложено в доступной форме. Погуглите, думаю найдете

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

На Borland c++ программы для микроконтроллеров не пишут.

На Borland c++ мне надо написать праграмму для компа, а не для контроллера.

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

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

Скажу по секрету, светодиодом с компа можно управлять использовав всего один транзистор в ключевом режиме

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

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

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

Есть такая книжка: Агуров П. "практика программирования USB" 2006 г.

За книгу огромное СПАСИБО, хоть я не собирался работать с юсб, но прочитав решил передумать =)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

По моему книга Агурова немного не по теме. USB - отдельная песня.

Есть книги по AVR - у нас в Караганде даже такие есть в политехе и даже по ATMega там про ассемблер чего-то было (комманды точно) где б их в электронке взять (PIC-ами занимаюсь но и всторону AVR одним глазом посматриваю). Посмотрю автора если интересно и напишу. А ещё в электронке по С есть чего-то - по AVR.

Изменено пользователем VXDRV

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Добавлю свои 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 (кажется так) для отправки и приема байтов.

Ну и удачи конечно же. Вопросы - обращайтесь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

<<Чесно говоря не понял, зачем нужен транзистор, если можно напрямую к лпт подключить и из проги управлять>>

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ого. ну и понаписали тута.

 

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

 

2. контроллер centronics далеко не 2ма выдает (и не такое вешали).

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

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

 

а теперь отсебятины:

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

Настройки - одинаковые для проца и компа битрейты, стоповые биты, четность... и такое остальное.

 

НО! если это первое в жизни знакомство с контроллерами - то это слишком резкая нагрузка. :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

НО! если это первое в жизни знакомство с контроллерами - то это слишком резкая нагрузка. :)

 

Согласен. Для начала нужно упростить задачу - научить светодиод, подключенный к микроконтроллеру, просто моргать. Это будет хорошим тестом. Тогда время, необходимое для подключенного таинственного прибора MIPS под LINUX будет равно этому времени, умноженному на 100-200. Если уйдет неделя на моргание, то получится два-четыре года. С учетом того что в институте учат 5 лет, вполне реально, если девушками не увлекаться.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...