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

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

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

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

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

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


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

Сообщение от NewWriter Посмотреть сообщение
Вообще-то, дисплей должен всегда быть подключен.
Ну да )) Просто я гдето находил в сети (сейчас не нашел) где человек скачал чужую либу I2C и там она при сбоях зависала. Вот я и думал чтото на подобе сделать. Но впринципе то и да - без дисплея делать нечего. ))
Реклама:
miwutka вне форума  
Непрочитано 02.10.2016, 21:21  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: OLED ssd1306 + STM32f030f4

Заходишь таймер. Перед блокирующий проверкой флагов и2с заряжаешь таймер. В проверке флагов проверяешь и таймер , если обнулится делаешь выход из функции с возвращение кода ошибки.
Счас на смарте, завтра более подробно.
У New Writer SPI там и таймаут не так критичен да и зависнуть сложно...
__________________
Осторожно , злой кот
dosikus вне форума  
Непрочитано 02.10.2016, 23:08  
miwutka
Почётный гражданин KAZUS.RU
 
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
miwutka на пути к лучшему
По умолчанию Re: OLED ssd1306 + STM32f030f4

Timeout register (I2C_TIMEOUTR) - а для чего вот этот регистр у Ф030 ?
У 103-ей серии вроде в регистрах есть таймаут?

Я понимаю что дисплей должен быть включен всегда, но вот я его поставлю в машину и еще еепром будет писать иногда. Если дисплей "втыкнет" то надо чтоб еепромка работала. Примерно для этого хочу сделать чтото подобное таймауту. Буду ждать завтра dosikus...
miwutka вне форума  
Непрочитано 03.10.2016, 09:39  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: OLED ssd1306 + STM32f030f4

в main

Код:
static volatile uint32_t TimingDelay;
	 static volatile uint32_t TimeOut;

	void SysTick_Handler(void)
	{			
				
			if (TimingDelay) {
				TimingDelay--;
			}
		
			if (TimeOut) {
				TimeOut--;
			}
		
		}






в модуле

Код:
extern uint32_t TimeOut;
#define SSD1306_OWN_ADDRESS  0x3C// 0x3D
#define  I2C_TIMEOUT 25

int   ssd1306_send(uint8_t control_byte, uint8_t data)
		{
		I2C1-›CR2 =  I2C_CR2_AUTOEND | (2‹‹16) | (SSD1306_OWN_ADDRESS‹‹1); 
		
	  TimeOut=I2C_TIMEOUT;
	  while (!(I2C1-›ISR & I2C_ISR_TXE) )
	   {  
	   if(!TimeOut) return -1;
	   }
	
	 I2C1-›TXDR = control_byte; 
	 I2C1-›CR2 |= I2C_CR2_START; 
		
		while (!(I2C1-›ISR & I2C_ISR_TXIS) );
		I2C1-›TXDR = data; 
       return 0;			
		}

Проверяешь выхлоп ssd1306_send() и делаешь выводы.

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

Купил стм32ф030с8т6.
Подключил Этот дисплей на В6, В7. Шина молчит.... Можнт я чтото опять не то делаю?
Подскажите плиз...
PHP код:

void Init_I2C
(void)
{
   
I2C_InitTypeDef i2c;
      
RCC-›AHBENR |= RCC_AHBENR_GPIOBEN;
        
        
RCC-›APB1ENR |= RCC_APB1ENR_I2C1EN;
        
RCC-›CFGR3 |= RCC_CFGR3_I2C1SW
        
        
//GPIOA-›AFR[0] |= (1‹‹(4*0)) |(1‹‹(4*1));
      
GPIO_PinAFConfig(GPIOBGPIO_PinSource6GPIO_AF_1);//3.5.1.4
      
GPIO_PinAFConfig(GPIOBGPIO_PinSource7GPIO_AF_1);
        
GPIOB-›MODER &= ~(GPIO_MODER_MODER6 |GPIO_MODER_MODER7);
        
GPIOB-›MODER |= (GPIO_MODER_MODER6_1 |GPIO_MODER_MODER7_1);
        
GPIOB-›OTYPER |=(GPIO_OTYPER_OT_6 |GPIO_OTYPER_OT_7);
        
        
I2C1-›TIMINGR = (uint32_t)0x00B01A4B;//0x00B01A4B; - 400   0x00700701 - 1.24 MHz
        
I2C1-›CR1 I2C_CR1_PE
  


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

GPIOB-›MODER &= ~(GPIO_MODER_MODER6 |GPIO_MODER_MODER7);
GPIOB-›MODER |= (GPIO_MODER_MODER6_1 |GPIO_MODER_MODER7_1);
GPIOB-›OTYPER |=(GPIO_OTYPER_OT_6 |GPIO_OTYPER_OT_7);

блин вместо GPIOB писал GPIOA - всё спешка.... всё работает...
miwutka вне форума  
Непрочитано 05.10.2016, 22:25  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: OLED ssd1306 + STM32f030f4

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

пока только осциллограф. Завтра с таможни поеду забирать. Новая беда ))
Таймер 16, и 17 запустил как ШИМ каналы 1. Таймеры работают в отладке, IDR8, IDR9 изменяются, а на выходе ничего..... Так шим делал же уже много раз. Правда на 20-пиновой стм32ф030.
PHP код:
void InitTimer16(void)
{
    
    
//PORTB8 -  OUT Test strelok
    
TIM_TimeBaseInitTypeDef TIM_Time_user;
    
TIM_OCInitTypeDef Hard_PWM_ini;
    
GPIO_InitTypeDef Pin;

    
RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM16ENABLE);// ???????? ???????????? ??????? 3
    
    
TIM_Time_user.TIM_Prescaler 2600 1//100 000 kHz///620
    
TIM_Time_user.TIM_CounterMode TIM_CounterMode_Up;
    
TIM_Time_user.TIM_Period 200;  //?? ????? ?????? ??????? ? ????????????
    
TIM_Time_user.TIM_ClockDivision TIM_CKD_DIV2;//26 MHz тактирование
    
TIM_TimeBaseInit(TIM16, &TIM_Time_user);
    
    
    
        
Hard_PWM_ini.TIM_OCMode TIM_OCMode_PWM1;
        
Hard_PWM_ini.TIM_OutputState TIM_OutputState_Enable;
        
//Hard_PWM_ini.TIM_OutputNState = ;  This parameter is valid only for TIM1 and TIM8
        
Hard_PWM_ini.TIM_Pulse 100;
        
Hard_PWM_ini.TIM_OCPolarity TIM_OCPolarity_High;
        
//Hard_PWM_ini.TIM_OCNPolarity = ;This parameter is valid only for TIM1 and TIM8
        //Hard_PWM_ini.TIM_OCIdleState = ;This parameter is valid only for TIM1 and TIM8
        //Hard_PWM_ini.TIM_OCNIdleState = ;This parameter is valid only for TIM1 and TIM8

        //NVIC_EnableIRQ(TIM3_IRQn); //????????? ????????? ?????????? ??????? 2
        //TIM_ITConfig(TIM3, TIM_IT_Update, ENABLE);
        
        
        
Pin.GPIO_Pin GPIO_Pin_8;// OUT
        
Pin.GPIO_Mode GPIO_Mode_AF;
        
Pin.GPIO_Speed GPIO_Speed_50MHz;
        
Pin.GPIO_OType GPIO_OType_PP;
        
Pin.GPIO_PuPd GPIO_PuPd_NOPULL;
        
GPIO_Init(GPIOB, &Pin);
        
GPIO_PinAFConfig(GPIOBGPIO_PinSource8GPIO_AF_0); //2,5.0
    
    
TIM_OC1Init(TIM16, &Hard_PWM_ini);//???????? ??????
        
TIM_Cmd(TIM16ENABLE);//???????? ??????

Вроде всё правильно. Вот ток с альтернативной функцией не разобрался чтобы ее без SPL включать... Подскажите что может быть не так?
miwutka вне форума  
Непрочитано 06.10.2016, 08:31  
NewWriter
Заблокирован
 
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,220 раз(а) в 1,319 сообщении(ях)
NewWriter на пути к лучшему
По умолчанию Re: OLED ssd1306 + STM32f030f4

Таймеры с 15 по 17 имеют, в дополнение, еще один, break and dead-time регистр BDTR, и в нем есть бит MOE, установка которого разрешит работу выхда ШИМ.
NewWriter вне форума  
Сказали "Спасибо" NewWriter
miwutka (06.10.2016)
Непрочитано 06.10.2016, 09:04  
miwutka
Почётный гражданин KAZUS.RU
 
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
miwutka на пути к лучшему
По умолчанию Re: OLED ssd1306 + STM32f030f4

Забыл про него.....
miwutka вне форума  
 

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

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

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, время: 20:23.


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