Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ru_Led_Cube_6.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
144.43 Кб
Скачать

46. Программирование avr с тестовым кодом

Мы подготовили простую тестовую программу, чтобы проверить работу светодиодов и правильность их подключения.

Вы можете загрузить прошивку test.hex в этом шаге, или загрузить исходный код и скомпилировать его самостоятельно.

Как в предыдущем шаге, мы используем avrdude для программирования:

  • avrdude -c usbtiny -p m32 -B 1 -U flash:w:test.hex

-c указывает, что мы используем USBtinyISP от Ladyada

M32-P указывает, что устройство представляет собой ATmega32-B

1 говорит AVRDUDE работать на более высокой, чем по умолчанию скоростью speed.

-Uflash:w:test.hex указывает, что мы работаем на флэш-памяти, в режиме записи, с файлом test.hex

47. Проверьте куб

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

Работа начнется с рисования плоскости вдоль одной оси и перемещением по всем 8 позициям этой оси.Тестовый код пересекает плоскость, проходя через все три оси. После этого, загорятся светодиоды в слое один за другим, начиная с нижнего слоя.

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

48. Программирование avr с реальным кодом

Программирование ATmega с реальной прошивкой.

Процесс такой же, как и в предыдущем шаге. Но Вы должны программировать память EEPROM.

Прошивки программируется с использованием процедуры тест-кода.

Прошивка:

  • avrdude -c usbtiny -p m32 -B 1 -U flash:w:main.hex

EEPROM:

  • avrdude -c usbtiny -p m32 -B 1 -U eeprom:w:main.eep

- U eeprom:w:main.eep указывает, что мы получили доступ к памяти EEPROM, в режиме записи. AVR-GCC помещает все данные в EEPROM main.eep

При загрузке бинарных файлов, необходимо изменить имена файлов в командах к названию файлов, которые загрузили. Если Вы собираете из источника, имя - main.hex и main.eep.

49. Программное обеспечение. Введение

Программное обеспечение написано в C и собрано с общедоступным компилятором avr-gcc. Это - главная причина, по которой мы используем Atmel AVR микроконтроллеры. Ряд PIC от Microchip - также хороший выбор, но компилятор C стоит очень дорого, а в бесплатных версиях есть ограничения на размер кода.

Программное обеспечение на AVR состоит из двух главных компонентов: подпрограммы прерывания работы куба и кода для создания анимаций.

Создавать анимации в монохромном режиме при низком разрешении очень трудно.

Если бы дисплей имел более высокое разрешение и больше цветов, мы могли бы использовать функции sin() и cos(), чтобы сделать необычную усладу для глаз. С двумя цветами и низким разрешением, мы должны использовать многое из if() и for(), чтобы сделать что-то существенное.

В следующих нескольких шагах мы расскажем вам, как сделать работающие анимации. Нашей целью является дать вам знания того, как вы можете самостоятельно делать анимация и вдохновить вас на создание собственных!

50. Программное обеспечение. Как это работает

Программное обеспечение состоит из прерываний и эффектов.

Связь между ними происходит через массив вокселей (воксел - аналог пикселов для трехмёрного пространства). У этого массива есть немного вокселей для каждого светодиода в светодиодном кубе. Мы будем называть это как множество куба или буфер куба.

Массив куба состоит из 8x8 байтов. Так как каждый байт составляет 8 битов, это дает нам буфер, который равняется 8 вокселей по ширине, 8 вокселей по высоте и 8 вокселей по глубине (1 байт глубиной).

Прерывание читает из массива куба в данных интервалах и показывает информацию о светодиодном кубе.

Мы не использовали синхронизацию или двойную буферизацию, так как есть только один производитель (или эффекты, или вход от RS232) и один потребитель (код прерывания, который обновляет куб). Это означает, что некоторые воксели могли быть из следующего или предыдущего "кадра", но это не проблема, так как частота кадров очень высока.

Работая с микроконтроллерами важен размер кода. Чтобы сохранить размер кода и сделать код более читаемым, мы постарались написать многоразовый код так часто, насколько это возможно.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]