Главная » Статьи » Программирование

В разделе материалов: 22
Показано материалов: 11-20
Страницы: « 1 2 3 »

   На нашем контроллере есть микросхема L293D, вот её та мы сейчас и задействуем. Подключим один мотор к ней на выводы M1. In1 на PD2, In2 на PD3 и En1 на PD4. При таком подключение мы сможем управлять скоростью моторов, если это не требуется, то вывод En1 нужно подключить на +5 вольт. Пишем программу:

Code
$regfile = "m16def.dat"                                     ' файл спецификации Меги16
$crystal = 16000000                                         ' указываем на какой частоте будем работать

'----------------------------------------------------------------------------
Config Timer1 = Pwm , Pwm = 8 , Prescale = 256 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down
Config Pind.2 = Output : R Alias Portd.2                    'ногу сконфигурировали как выход и обозвали R
Config Pind.3 = Output : L Alias Portd.3                    'ногу сконфигурировали как выход и обозвали L
Config Pind.4 = Output                                      'ногу ШИМа  сконфигурировали как выход
'----------------------------------------------------------------------------
Dim Speed As Byte

Speed = 80                                                  ' задаём скорость мотору

Do
  R = 1 : Pwm1b = Speed                                     'вращаем в одну сторону 3 секунды
  Wait 3

  R = 0 : Pwm1b = 0                                         'остановка мотора на 3 секунды
  L = 0 : Pwm1b = 0
  Wait 3

  L = 1 : Pwm1b = Speed                                     'вращаем в другую сторону 3 секунды
  Wait 3

  R = 0 : Pwm1b = 0                                         'остановка мотора на 3 секунды
  L = 0 : Pwm1b = 0
  Wait 3
Loop
Программирование в BascomAVR | Просмотров: 1991 | Автор: Кирилл | Добавил: Space | Дата: 31.01.2011 | Комментарии (0)


Для управления сервой воспользуемся циклом For. Сервопривод возьмём HXT12K. Подключаем на PD0. Лучше всего использовать отдельное питание для сервопривод. чтоб избежать помех. Подключаем питание на Jmp1, и переставляем перемычку рядом.

   Характеристика к сервоприводу:
  • Размер : 40.7x19.7x42.9 мм
  • Напряжение : 5~7в
  • Вес: 55г (паспорт), 63г по факту
  • Скорость вращения : 0.16 сек/60° (4.8в)
  • Усилие : 10 кгс*см
  • Рабочий ход: ~ +\- 60-65°
  • Тип : Цифровой
  • Модификация под постоянное вращение: Возможна!


   Основой управления конструкцией FOR...NEXT служит изменение указанной переменной от начального до конечного значения.
Синтаксис конструкции:
Программирование в BascomAVR | Просмотров: 2229 | Автор: Кирилл | Добавил: Space | Дата: 31.01.2011 | Комментарии (4)

Чтобы подключить данный дальномер. нам потребуется ацп. Как с ним работать я уже рассказывал в статье "Тестируем АЦП на контроллере". Поэтому заострять внимания на ацп не будем. Лучше расскажу о дальномерах. Дальномеры предоставляют данные о расстояние(определение расстояния до объекта) или могут использоваться как датчик для определения препятствия. Коротенько о их работе:

   Для определения расстояния либо просто наличия объекта в поле зрения сенсора используется метод триангуляции и малая линейная CCD матрица. Основная идея в следующем. Импульсы ИК излучения испускаются излучателем. Это излучение распространяется и отражается от обьектов находящихся в поле зрения сенсора. Отраженное излучение возвращается на приемник. Испускаемый и отраженный лучи образуют треугольник «излучатель — обьект отражения — приемник». Угол отражения напрямую зависит от расстояния до обьекта. Полученные отраженные импульсы собираются высококачественной линзой и передаются на линейную CCD матрицу. По засветке определенного участка CCD матрицы определяется угол отражения и высчитывается растояние до обьекта. Этот метод более защищен от эффектов интерференции излучения и разной отражающей способности поверхностей, выполненных из различных материалов и окрашенных в различные цвета. Например, стало возможно определение черной стены при ярком освещении. Если надо будет узнать о дальномерах более подробно, то поищите по интернету.

Программирование в BascomAVR | Просмотров: 2235 | Автор: Кирилл | Добавил: Space | Дата: 30.01.2011 | Комментарии (0)

   Очень часто необходимо увидеть не которые показания датчиков. И чтобы их вывести можно воспользоваться двумя способами. Это вывод данных на пк через UART или на жк-дисплей. В этой статье рассмотрим вывод информации на жк-дисплей. Возьмём PC2004LRS-ANH-B-Q (4х20- что означает 4 строки по 20 символов). Воспользуемся модулем на котором уже разведён разъём(Jmp5) под жк-дисплей. Подключение осуществляется по 4-х битной схеме, таким образом мы экономим 4 вывода порта микроконтроллера. Для настройки чёткого отображения символов на экране, крутим подстроечный резистор R10.

   Схема подключения:



    Кратко перечислим основные команды CV AVR для работы c текстовыми дисплеями…

    Для начала в программе определяем куда будем подключать дисплей:

Code
#asm
   .equ __lcd_port=0x18 ;PORTB   // Подключаем дисплей к выходам PORTB
#endasm


Программирование в CV AVR | Просмотров: 3332 | Автор: Кирилл | Добавил: Space | Дата: 24.01.2011 | Комментарии (0)

Немного об АЦП 

   В результате работы АЦП-(аналого-цифровой преобразователь), из физической величины «напряжение» (не пригодной для цифровой обработки) мы получим некое число, которое будет характеризовать наше напряжение. Напряжение, которое подается на АЦП, как правило, лежит в определенном диапазоне (от 0 до положительной величины), например 0-5В. (На этапе разработки схемы, или на этапе программирования этот диапазон устанавливается) Задача АЦП «рассказать» программе о положении нашей величины в этом диапазоне. Для этого весь диапазон разбивается на большое число одинаковых «ступенек». Если АЦП 8-ми разрядное, то таких ступенек будет 256, если 10-ти разрядное, то 1024. Величина напряжения, которое мы измеряем, с некоторой точностью обязательно попадет на какую-нибудь «ступеньку». И номер этой ступеньки АЦП передаст программе для дальнейшей обработки.



    Задать диапазон можно, подавая напряжение сравнения (максимальное для диапазона) на один из выводов микроконтроллера (AREF или AVCC), также можно задействовать внутренний источник напряжения сравнения микроконтроллера. На этапе программирования будет необходимо указать, с чем будет сравниваться сигнал (AREF, AVCC или internal).
Программирование в BascomAVR | Просмотров: 2107 | Автор: Кирилл | Добавил: Space | Дата: 24.01.2011 | Комментарии (0)

   Частенько бывает так, что нам требуется подключить контроллер к компьютеру с целью отладки программы, считывание данных с подключённых к контроллеру датчиков, управление и контроль по средствам компьютера. В этом случаи используется либо COM-порт он же протокол RS232 или USB-UART на микросхеме FT232RL вот его та мы и будем использовать, т. к. com-порты щас уже особо не встречаются. FT232RL является новым устройством среди интегральных схем для работы FTDI и USB UART интерфейса. Внутренний таймер счётчик (6 МГц, 12 МГц, 24 МГц и 48МГц) может быть выведен из устройства и используется для управления микроконтроллера или внешней логики, уникальный номер (ID-FTDIChip ™) может быть прочитан через USB, и таким образом формирует безопасный ключ, который может быть использован для защиты программного обеспечения клиента приложения от копирования.



    Теперь о программной части. Распишу только те команды, которые будут применяться в нашей программе. Все остальные команды можно посмотреть на официальном сайте Bascom AVR.

    $BAUD - глобальная установка скорости информационного обмена UART
    INPUT - ввод данных различных форматов.
    PPINT - отправить данные

   Команда $BAUD

   Синтаксис команды -  $BAUD = var    


Программирование в BascomAVR | Просмотров: 2467 | Автор: Кирилл | Добавил: Space | Дата: 24.01.2011 | Комментарии (5)

CV AVR

   CodeVisionAVR - это кросс-компилятор Си, интегрированная среда разработки и автоматический генератор программ, разработанные для семейства AVR-мк-ов Atmel. Обеспечивает выполнение почти всех элементов языка Си, которые разрешены архитектурой AVR, с некоторыми добавленными характеристиками, которые реализуют преимущество специфики архитектуры AVR.



   Кроме стандартных библиотек Си, компилятор Си CodeVisionAVR имеет библиотеки для:
  • алфавитно-цифровых LCD-модулей;
  • шины I2C
  • температурного датчика LM75
  • часов реального времени PCF8563, PCF8583, DS1302, DS1307
  • протокола 1-wire
  • температурного датчика DS1820/DS18S20
  • термометра/термостата DS1621
  • SPI
  • и т.д.

Программирование в CV AVR | Просмотров: 4487 | Автор: Кирилл | Добавил: Space | Дата: 23.01.2011 | Комментарии (0)

   Очень часто необходимо увидеть не которые показания датчиков. И чтобы их вывести можно воспользоваться двумя способами. Это вывод данных на пк через UART или на жк-дисплей. В этой статье рассмотрим вывод информации на жк-дисплей. Возьмём PC2004LRS-ANH-B-Q (4х20- что означает 4 строки по 20 символов). Воспользуемся модулем на котором уже разведён разъём(Jmp5) под жк-дисплей. Подключение осуществляется по 4-х битной схеме, таким образом мы экономим 4 вывода порта микроконтроллера.

   Схема подключения:



Кратко перечислим основные команды BASCOM AVR для работы c текстовыми дисплеями…

   Для начала в программе подключаем библиотеку для дисплея:

Code
$lib "lcd4.lbx"  'используем 4-битное подключение дисплея с помощью альтернативной библиотеки

    Далее определяем выводы на, которые будем подключать дисплей:

Config Lcdpin - конфигурируем подключение дисплея к выводам портов МК
Config Lcd - указываем какой именно дисплей подключён (кол-во символов и строк)
Программирование в BascomAVR | Просмотров: 2507 | Автор: Кирилл | Добавил: Space | Дата: 23.01.2011 | Комментарии (1)

   Мы уже с вами рассмотрели простой пример программы моргания светодиодом в BascomAVR. Теперь давайте разберёмся подробно как настраивать порты ввода/вывода мк более точно. Для примера, попробуем подключить кнопку. Берём наш контроллер+модуль к нему. На нём уже есть 2 кнопки. Задействуем и ту и другую. Опять же написав пару программ.

   Рассмотрим структуру мк. Порт имеете три части:

  • DDRx - регистр направления передачи данных - определяет, является тот или иной вывод порта входам или выходом; если некоторый разряд регистра DDRx содержит логический 0, то соответствующий вывод порта сконфигурирован как вход, в противном случаи - как выход;
  • PORTx - регистр порта - если вывод выполняет роль выхода, то в соответствующий разряд записывается значение, предназначенное для вывода; если вывод выполняет роль входа, то логический 0 в некотором разряде регистра PORTx соответствует высокоомный вход, а логическая 1 - вход, нагруженный подтягивающим сопротивлением;
  • PINx - регистр выводов порта - в отличие от регистров DDRx и PORTx доступен только дл чтени и позволяет считать входные данные порта на внутреннюю шину мк.

Code
Config PORTA.0 = Input     'здесь ножку PA0  мы назначили на вход
Config PORTA.0 = Output   'здесь ножку PA0  мы назначили на выход
Config PORTA = Input        'здесь все порты PA  мы назначили на вход
Config PORTA = Output      'здесь все порты PA  мы назначили на выход
Программирование в BascomAVR | Просмотров: 1991 | Автор: Кирилл | Добавил: Space | Дата: 23.01.2011 | Комментарии (0)

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

    Рассмотрим цикл Do...Loop. В Bascom avr это цикл используется чаще всего. Опишем действия цикла. Операторы цикла Do и Loop устанавливают необходимость безусловного выполнения операторов, расположенных между ними. Прекращение цикла происходит только при выполнение условий, заданных с помощью слова Until. Если вы не хотите чтоб цикл завершал свою работу, а повторялся снова и снова, то просто опускаем слово Until. Из цикла также можно выйти, с помощью операторов Goto или Exit.
Теперь о синтаксисе.
Do
' Тело цикла
Loop [ Until expression ]
Программирование в BascomAVR | Просмотров: 1286 | Автор: Кирилл | Добавил: Space | Дата: 27.12.2010 | Комментарии (0)

1-10 11-20 21-22