Портал для радиолюбителей и разработчиков электроники · с 2003 годаРеклама на сайте
Найти компонент, схему или даташит

Даташиты, справочник отечественных приборов, схемы с разбором и живой форум

AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR...

 
Опции темы

Дисплей 3.5 на ILI9341 + atmega128

Непрочитано 23.03.2024, 15:57  
Devil Byte
Временная регистрация
 
Регистрация: 07.03.2019
Сообщений: 91
Сказал спасибо: 11
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Devil Byte на пути к лучшему
По умолчанию Re: Дисплей 3.5 на ILI9341 + atmega128

Сообщение от eddy Посмотреть сообщение
// ну и не пройду мимо и еще раз пристыжу: позорище-то какое! Ни документацию ТС не в состоянии почитать, ни код написать… Еще и, наверняка, под абдурину не как положено код пишет, а в абдурино-IDE с убогими абдуринобиблиотеками.
У меня не ардуино, а просто отладочная плата на атмега 128 от waveshare.
Реклама:
Devil Byte вне форума  
Непрочитано 23.03.2024, 15:58  
Devil Byte
Временная регистрация
 
Регистрация: 07.03.2019
Сообщений: 91
Сказал спасибо: 11
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Devil Byte на пути к лучшему
По умолчанию Re: Дисплей 3.5 на ILI9341 + atmega128

Сообщение от ForcePoint Посмотреть сообщение
А конкретнее? Что не так?
Он просто не инициализировался. В общем ответил китаец, и там контроллер 9488. под авр пока не нашел библиотек
Devil Byte вне форума  
Непрочитано 23.03.2024, 16:41  
NewWriter
Почётный гражданин KAZUS.RUN
 
Аватар для NewWriter
 
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,481
Сказал спасибо: 396
Сказали Спасибо 2,222 раз(а) в 1,317 сообщении(ях)
NewWriter на пути к лучшему
По умолчанию Re: Дисплей 3.5 на ILI9341 + atmega128

Дак от AVR там требуется только работа с SPI и ногами. Остальное - аппаратнонезависимое. Находите где-нить функции отправки по SPI и дергание ногой DC, ну и дальше используя эти функции, посылаете указанные в библиотеке дисплея байты.

Лично я бы, на вашем месте, не выходил за пределы примитивного дисплея-двустрочника 1602, ибо что-то более сложное уже было бы мучительно больно. Или же возьмите именно Ардуину и ArduinoIDE и на ней будете просто состыковывать готовые скетчи. Так делают все ардуинщики, которым не по силам разобраться в документации и написать своё. А так у вас хоть будет больше возможностей перебирать готовые скетчи, они уже все написаны.

Помимо запуска дисплея там есть огромнейший пласт работы вообще с графикой. Текст на таких дисплеях - это тоже графика, растровая.
А тут еще цветной дисплей большого размера и довольно слабый для него микроконтроллер, так тут вообще засада. Ардуинщики то уже понаписали для этого скетчей, понатыкали.
NewWriter вне форума  
Непрочитано 23.03.2024, 17:07  
eddy
Почётный гражданин KAZUS.RUN
 
Аватар для eddy
 
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,684
Сказал спасибо: 116
Сказали Спасибо 823 раз(а) в 597 сообщении(ях)
eddy на пути к лучшему
По умолчанию 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.
eddy вне форума  
Непрочитано 23.03.2024, 18:06  
Devil Byte
Временная регистрация
 
Регистрация: 07.03.2019
Сообщений: 91
Сказал спасибо: 11
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Devil Byte на пути к лучшему
По умолчанию 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) 
    {
        // Основной цикл программы
    }
} 

Пока примерно так получается.
Devil Byte вне форума  
Непрочитано 23.03.2024, 19:08  
ForcePoint
Почётный гражданин KAZUS.RUN
 
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 7,459
Сказал спасибо: 3,227
Сказали Спасибо 3,513 раз(а) в 2,394 сообщении(ях)
ForcePoint на пути к лучшему
По умолчанию Re: Дисплей 3.5 на ILI9341 + atmega128

Сообщение от Devil Byte Посмотреть сообщение
Пока примерно так получается.
defin'ы линий индикатора не совпадают с выводами SPI ATmega128.
__________________
Экзорцист 40-го уровня.
ForcePoint вне форума  
Непрочитано 23.03.2024, 19:26  
Devil Byte
Временная регистрация
 
Регистрация: 07.03.2019
Сообщений: 91
Сказал спасибо: 11
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Devil Byte на пути к лучшему
По умолчанию Re: Дисплей 3.5 на ILI9341 + atmega128

Сообщение от ForcePoint Посмотреть сообщение
не совпадают
Не совсем понял на каких пинах я ошибся?
Devil Byte вне форума  
Непрочитано 23.03.2024, 19:40  
ForcePoint
Почётный гражданин KAZUS.RUN
 
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 7,459
Сказал спасибо: 3,227
Сказали Спасибо 3,513 раз(а) в 2,394 сообщении(ях)
ForcePoint на пути к лучшему
По умолчанию 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-го уровня.
ForcePoint вне форума  
Непрочитано 23.03.2024, 19:59  
Devil Byte
Временная регистрация
 
Регистрация: 07.03.2019
Сообщений: 91
Сказал спасибо: 11
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Devil Byte на пути к лучшему
По умолчанию Re: Дисплей 3.5 на ILI9341 + atmega128

Сообщение от ForcePoint Посмотреть сообщение
У ATmega128 линии SPI расположены на других выводах. В итоге - ничего не передаётся или передаётся с ошибками. Как я теперь вижу, ошибка - уже в первом сообщении темы.
Пробовал подключать в соответствии, результат тот же. Максимум загорается подсветка
Devil Byte вне форума  
Непрочитано 23.03.2024, 20:02  
ForcePoint
Почётный гражданин KAZUS.RUN
 
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 7,459
Сказал спасибо: 3,227
Сказали Спасибо 3,513 раз(а) в 2,394 сообщении(ях)
ForcePoint на пути к лучшему
По умолчанию Re: Дисплей 3.5 на ILI9341 + atmega128

Теперь я не понимаю. Вы пробовали привести программу в соотвествие с документацией на микроконтроллер?
__________________
Экзорцист 40-го уровня.
ForcePoint вне форума  
 

Метки
atmega128, lcd
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
arduino mega 2560 и ILI9341 как симулировать? ruvdos Proteus 0 02.12.2020 02:55
Дисплей ILI9341 на STM32F429 по SPI radian ARM 4 12.11.2017 05:55
Дисплей BL12864CYPNH потух Касьян Песочница (вопросы новичков) 0 28.06.2014 00:47
Текстовый дисплей PILZ PX 150-40-RFL ratfor1 Производственное оборудование 2 21.12.2013 00:16
Разбили дисплей анемометра Sopromat2 Измерительное оборудование 11 01.02.2012 21:47


Часовой пояс GMT +4, время: 16:37.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.