ДП_поясняк (1231259), страница 8

Файл №1231259 ДП_поясняк (Разработка технических средств мониторинга СЖАТ с применением беспроводных и микропроцессорных устройств) 8 страницаДП_поясняк (1231259) страница 82020-10-06СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 8)

MRF_write_l(addr, data)– функция записи в регистры памяти контроллера модуля, которые находятся в области длинных адресов. Функция имеет аргумент в виде двух байтового слова – адреса регистра. Адреса переопределены по именам регистров в заголовочном файле, для удобства и читаемости кода. Функция ни чего не возвращает.

MRF_read_s(addr) – функция производит чтение памяти контроллера модуля. При этом адресация является короткой. Функция имеет однобайтовый аргумент – адрес. Функция возвращает однобайтовое значение – содержимое ячейки памяти, регистра или буфера контроллера модуля.

MRF_read_l(addr) - функция производит чтение памяти контроллера модуля. При этом адресация является длинной. Функция имеет двухбайтовый аргумент – адрес. Функция возвращает однобайтовое значение – содержимое ячейки памяти, регистра или буфера контроллера модуля.

Для работы с LCD дисплеем была использована библиотека «LCD.h». Библиотека написана согласно технической документации на данное изделие. Библиотека позволяет инициализировать дисплей, производить вывод данных на экран путем динамического изменения изображения, а так же путем записи данных в память. Реализованы функции вывода букв английского алфавита, которые уже записаны контроллер дисплея. Так же есть возможность самому выводить данные на дисплей, путем занесения массива данных в знак-позицию дисплея. Основные использованные функции библиотеки представлены ниже.

LCDinit() - данная функция выполняет стартовую инициализацию дисплея, а так же переводит дисплей в режим работы по 8 битной шине данных, либо по 4 битной.

LCDcommand(data) – данная функция отправляет в дисплей команды. Аргументом является некое значение, которое соответствует команде. Команды описаны в заголовочном файле библиотеки.

LCDGotoXY(x, y) – функция переводит курcор дисплея в позицию X, Y. Аргументом функции является соответственно два байта – значение Х и значение Y. Значение Х в диапазоне от 0 до 20. Значения Y от 0 до 3.

LCDdata(data) – функция отправляет на дисплей один символ. В качестве аргумента передается значение буквы.

LCDstring(data, x, y)–функция записывает на дисплей символьный массив, записанный в программной памяти, в позицию X, Y. В качестве аргумента передается соответственно массив, и позиция, с которой начнется вывод.

LCDclear() – данная функция очищает экран, и переводит курсор в нулевое положение.

Для реализации программных задержек, была использована стандартная библиотека «delay.h». Библиотека позволяет использовать задержку, с указанием длительности, как в микросекундах, так и в миллисекундах. Библиотека написана на языке программирования С, использованием ассемблерных вставок, что повышает точность используемых временных задержек. Основные функции библиотеки:

_delay_ms(data) и _delay_us(data) функции задержки в мили и микро секундах соответственно. В качестве аргументов передаются значения задержки.

Для упрощения работы с прерываниями, что бы в ручную не переопределять таблицу векторов прерывания, была использована стандартная библиотека работы с прерываниями – «interrupt.h». Использованные определения библиотеки:

  • ISR (ADC_vect){ } – функция, вызов которой осуществляется по прерыванию по завершении преобразовании АЦП;

  • ISR (TIMER2_OVF_vect){ } – функция, вызов которой осуществляется по прерыванию по переполнению 8 битного таймера.

Для организации обмена данными по UART ,была использована библиотека – «uart_driver.c». В библиотеке находятся все необходимые для работы с последовательным интерфейсом дескрипторы. Так же в библиотеке реализованы кольцевые буферы, для передачи и приема информации. Так же есть функции со встроенным форматированием и последующей передачей. Имеется функция ожидания нажатия клавиши – что очень удобно при организации взаимодействия с пользователем.

Основные функции:

  • uart_init(baud) – данная функция производит все необходимые записи в регистры настройки последовательного интерфейса UART. В качестве аргумента передается значение скорости в бодах. Так же функция настраивает интерфейс на 1 стоп бит, без проверки на четность и 8 битовые посылки.

  • uart_putc(data) – данная функция производит отправку одного символа. В качестве аргумента передается значение символа в ASCI коде;

  • uart_getc () – функция принимает однобайтовое значение. Не имеет аргумента, и возвращает принятое значение;

  • uart_write (str) – данная функция отправляет символьный массив, записанный в программную память. В качестве аргумента передается указатель на отправляемый символьный массив;

  • CharToInt(char) данная функция используется для преобразования цифры в ASCII коде в целочисленный эквивалент;

  • uart_wait (char *msg, chark) – функция ожидает указанный символ, и отправляет записанный в программной памяти символьный массив. В качестве указателя передается переменная, в которой находится символьный массив. Вторым аргументом является символ.

Для инициализации и работы с SD картами была использована библиотека – «sd.c». Библиотека написана согласно спецификации на устройство – в данном случае на карту памяти типа SD - Trancend 2 Gb. Основные функции:

  • sd_cmd(char b0, char b1, char b2, char b3, char b4, char b5) функция отправки команды карте. В результате успешного выполнения, функция возвращает 00h . В качестве параметров передается индекс команды;

  • sd_card_init() – функция выполняет инициализацию карты. В случае успешного выполнения, функция возвращает 00h;

  • read_block (char* buff, unsigned char a1, unsigned char a2, unsigned char a3, unsigned char a4) – функция чтения блок данных из памяти карты. Размер блока 512 байт. В качестве параметров функции передается 4 однобайтовые переменные, в которых указан номер блока, и блок данных;

  • write_block (char* buff, unsigned char a1, unsigned char a2, unsigned char a3, unsigned char a4) – функция производит запись в память карты блок данных, размером 512 байт. В качестве параметров функции передается 4 однобайтовые переменные, в которых указан номер блока, и буфер, в который будет произведена запись.

Для работы с расширителем портов, работающем по интерфейсу I2C (TWI), была использована библиотека – «i2cmaster.с». В библиотеке реализованы функции инициализации, адресации и обмена по шине I2C

Функции библиотеки:

  • i2c_init () – функция инициализации интерфейса;

  • i2c_stop () – функция остановки интерфейса;

  • i2c_start (unsigned char addr) – начинает работу шины. В качестве параметра указывается адрес устройства;

  • i2c_write (data) – функции записи данных по шине;

  • i2c_readAck () – функция читает ответ от устройства;

  • i2c_read (ack) – функция читает один байт данных от устройств.

Для работы с системой FAT была использована библиотека «Petit_FAT_FS_sample.c». В ней описаны все дескрипторы и функции работы с файлами и файловой системой, основные из них:

FRESULT pf_mount (FATFS* fs) - смонтировать/демонтировать диск. Эта функция должна вызываться перед началом работы с диском. Она получает данные о структуре файловой системы диска и позволяет продолжить работу с его содержимым. Также функция демонтирует или виртуально отключает диск, если ее вызывать с нулевым указателем. Когда диск демонтирован, все остальные функции библиотеки возвращают FR_NOT_ENABLED (диск не смонтирован). Функция pf_mount() доступна всегда.

Параметры:

FATFS*fs - указатель на объект типа FATFS. Это объект библиотеки, в котором описана структура файловой системы. На него можно взглянуть в файле «pff.h». Ну а по сути, это просто переменная определенного типа, которая должна быть предварительно объявлена.

Возвращаемые значения:

  • FR_OK - успешное завершение функции;

  • FR_NOT_READY - не удалось инициализировать диск;

  • FR_DISK_ERR - ошибка диска;

  • FR_NO_FILESYSTEM - на диске нет правильного FAT раздела;

  • FRESULT pf_open (constchar* path) - открывает существующий файл. Функция должна вызываться перед тем, как выполняется любая работа с файлом - чтение, запись, изменение указателя. С открытым файлом можно работать до тех пор, пока не будет открыт другой файл. Функция pf_open() доступна всегда.

Параметры:

- constchar *path - указатель на строку, показывающую путь к файлу. Строка должна заканчиваться нулевым символом. Путь нужно указывать полностью, разделяя подкаталоги символом слэша.

Возвращаемые значения

  • FR_OK - успешное завершение функции;

  • FR_NO_FILE - не удалось найти файл;

  • FR_NO_PATH - не удалось найти путь;

  • FR_DISK_ERR - ошибка диска;

  • FR_NOT_ENABLED - не смонтирован диск.

FRESULT pf_read (void* buff, WORD btr, WORD* br) – прочитать данные из файла. Функция читает заданное количество байт из открытого файла и записывает их в буфер пользователя. Также она подсчитывает количество прочитанных байт. Если заданное количество байт и прочитанное не совпадают, значит при чтении был достигнут конец файла. Функция доступна, когда параметр _USE_READ равен 1.

Параметры

    • void* buff - указатель на буфер, в котором будут сохраняться прочитанные данные. Если передать нулевой указатель, то прочитанные данные будут перенаправлены в другой поток, некую функцию, которую нужно описывать самостоятельно;

    • WORD btr - количество байт, которое нужно прочитать;

    • WORD* br - указатель на переменную, в которой функция pf_open сохранит количество прочитанных байтов.

Возвращаемые значения

  • FR_OK - успешное завершение функции;

  • FR_DISK_ERR - ошибка диска;

  • FR_NOT_OPENED - файл не был открыт;

  • FR_NOT_ENABLED - не смонтирован диск.

FRESULT pf_write(constvoid* buff, WORD btw, WORD* bw) - эта функция записывает данные в предварительно открытый файл. Она доступна только тогда, когда параметр _USE_WRITE равен 1. Из-за того, что библиотека PetitFatFs рассчитана на микроконтроллеры с маленьким объемом памяти, функцию записи имеет ряд ограничений:

  • нельзя создать новый файл;

  • нельзя увеличить размер файла;

  • нельзя обновить временную метку файла;

  • файловый атрибут "только для чтения" не может запретить запись;

  • операцию записи можно запустить/остановить только на границе сектора диска.

SD карта разбита на сектора по 512 байт. Функция pf_write может выполнять запись только с начала какого-либо сектора. При этом, если записывается меньше 512 байт, остаток заполняется нулями. Например, мы порциями записываем 612 байтов полезной информации - первый сектор будет заполнен полностью, а во втором будет 100 байтов полезной информации и 412 нулевых байтов.

Функция pf_lseek(..), позволяет перемещать указатель чтения/записи данных. При использовании функции записи указатель нужно устанавливать на начало сектора. Если установить указатель в середину, то он будет округлен к нижней границе сектора, и запись все равно будет выполняться с его начала.

Таким образом, операция записи выполняется в следующей последовательности:

  • устанавливаем указатель записи на какой-нибудь сектор;

  • вызываем функцию записи;

  • если записаны не все данные, и конец файла не достигнут, вызываем функцию записи;

  • финализируем запись, вызвав функцию записи с нулевым указателем.

Параметры:

  • constvoid* buff - указатель на буфер, содержащий данные для записи. Нулевое значение завершает текущую операцию записи;

  • WORD btw - количество байт, которое нужно записать в файл;

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

Возвращаемые значения:

  • FR_OK - успешное завершение функции;

  • FR_DISK_ERR - ошибка диска;

  • FR_NOT_OPENED - файл не был открыт;

  • FR_NOT_ENABLED - не смонтирован диск.

FRESULT pf_lseek(DWORD offset) - смещает указатель чтения/записи открытого файла. Эта функция используется чтобы указать с какого байта выполнять чтение, или с какого сектора диска выполнять запись. Можно выполнять абсолютное смещение указателя, передавая функции число, а можно выполнять смещение относительно текущей позиции, передавая значение указателя fs.fptr и величину смещения (смотри пример). Функция доступна, когда параметр _USE_LSEEK = 1.

Параметры:

DWORD offset - количество байт, на которые нужно сместить указатель.

Возвращаемые значения:

  • FR_OK - успешное завершение функции;

  • FR_DISK_ERR - ошибка диска;

  • FR_NOT_OPENED - файл не был открыт.

FRESULT pf_opendir(DIR* dp, constchar * path) - эта функцию открывает существующую директорию и инициализирует переменную типа DIR. В дальнейшем эта переменная может использоваться для получения списка файлов открытой директории. Функцию доступна, когда параметр _USE_DIR равен 1.

Параметры:

  • DIR *dp - указатель на переменную типа DIR. Она должна быть предварительно объявлена;

  • constchar* path - указатель на строку-путь к директории. Строка должна заканчиваться нулевым символом. Путь нужно указывать полностью, разделяя подкаталоги символом слэша. Написание пути к директории подчиняется тем же правилам, что и написание пути к файлу (смотри функцию pf_open).

Возвращаемые значения:

  • FR_OK - успешное завершение функции;

  • FR_NO_PATH - не удалось найти путь;

  • FR_NOT_READY - не удалось инициализировать диск;

  • FR_DISK_ERR - ошибка диска;

  • FR_NOT_ENABLED - не смонтирован диск.

FRESULT pf_readdir(DIR* dp, FILINFO* fno) - эта функцию позволяет прочитать содержимое директории. Для этого ее нужно вызывать несколько раз, пока функция не возвратит нулевую строку в одном из членов переменной fno - fno.fname[]. Функция доступна, когда параметр _USE_DIR равен 1. Читаемая директория должна быть предварительно открыта с помощью функции pf_opendir(..).

Характеристики

Список файлов ВКР

Разработка технических средств мониторинга СЖАТ с применением беспроводных и микропроцессорных устройств
255-Скабелкин Александр Олегович
1_Анализ измерит-х устр-в_П.vsd
2_Структура сети мониторинга_П.vsd
3_Плакат_инструменты_П.vsd
4_Структура сд памяти и диаграммы_П.vsd
5_Плакат_Интерфейсы и алгоритмы ПО_П.vsd
6_Плакат_УМП_П.vsd
Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
7027
Авторов
на СтудИзбе
260
Средний доход
с одного платного файла
Обучение Подробнее