Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту


 
Опции темы
Непрочитано 10.10.2016, 13:45  
miwutka
Почётный гражданин KAZUS.RU
 
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
miwutka на пути к лучшему
По умолчанию Re: OLED ssd1306 + STM32f030f4

NewWriter, Счетный регистр, это который CNT?? Его в 0 прописать?
Решил с помощью MOE и AOE. Спасибо.
Реклама:

Последний раз редактировалось miwutka; 10.10.2016 в 14:09.
miwutka вне форума  
Непрочитано 10.10.2016, 15:56  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
dosikus на пути к лучшему
По умолчанию

omercury, Теперь полезли вопросы. Пришли мне еще жовтоблакитные и синие.
Перепаял на одном синем на твой дисплей, у тебя белые.
Но белый светит намного темнее. Это так и должно быть или ?

Сообщение от dosikus Посмотреть сообщение
Это так и должно быть или ?
Сменил дисплей , теперь яркий попался...
__________________
Осторожно , злой кот

Последний раз редактировалось dosikus; 10.10.2016 в 16:20.
dosikus вне форума  
Непрочитано 16.10.2016, 00:29  
miwutka
Почётный гражданин KAZUS.RU
 
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
miwutka на пути к лучшему
По умолчанию Re: OLED ssd1306 + STM32f030f4

Нужно создать шрифты новые. Нашел вот программу http://www.eran.io/the-dot-factory-a...age-generator/ - в ней маленькие шрифты получается создавать, а большие не получается. Не могу понять как их перенести правильно в файл fonts.c.
Вот цыфра 0 шрифтом 11 на 18.
PHP код:
const uint16_t Font11x18 [] = {
0x00000x1E000x3F000x33000x61800x61800x61800x6D800x6D800x61800x61800x61800x33000x3F000x1E000x00000x00000x0000,}   // 0

FontDef_t Font_11x18 = {
    
11,
    
18,
    
Font11x18

char
FONTS_GetStringSize(charstrFONTS_SIZE_tSizeStructFontDef_tFont) {
    
/* Fill settings */
    
SizeStruct-›Height Font-›FontHeight;
    
SizeStruct-›Length Font-›FontWidth strlen(str);
    
    
/* Return pointer */
    
return str;
}
}; 
я хочу сделать свой шрифт, например Calibri 16 pt Bold
Вот оно мне сгенерило
PHP код:
/* @0 '0' (9 pixels wide) */
    
0x3E0x00//   #####  
    
0x7F0x00//  ####### 
    
0x770x00//  ### ### 
    
0xE30x80// ###   ###
    
0xE30x80// ###   ###
    
0xE30x80// ###   ###
    
0xE30x80// ###   ###
    
0xE30x80// ###   ###
    
0xE30x80// ###   ###
    
0xE30x80// ###   ###
    
0x770x00//  ### ### 
    
0x7F0x00//  ####### 
    
0x3E0x00//   ##### 
А как же его теперь правильно себе прописать??? Помогите разобраться плиз....
miwutka вне форума  
Непрочитано 16.10.2016, 19:21  
NewWriter
Заблокирован
 
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,220 раз(а) в 1,319 сообщении(ях)
NewWriter на пути к лучшему
По умолчанию Re: OLED ssd1306 + STM32f030f4

Нууу во-первых, шрифты желательно содержать в файле Font.h, который hider, заголовок. Его подключить к файлу кода .c строчкой #include "Font.h"
Так не будут мешаться портянки шрифтов в основном листинге.
А во-вторых, в первом шрифте - инфа упакована в массив 16-битных значений, а во втором случае значения 8-битные. В принципе, из них можно получить 16-битные значения, присоединив каждый второй элемент массива к предыдущему, убрав в начале суффикс 0х
NewWriter вне форума  
Сказали "Спасибо" NewWriter
miwutka (16.10.2016)
Непрочитано 16.10.2016, 19:30  
akegor
Гуру портала
 
Аватар для akegor
 
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 19,056
Сказал спасибо: 2,562
Сказали Спасибо 11,889 раз(а) в 5,963 сообщении(ях)
akegor на пути к лучшему
По умолчанию Re: OLED ssd1306 + STM32f030f4

Сообщение от NewWriter Посмотреть сообщение
суффикс 0х
На всякий случай уточню - префикс.
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
akegor вне форума  
Непрочитано 16.10.2016, 20:25  
miwutka
Почётный гражданин KAZUS.RU
 
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
miwutka на пути к лучшему
По умолчанию Re: OLED ssd1306 + STM32f030f4

попробую... Шрифты у меня вынесены в fonts.c fonts.h. Это есть)) Вот убирая 0х я делал, но чтото неполучилось..... Ну значит я правильно делал. Пропишу от 0 до 9 и попробую.... Спасибо.
miwutka вне форума  
Непрочитано 15.09.2017, 15:46  
Alex271978
Частый гость
 
Регистрация: 02.06.2008
Сообщений: 16
Сказал спасибо: 0
Сказали Спасибо 2 раз(а) в 1 сообщении
Alex271978 на пути к лучшему
По умолчанию Re: OLED ssd1306 + STM32f030f4

Сообщение от miwutka Посмотреть сообщение
Появилось несколько вопросов. Переделываю библиотеку с 10х на 030. Есть непонятки с регистрами.
Тут правильная замена?
PHP код:
/* Enable ack if we select it */
    
if (ack) {
        
I2Cx-›CR2 |= I2C_CR2_NACK;//I2Cx-›CR1 |= I2C_CR1_ACK; - так было для 10х
    
}

/* Send write/read bit */
    
if (direction == I2C_TRANSMITTER_MODE) {
        
/* Send address with zero last bit */
        
I2C1-›TXDR = (uint8_t) (address››8); /* Byte to send *///I2Cx-›DR = address & ~I2C_OAR1_ADD0;
        
        /* Wait till finished */
        
ssd1306_I2C_Timeout ssd1306_I2C_TIMEOUT;
        while (!(
I2Cx-›ISR I2C_ISR_ADDR)) {//while (!(I2Cx-›SR1 & I2C_SR1_ADDR)) {
            
if (--ssd1306_I2C_Timeout == 0x00) {
                return 
1;
            }
        }
    }
    
if (
direction == I2C_RECEIVER_MODE) {
        
/* Send address with 1 last bit */
        
I2C1-›TXDR = (uint8_t) ((address|1)››8);//I2Cx-›DR = address | I2C_OAR1_ADD0;
        
        /* Wait till finished */
        
ssd1306_I2C_Timeout ssd1306_I2C_TIMEOUT;
        while (!
I2C_CheckEvent(I2CxI2C_EVENT_MASTER_RECEIVER_MODE_SELECTED)) { //чем это можно заменить? I2C_CheckEvent, что оно проверяет?
            
if (--ssd1306_I2C_Timeout == 0x00) {
                return 
1;
            }
        }
    }

/* Read status register to clear ADDR flag */
    
I2Cx-›SR2// тут его читают и всё? мне тогда надо читать I2C_IСR регистр, чтобы очистить флаг ADDR? 
что это за бит в регистре статуса ? - I2Cx-›SR1 & I2C_SR1_BTF.

PHP код:
while (((!(I2Cx-›SR1 I2C_SR1_TXE)) || (!(I2Cx-›SR1 I2C_SR1_BTF)))) {
        if (--
ssd1306_I2C_Timeout == 0x00) {
            return 
1;
        }
    } 
I2Cx-›SR1 & I2C_SR1_TXE меняю на это I2Cx-›ISR & I2C_ISR_TXE. А то второе что значит?
Вычитал Bit Transfer Complite. Значит его можно убрать...
Вот поэтому использую HAL, там хороший перенос кода с камня на другой камень. Вот пример, извините за плагиат, не помню где взял.

https://github.com/SL-RU/stm32libs/t...sd1306/ssd1306 вспомнил.

Последний раз редактировалось Alex271978; 15.09.2017 в 16:32.
Alex271978 вне форума  
Непрочитано 20.09.2017, 06:39  
CERGEI1982
Почётный гражданин KAZUS.RU
 
Аватар для CERGEI1982
 
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
CERGEI1982 на пути к лучшему
По умолчанию Re: OLED ssd1306 + STM32f030f4

Сообщение от Alex271978 Посмотреть сообщение
Вот поэтому использую HAL, там хороший перенос кода с камня на другой камень.
В топку калокуб,я попытался разобраться что и как внутри он устроен и был страшно удивлен как могли так раздуть код. Да и ошибок там хватает.
__________________
Глаза боятся,а руки делают.
CERGEI1982 вне форума  
Непрочитано 16.12.2017, 00:03  
miwutka
Почётный гражданин KAZUS.RU
 
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
miwutka на пути к лучшему
По умолчанию Re: OLED ssd1306 + STM32f030f4

Мужики подскажите как I2C на ДМА переключить? SSD1306 начал немного мерехтеть типа)) Загрузил проц всякой ерундой нужной и теперь сбивается синхронизация изза прерываний от системного таймера(на 1 мс настроен). Если прерывание отключаю то всё норм. Если обновление дисплея в прерывание ставлю то всё отлично но так не надо мне )) Думаю ДМА должно помочь в этой проблеме...?
Если кто может подскажите как должно работать?

может у когото есть пример дма+другой дисплей. Хоть посмотреть примерно... проц stm32f03071

вот мои две функции для вывода на дисплей
PHP код:
#define SSD1306_WIDTH            130
#define SSD1306_HEIGHT           64

void SSD1306_UpdateScreen_My(void) {
    
uint8_t m;
    
    for (
0‹ 8m++) {
        
ssd1306_send(0x00,0xB0 m);
        
ssd1306_send(0x00,0x00);
        
ssd1306_send(0x00,0x10);
        
        
/* Write multi data */
        
ssd1306_Multisend(0x40, &SSD1306_Buffer[SSD1306_WIDTH m], SSD1306_WIDTH);
    }
}

void     ssd1306_Multisend(uint8_t control_byteuint8_tdatauint16_t count)
        {
         
uint8_t i;
        
I2C1-›CR2 I2C_CR2_AUTOEND | ((count+1)‹‹16) | (SSD1306_I2C_ADDR‹‹1); // | I2C_CR2_AUTOEND пока count не поставил +1 передача в экран не прописывалась, но I2C шла передача
        
            /* Check Tx empty */
      //while (!(I2C1-›ISR & I2C_ISR_TXE) );
         
while ( (!(I2C1-›ISR I2C_ISR_TXE) ) && (Timeout == 0) )
            {
               
I2C_Timout++;
               if (
I2C_Timout == ssd1306_I2C_TIMEOUT) {I2C_Timout 0;Timeout 1; }
            };
            
Timeout 0;
            
I2C_Timout 0;
    
     
I2C1-›TXDR control_byte
     
I2C1-›CR2 |= I2C_CR2_START
    while (!(
I2C1-›ISR I2C_ISR_TXIS) );    
        
         for (
0‹ counti++) {
            
            
I2C1-›TXDR data[i];
            
//while (!(I2C1-›ISR & I2C_ISR_TXE) );
            
while ( (!(I2C1-›ISR I2C_ISR_TXE) ) && (Timeout == 0) )
            {
               
I2C_Timout++;
               if (
I2C_Timout == ssd1306_I2C_TIMEOUT) {I2C_Timout 0;Timeout 1; }
            };
            
Timeout 0;
            
I2C_Timout 0;
         }
            
I2C1-›CR2 |= I2C_CR2_STOP;
        } 
я так понимаю что эту функцию ssd1306_Multisend мне нужно будет отключить а вместо нее будет новая с ДМА.Эта функция отправляет строку из 130 точек.(при 128 полоса в 2 пикселя с боку) Мне нужно чтобы в буфер подготавливались новые 130 байт и брались ДМА?

Последний раз редактировалось miwutka; 16.12.2017 в 00:08.
miwutka вне форума  
Непрочитано 16.12.2017, 13:34  
CERGEI1982
Почётный гражданин KAZUS.RU
 
Аватар для CERGEI1982
 
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
CERGEI1982 на пути к лучшему
По умолчанию Re: OLED ssd1306 + STM32f030f4

Пробовал в 103 глючил дма,через минут 5 вообще стопорился. Делал в 4 стоки буквы и отправлял пачками по 128х4 .
__________________
Глаза боятся,а руки делают.
CERGEI1982 вне форума  
 

Закладки
Опции темы

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
OLED из ЖК 1602 mikesmith Делимся опытом 0 19.05.2016 17:34
LCD или OLED графический дисплей? NecroSS Электроника - это просто 0 06.08.2010 21:33
OLED индикаторы(возможно, от мобильных телефонов, 64х48 и более) Savrik Информация по радиокомпонентам 11 30.06.2010 12:17
Pictiva 128x64 (SSD0323) OLED Module Proteus VSM Model OttoStirliz Микроконтроллеры, АЦП, память и т.д 28 02.04.2008 17:44


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


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot