AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR... |
23.03.2024, 15:57
|
|
Временная регистрация
Регистрация: 07.03.2019
Сообщений: 87
Сказал спасибо: 11
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Дисплей 3.5 на ILI9341 + atmega128
Сообщение от eddy
|
// ну и не пройду мимо и еще раз пристыжу: позорище-то какое! Ни документацию ТС не в состоянии почитать, ни код написать… Еще и, наверняка, под абдурину не как положено код пишет, а в абдурино-IDE с убогими абдуринобиблиотеками.
|
У меня не ардуино, а просто отладочная плата на атмега 128 от waveshare.
|
|
|
|
23.03.2024, 15:58
|
|
Временная регистрация
Регистрация: 07.03.2019
Сообщений: 87
Сказал спасибо: 11
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Дисплей 3.5 на ILI9341 + atmega128
Сообщение от ForcePoint
|
А конкретнее? Что не так?
|
Он просто не инициализировался. В общем ответил китаец, и там контроллер 9488. под авр пока не нашел библиотек
|
|
|
|
23.03.2024, 16:41
|
|
Заблокирован
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,220 раз(а) в 1,319 сообщении(ях)
|
Re: Дисплей 3.5 на ILI9341 + atmega128
Дак от AVR там требуется только работа с SPI и ногами. Остальное - аппаратнонезависимое. Находите где-нить функции отправки по SPI и дергание ногой DC, ну и дальше используя эти функции, посылаете указанные в библиотеке дисплея байты.
Лично я бы, на вашем месте, не выходил за пределы примитивного дисплея-двустрочника 1602, ибо что-то более сложное уже было бы мучительно больно. Или же возьмите именно Ардуину и ArduinoIDE и на ней будете просто состыковывать готовые скетчи. Так делают все ардуинщики, которым не по силам разобраться в документации и написать своё. А так у вас хоть будет больше возможностей перебирать готовые скетчи, они уже все написаны.
Помимо запуска дисплея там есть огромнейший пласт работы вообще с графикой. Текст на таких дисплеях - это тоже графика, растровая.
А тут еще цветной дисплей большого размера и довольно слабый для него микроконтроллер, так тут вообще засада. Ардуинщики то уже понаписали для этого скетчей, понатыкали.
|
|
|
|
23.03.2024, 17:07
|
|
Почётный гражданин KAZUS.RU
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,628
Сказал спасибо: 115
Сказали Спасибо 813 раз(а) в 590 сообщении(ях)
|
Re: Дисплей 3.5 на ILI9341 + atmega128
Сообщение от Devil Byte
|
не нашел библиотек
|
Да не нужны там никакие "библиотеки": просто отправить инициализирующую последовательность, а потом гонять пиксели. Ничего сложного.
Кстати, напомню: даже для дисплея 128×128 точек нужно минимум 16*16+32*128=4352 байта на экранный буфер + хотя бы байт 256 для временного буфера в формате экрана (чтобы пересылать).
И да, разве у аврки есть DMA? А без DMA посылать по SPI такой огромный поток данных - только с использованием прерывания. Есть у аврки прерывание на TXE? Если нет, то вообще глухо - придется в конечном автомате на каждой итерации суперлупа пересылать не больше 8-16 байт данных, чтобы и другим автоматам дать возможность без особых блокировок работать.
__________________
Союз Советских Социалистических Округов Северной Америки
Последний раз редактировалось eddy; 23.03.2024 в 17:11.
|
|
|
|
23.03.2024, 18:06
|
|
Временная регистрация
Регистрация: 07.03.2019
Сообщений: 87
Сказал спасибо: 11
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Дисплей 3.5 на ILI9341 + atmega128
Сообщение от NewWriter
|
Дак от AVR там требуется только работа с SPI и ногами.
|
Нажмите, чтобы открыть спойлер
PHP код:
|
#define F_CPU 8000000UL #include ‹avr/io.h› #include ‹util/delay.h›
#define SPI_DDR DDRB #define SPI_PORT PORTB #define CS PB0 #define RESET PB1 #define DC PB2 #define MOSI PB3 #define SCK PB5
// Инициализация SPI интерфейса void SPI_init() { // Установим MOSI, SCK, CS и DC как выходные пины SPI_DDR |= (1 ‹‹ MOSI) | (1 ‹‹ SCK) | (1 ‹‹ CS) | (1 ‹‹ DC); // Включим SPI, установим мастер-режим и установим частоту SCK SPCR = (1 ‹‹ SPE) | (1 ‹‹ MSTR) | (1 ‹‹ SPR0); }
// Функция для отправки байта данных через SPI void SPI_send_byte(uint8_t data) { // Запускаем передачу данных SPDR = data;
// Ждем окончания передачи while (!(SPSR & (1 ‹‹ SPIF))); }
// Функция для отправки команды на дисплей void ILI9488_send_command(uint8_t command) { // Переводим линию DC в низкое состояние для отправки команды SPI_PORT &= ~(1 ‹‹ DC);
// Переводим линию CS в низкое состояние для начала передачи SPI_PORT &= ~(1 ‹‹ CS);
// Отправляем команду SPI_send_byte(command);
// Переводим линию CS в высокое состояние для окончания передачи SPI_PORT |= (1 ‹‹ CS); }
// Функция для отправки данных на дисплей void ILI9488_send_data(uint8_t data) { // Переводим линию DC в высокое состояние для отправки данных SPI_PORT |= (1 ‹‹ DC);
// Переводим линию CS в низкое состояние для начала передачи SPI_PORT &= ~(1 ‹‹ CS);
// Отправляем данные SPI_send_byte(data);
// Переводим линию CS в высокое состояние для окончания передачи SPI_PORT |= (1 ‹‹ CS); }
// Функция для инициализации дисплея void ILI9488_init() { // Сброс дисплея SPI_PORT &= ~(1 ‹‹ RESET); _delay_ms(100); SPI_PORT |= (1 ‹‹ RESET); _delay_ms(100); // возможно тут вызовы функций ILI9488_send_command() и ILI9488_send_data() // конфигурации дисплея согласно его техническому описанию. }
int main() { // Инициализация SPI SPI_init();
// Инициализация дисплея ILI9488_init();
// код для работы с дисплеем (рисование, обновление и т.д.)
while (1) { // Основной цикл программы } }
|
Пока примерно так получается.
|
|
|
|
23.03.2024, 19:08
|
|
Почётный гражданин KAZUS.RU
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 6,928
Сказал спасибо: 2,991
Сказали Спасибо 3,163 раз(а) в 2,147 сообщении(ях)
|
Re: Дисплей 3.5 на ILI9341 + atmega128
Сообщение от Devil Byte
|
Пока примерно так получается.
|
defin'ы линий индикатора не совпадают с выводами SPI ATmega128.
__________________
Экзорцист 40-го уровня.
|
|
|
|
23.03.2024, 19:26
|
|
Временная регистрация
Регистрация: 07.03.2019
Сообщений: 87
Сказал спасибо: 11
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Дисплей 3.5 на ILI9341 + atmega128
Сообщение от ForcePoint
|
не совпадают
|
Не совсем понял на каких пинах я ошибся?
|
|
|
|
23.03.2024, 19:40
|
|
Почётный гражданин KAZUS.RU
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 6,928
Сказал спасибо: 2,991
Сказали Спасибо 3,163 раз(а) в 2,147 сообщении(ях)
|
Re: Дисплей 3.5 на ILI9341 + atmega128
Сообщение от Devil Byte
|
PHP код:
|
#define CS PB0 #define RESET PB1 #define DC PB2 #define MOSI PB3 #define SCK PB5
|
|
У ATmega128 линии SPI расположены на других выводах. В итоге - ничего не передаётся или передаётся с ошибками. Как я теперь вижу, ошибка - уже в первом сообщении темы.
__________________
Экзорцист 40-го уровня.
|
|
|
|
23.03.2024, 19:59
|
|
Временная регистрация
Регистрация: 07.03.2019
Сообщений: 87
Сказал спасибо: 11
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Дисплей 3.5 на ILI9341 + atmega128
Сообщение от ForcePoint
|
У ATmega128 линии SPI расположены на других выводах. В итоге - ничего не передаётся или передаётся с ошибками. Как я теперь вижу, ошибка - уже в первом сообщении темы.
|
Пробовал подключать в соответствии, результат тот же. Максимум загорается подсветка
|
|
|
|
23.03.2024, 20:02
|
|
Почётный гражданин KAZUS.RU
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 6,928
Сказал спасибо: 2,991
Сказали Спасибо 3,163 раз(а) в 2,147 сообщении(ях)
|
Re: Дисплей 3.5 на ILI9341 + atmega128
Теперь я не понимаю. Вы пробовали привести программу в соотвествие с документацией на микроконтроллер?
__________________
Экзорцист 40-го уровня.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 16:19.
|
|