| AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR... |
Дисплей 3.5 на ILI9341 + atmega128
23.03.2024, 15:57
|
|
|
Временная регистрация
Регистрация: 07.03.2019
Сообщений: 91
Сказал спасибо: 11
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Дисплей 3.5 на ILI9341 + atmega128
Сообщение от eddy
|
|
// ну и не пройду мимо и еще раз пристыжу: позорище-то какое! Ни документацию ТС не в состоянии почитать, ни код написать… Еще и, наверняка, под абдурину не как положено код пишет, а в абдурино-IDE с убогими абдуринобиблиотеками.
|
У меня не ардуино, а просто отладочная плата на атмега 128 от waveshare.
|
|
|
|
23.03.2024, 15:58
|
|
|
Временная регистрация
Регистрация: 07.03.2019
Сообщений: 91
Сказал спасибо: 11
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Дисплей 3.5 на ILI9341 + atmega128
Сообщение от ForcePoint
|
|
А конкретнее? Что не так?
|
Он просто не инициализировался. В общем ответил китаец, и там контроллер 9488. под авр пока не нашел библиотек
|
|
|
|
23.03.2024, 16:41
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,481
Сказал спасибо: 396
Сказали Спасибо 2,222 раз(а) в 1,317 сообщении(ях)
|
Re: Дисплей 3.5 на ILI9341 + atmega128
Дак от AVR там требуется только работа с SPI и ногами. Остальное - аппаратнонезависимое. Находите где-нить функции отправки по SPI и дергание ногой DC, ну и дальше используя эти функции, посылаете указанные в библиотеке дисплея байты.
Лично я бы, на вашем месте, не выходил за пределы примитивного дисплея-двустрочника 1602, ибо что-то более сложное уже было бы мучительно больно. Или же возьмите именно Ардуину и ArduinoIDE и на ней будете просто состыковывать готовые скетчи. Так делают все ардуинщики, которым не по силам разобраться в документации и написать своё. А так у вас хоть будет больше возможностей перебирать готовые скетчи, они уже все написаны.
Помимо запуска дисплея там есть огромнейший пласт работы вообще с графикой. Текст на таких дисплеях - это тоже графика, растровая.
А тут еще цветной дисплей большого размера и довольно слабый для него микроконтроллер, так тут вообще засада. Ардуинщики то уже понаписали для этого скетчей, понатыкали.
|
|
|
|
23.03.2024, 17:07
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,684
Сказал спасибо: 116
Сказали Спасибо 823 раз(а) в 597 сообщении(ях)
|
Re: Дисплей 3.5 на ILI9341 + atmega128
Сообщение от Devil Byte
|
|
не нашел библиотек
|
Да не нужны там никакие "библиотеки": просто отправить инициализирующую последовательность, а потом гонять пиксели. Ничего сложного.
Кстати, напомню: даже для дисплея 128×128 точек нужно минимум 16*16+32*128=4352 байта на экранный буфер + хотя бы байт 256 для временного буфера в формате экрана (чтобы пересылать).
И да, разве у аврки есть DMA? А без DMA посылать по SPI такой огромный поток данных - только с использованием прерывания. Есть у аврки прерывание на TXE? Если нет, то вообще глухо - придется в конечном автомате на каждой итерации суперлупа пересылать не больше 8-16 байт данных, чтобы и другим автоматам дать возможность без особых блокировок работать.
__________________
Если ты пользуешься Windows, то ты финансируешь мировой терроризм!
Последний раз редактировалось eddy; 23.03.2024 в 17:11.
|
|
|
|
23.03.2024, 18:06
|
|
|
Временная регистрация
Регистрация: 07.03.2019
Сообщений: 91
Сказал спасибо: 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.RUN
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 7,459
Сказал спасибо: 3,227
Сказали Спасибо 3,513 раз(а) в 2,394 сообщении(ях)
|
Re: Дисплей 3.5 на ILI9341 + atmega128
Сообщение от Devil Byte
|
|
Пока примерно так получается.
|
defin'ы линий индикатора не совпадают с выводами SPI ATmega128.
__________________
Экзорцист 40-го уровня.
|
|
|
|
23.03.2024, 19:26
|
|
|
Временная регистрация
Регистрация: 07.03.2019
Сообщений: 91
Сказал спасибо: 11
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Дисплей 3.5 на ILI9341 + atmega128
Сообщение от ForcePoint
|
|
не совпадают
|
Не совсем понял на каких пинах я ошибся?
|
|
|
|
23.03.2024, 19:40
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 7,459
Сказал спасибо: 3,227
Сказали Спасибо 3,513 раз(а) в 2,394 сообщении(ях)
|
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
Сообщений: 91
Сказал спасибо: 11
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Дисплей 3.5 на ILI9341 + atmega128
Сообщение от ForcePoint
|
|
У ATmega128 линии SPI расположены на других выводах. В итоге - ничего не передаётся или передаётся с ошибками. Как я теперь вижу, ошибка - уже в первом сообщении темы.
|
Пробовал подключать в соответствии, результат тот же. Максимум загорается подсветка
|
|
|
|
23.03.2024, 20:02
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 7,459
Сказал спасибо: 3,227
Сказали Спасибо 3,513 раз(а) в 2,394 сообщении(ях)
|
Re: Дисплей 3.5 на ILI9341 + atmega128
Теперь я не понимаю. Вы пробовали привести программу в соотвествие с документацией на микроконтроллер?
__________________
Экзорцист 40-го уровня.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 16:37.
|
|