Проблема с инициализацией UART #17
Loading…
Reference in New Issue
Block a user
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Загружая этот код в arduino, экран ничего не выводит. Когда комментируем UART_init(), arduino выводит на экран значения.
Код UART_init():
Также файл uart имеет расширение .cpp для сборки на arduino ide. При билде через Atmel была та же самая проблема. В чем может быть проблема?
В Atmel-проекте нет никаких
void setup()
иvoid loop()
Про ардуину не скажу наверняка.
Проблему с инициализацией решили. Почему не выводятся данные в serial monitor для проверки UART_send? Модуль UART:
https://git.vyatsu.ru/ICS-Microprocessor-2020/Display_Avr_3/src/branch/uart/UART/uart.c
не понял про
clear_buffer
. Кстати. У вас в ПЗ у каждого будут представлены алгоритмы, по которым вы пишите код.Но буфер же сам не очистится после приема или передачи
https://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%BB%D1%8C%D1%86%D0%B5%D0%B2%D0%BE%D0%B9_%D0%B1%D1%83%D1%84%D0%B5%D1%80 с анимацией
Читаем теорию.
Кто очищает буфер при отправке? Как именно?
Кто очищает буфер при приёме? Как именно?
Вот на эти вопросы ответить.
Получается, что при заполненном буфере, просто перезаписываются старые данные и нет необходимости в нашем случае очищать вручную?
Тот, кто делал UART и ЦБ, должен ответить на вопросы здесь.
Функция clear_buffer() очищает буфер, устанавливая значения buf_head и buf_tail в 0. Она вызывается в функции UART_send после того, как все данные из массива data были добавлены в буфер передачи, и в функции UART_receive после успешного чтения данных из буфера приема.
Я и есть тот человек, кто разрабатывал UART
Нарисуйте временную диаграмму изменения значений головы и хвоста каждого из двух циклических буферов
отрисовка этих диаграмм сейчас как то поможет решить ошибку?
Нарисовал диаграмму изменения значений
Да. Потому что явно не хватает понимания того, что в какой момент происходит.
Совсем не про то. У вас проблема отправить данные. Опустошение буфера должно происходить только в прерывании. Один байт достали из буфера и закинули его на отправку.
Вопрос! В случае, если в буфере есть 2 байта, сколько времени пройдёт между извлечением первого байта в буфере и второго? Модуль UART настроен так, как вы его настроили.