Примеры кодов программ

В состав «Рекомендаций» входят два примера, которые показывают, как использовать различные реализации драйвера 1-Wire.

Пример с опросом

Пример кода с опросом выполняет поиск шин, определенных значением “BUSES” для устройств. Устройства запоминаются в массиве с типом OWI_device. OWI_device – структура, содержащая информацию о том, какая шина устройства подключена и какой у него 64-разрядный идентификатор. Затем драйвер выполняет поиск доступных подчиненных устройств, а именно датчика температуры DS1820 и цифрового потенциометра DS2890. Если один или более этих устройств обнаружены на шине, то с ними будет установлена постоянная связь по замкнутому циклу. При каждой итерации считывается значение температуры и увеличивается положение «движка» потенциометра DS2890. Температура выводится на порт В (PORTB), что можно наблюдать с помощью светодиодов, если использовать плату STK500.

Данный пример реализован для демонстрации, как использовать различные части драйвера. Код носит достаточно общий характер и не оптимизирован под конечное использование. С учетом этого, обратите внимание, что данный пример не подходит для микроконтроллеров с размером памяти программ менее 4 кбайт. Однако сам драйвер подходит для всех микроконтроллеров AVR, в т.ч. с памятью программ 1 кбайт.

Пример с управлением по прерываниям

Данный пример реализован как цифровой автомат. Если драйвер не занят, то данные передаются по шине. Если драйвер занят, цифровой автомат обходится для выполнения других задач. При составлении программы, полагалось, что к шине подключен один единственный датчик температуры DS1820. Программа выполняет считывание текущей температуры и вычисляет CRC, чтобы гарантировать корректность считывания. После этого значение температуры помещается в глобальную переменную. Всякий раз, когда драйвер занят, во внутреннем цикле температура выводится на порт PORTB. При использовании платы STK500 состояние данного порта можно наблюдать по свечению светодиодов.

Начало работы

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

Исходный код

Исходный код может быть загружен в zip-архиве с сайта www.atmel.com. Распакуйте исходный код в директорию по собственному усмотрению. При этом необходимо сохранить структуру директорий внутри архива. Внутри архива имеется три поддиректории: “polled”, “interrupt_driven” и “common_files”. “common_files” содержит CRC-функции, общие определения и определения для специфических устройств, используемые в драйверах УАПП. “polled” и “interrupt_driven” содержат драйверы и примеры кодов.

В каждой директории имеется файл “source.doc”. В данных файлах содержится документация на исходный код. Если необходимо изучить подробности по использованию различных драйверов, то необходимо ознакомиться с данной документацией.

Драйвер с опросом

Короткое описание каждого файла данного драйвера представлено в таблице 5.

Таблица 5 – Файлы драйвера с опросом

Файл Содержимое
main.c Пример кода программы с использованием драйвера с опросом.
OWISWBitFunctions.c Реализация функции битового уровня программным способом.
OWIUARTBitFunctions.c Реализация функций битового уровня на УАПП.
OWIBitFunctions.h Общий файл-заголовок для OWISWBitFunctions.c и OWIUARTBitfunctions.c.
OWIHighLevelFunctions.c Функции высокого уровня.
OWIHighLevelFunctions.h Файл-заголовок для OWIHighLevelFunctions.c.
OWIPolled.h Конфигурационный файл-заголовок для драйверов с опросом.
source.doc Документация на исходный код в данной папке.

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

  • Создайте новый проект в <IAR embedded workbench>.
  • Добавить все файлы *.c из директорий "polled" и "common_files".
  • Выполните команду меню project -> options: При этом появляется диалоговое окно.
  • В категории "General/Target" убедитесь, что выбрано корректное устройство и модель памяти.
  • В категории "General/Library configuration" выберите опцию "Enable bit definitions in I/O include files".
  • В категории "General/System" установите значение Data stack (CSTACK) равным 0x40, а Return stack (RSTACK) - 0x10. Это необходимо для работы примера программы с интенсивным использованием памяти. Меньшие значения стека могут быть приемлемы для других приложений, использующих этот драйвер.
  • Если для отладки используется AVRStudio, то необходимо изменить формат выходных данных. В категории XLINK/Output выберите Format/Other, а затем установите "ubrof 8 (forced)" из ниспадающего списка "Output format".
  • Откройте файл "OWIPolled.h" для редактирования и найдите раздел "User defines".
  • Выберите какой тип драйвера Вас интересует, программный или УАПП, путем удалении символов комментария (//) перед нужной строкой и, наоборот, добавления символов комментария в начало ненужной строки.
  • Перемещайтесь вниз к разделу с выбранным драйвером.
  • Настройте определения в этом разделе в соответствии с аппаратными настройками, как описано в файле.
  • Проект готов для компиляции.

Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: