Перейти к содержанию

Msp430 С Lcd Экранчиком. Проблема С Частотой


Рекомендуемые сообщения

Работаю с микроконтроллером msp430f4784 и LCD экранчиком SBLCDA4. В микроконтроллере встроен драйвер LCD, поэтому разобраться в его работе было не сложно. Составил табличку, набросал программу. Результат, как всегда, не оправдал ожиданий. Изображение мерцало. Такое чувство, что динамическая индикация происходит очень медленно, Но часовой кварц стоит, и указан номинал конденсаторов на нем. UART же как то работал.

Эмпирическим путем было выяснено, что мерцание иногда пропадает если взяться за землю на программаторе. Пробовали питать всю схему от источника питания, без участия программатора, все равно все так же мерцает. Перепаял кварц максимально близко к микроконтроллеру, а так же заземлил его корпус. Это тоже не помогло. Идеи уже кончились..

Прикладываю с программой пару гифок, как все это происходит на деле

#include "msp430.h"
void main(void)
{
int i;
WDTCTL = WDTPW + WDTHOLD;				
FLL_CTL0 |= XCAP10PF;					
LCDACTL = LCDON + LCD4MUX + LCDFREQ_128;
LCDAPCTL0 = LCDS0+LCDS4+LCDS8+LCDS12+LCDS16+LCDS20;
P5SEL = BIT2+BIT3+BIT4;				
for( i = 0; i < 11; i ++)
{
 LCDMEM[i] = 0xFF;						
}

_BIS_SR(LPM3_bits);					
}

Ссылка на комментарий
Поделиться на другие сайты

Как буд - то питание на дисплей с определённой частотой идёт найди питание дисплея и посмотри чё туда идёт с МК

Тут нет питания так таковой. Есть четыре COM на которые поочередно что то подается напряжение, и еще куча ног на специальные порты на МК. Суть в том что МК, если верить какой то pdf-ки с сайта TI, выдает переменное напряжение на COM0-COM3 последовательно и в соответствии включает нужные пины на МК. Ну я все о том, что питания LCD нет. Это просто матрица с кристаликами и выходами к ним. Память LCD находиться в MK.

Ссылка на комментарий
Поделиться на другие сайты

Сравнительное тестирование аккумуляторов EVE Energy и Samsung типоразмера 18650

Инженеры КОМПЭЛ провели сравнительное тестирование аккумуляторов EVE и Samsung популярного для бытовых и индустриальных применений типоразмера 18650. 

Для теста были выбраны аккумуляторы литий-никельмарганцевой системы: по два образца одного наименования каждого производителя – и протестированы на двух значениях тока разряда: 0,5 А и 2,5 А. Испытания проводились в нормальных условиях на электронной нагрузке EBD-USB от ZKEtech, а зарядка осуществлялась от лабораторного источника питания в режиме CC+CV в соответствии с рекомендациями в даташите на определенную модель. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. 

Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств. Подробнее параметры и результаты тестов новой серии PLM по ссылке.

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Так дисплей же или с ОА или с ОК а МК выводит единицы или нули на аноды или катоды ведь так

Я немного не понимаю что такое ОА и ОК...

Ссылка на комментарий
Поделиться на другие сайты

Литиевые батарейки и аккумуляторы от мирового лидера  EVE в Компэл

Компания Компэл, официальный дистрибьютор EVE Energy, бренда №1 по производству химических источников тока (ХИТ) в мире, предлагает продукцию EVE как со склада, так и под заказ. Компания EVE широко известна в странах Европы, Америки и Юго-Восточной Азии уже более 20 лет. Недавно EVE была объявлена поставщиком новых аккумуляторных элементов круглого формата для электрических моделей «нового класса» компании BMW.

Продукция EVE предназначена для самого широкого спектра применений – от бытового до промышленного. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Хмм. Ну так или иначе, с мк идет именно то, что показывается на LCD. Как я уже говорил, устройство LCD максимально просто, все грабли в подключении или прошивке МК. По этому поводу и вопрос :)

Ссылка на комментарий
Поделиться на другие сайты

Я бы уменьшил коэф. деления для частоты драйвера LCD.

Попробуйте написать так:

LCDACTL = LCDON + LCDSON + LCD4MUX + LCDFREQ_32;

Хотя на счет "LCDSON" не уверен.

Так дисплей же или с ОА или с ОК а МК выводит единицы или нули на аноды или катоды ведь так

Нет. ЖКИ иначе устроен.

Изменено пользователем Cobban
Ссылка на комментарий
Поделиться на другие сайты

Давно не игрался с МСП по этому по программе не подскажу. Но копать нужно в сторону частоты обновления экрана. Она должна быть как минимум в 2 а то и в 3 раза выше. Ну и стоит проверить есть ли смена полярности на управляющих выводах МК. Хотя если изображение есть то и смена тоже есть. Скорей всего проблема в частоте обновления экрана.

- А совесть в курсе? - А совесть в доле! :-D

Эксперт — это человек, который совершил все возможные ошибки в некотором узком поле.

Все грамматические ошибки являются авторским стилем изложения материала.

Ссылка на комментарий
Поделиться на другие сайты

Подключал ЖК экран к контроллеру MSP430F449. Вроде особых проблем не заметил. В качестве исходника брал пример от техаса.

Мне почемуто кажется у Вас ошибка с подключением ЖК к контроллеру. Такое ощущение что линии ЖК которые COM подключены к линиям контроллера Sx.

Попробуйте для начала сделать так

#include "msp430.h"
void main(void)
{
int i;
WDTCTL = WDTPW + WDTHOLD;							
FLL_CTL0 |= XCAP10PF;								
LCDACTL = LCDON + LCDSON + LCD4MUX + LCDFREQ_128;
LCDAPCTL0 = LCDS0+LCDS4+LCDS8+LCDS12+LCDS16+LCDS20;
P5SEL = BIT2+BIT3+BIT4+BIT5;                        
for( i = 0; i < 11; i ++)
{
	 LCDMEM[i] = 0xFF;											
}
P1DIR = 0x22;							 // P1.1,5 to output direction
P1SEL = 0x22;							 // P1.1,5 to output MCLK & ACLK

}

и ногу R03 заземлить.

Потом померяйте (если конечно есть чем :-)) на ногах 1.1 частоту MCLK и на 1.5 ACKL. Мало ли что там с частотами.

Хотя на счет "LCDSON" не уверен.

Да нет все нормально. Этот бит служит для организации мигания.

Если он в единице то все сегменты которые должны светиться-светятся, если в ноле то все НЕГОРЯТ.

Вот руководство пользователя на msp430x4x первая часть архива

вторая часть архива

правда это устаревшее описание

Семейство микроконтроллеров MSP430x4xx руководство пользователя.part1.rar

Семейство микроконтроллеров MSP430x4xx руководство пользователя.part2.rar

Изменено пользователем tvilsa
Ссылка на комментарий
Поделиться на другие сайты

Вот нашел техасовский пример именно для вашего экрана

//******************************************************************************
//    MSP430x47xx Demo - LCD_A Put "0123456" on SBLCDA4 LCD
//
//  Description; Put "0123456" on SBLCDA4 LCD.
//  ACLK = LFXT1 = 32768, MCLK = SMCLK = DCO = 32xACLK = 1.048576MHz
//  //*An external watch crystal is required on XIN/XOUT for ACLK*//
//
//			    MSP430x47xx
//		    -----------------
//	    /|\|			  XIN|-
//		 | |				 | 32kHz
//		 --|RST		  XOUT|-		 SBLCDA4
//		   |				 |	    ___________
//		   |			  S4 |------>|14		 |
//		   |			  S5 |------>|13		 |
//		   |			 ..  | ....  |..		 |
//		   |			 S17 |------>|1		  |
//		   |			 COM0|------>|15		 |
//		   |			 COM1|------>|16		 |
//		   |			 COM2|------>|17		 |
//		   |			 COM3|------>|18		 |
//		   |			 S18 |------>|19		 |
//		   |			 S19 |------>|20		 |
//		   |			  .. | ....  |..		 |
//		   |			 S25 |------>|26		 |	
//		   |_________________|	   |___________|
//
//
//  P. Thanigai / K.Venkat
//  Texas Instruments Inc.
//  November 2007
//  Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.42A
//*****************************************************************************
#include <msp430x47x4.h>
// LCD segment definitions.
#define h 0x80
#define e 0x40
#define g 0x20
#define f 0x10
#define d 0x08
#define c 0x04
#define b 0x02
#define a 0x01
const char char_gen[] = {				   // definitions for digits
 a+b+c+d+e+f,							  // Displays "0"
 b+c,									  // Displays "1"
 a+b+d+e+g,							    // Displays "2"
 a+b+c+d+g,							    // Displays "3"
 b+c+f+g,								  // Displays "4"
 a+c+d+f+g,							    // Displays "5"
 a+c+d+e+f+g,							  // Displays "6"
 a+b+c,								    // Displays "7"
 a+b+c+d+e+f+g,						    // Displays "8"
 a+b+c+d+f+g							   // Displays "9"
};
void main(void)
{
 volatile unsigned int i;
 WDTCTL = WDTPW +WDTHOLD;				  // Stop WDT
 FLL_CTL0 |= XCAP14PF;					 // Configure load caps
 // Wait for xtal to stabilize
 do
 {
   IFG1 &= ~OFIFG;						 // Clear OSCFault flag
   for (i = 0x47FF; i > 0; i--);		   // Time for flag to set
 }
 while ((IFG1 & OFIFG));				   // OSCFault flag still set?

 P5SEL = 0x1C;							 // Set COM pins for LCD
 LCDACTL = LCDON+LCD4MUX;				  // 4mux LCD, ACLK/32
 LCDAPCTL0 = 0x7E;						 // Segments 4-24
 for( i = 0; i < 20; i ++)
 {
   LCDMEM[i] = 0;						  // Clear LCD
 }
 for (i=2;i<9;i++)
 {
   LCDMEM[i] = char_gen[i-2];
 }
 _BIS_SR(LPM3_bits);					   // Enter LPM3
}

Ссылка на комментарий
Поделиться на другие сайты

  • 4 месяца спустя...

Вот нашел техасовский пример именно для вашего экрана

//******************************************************************************
// MSP430x47xx Demo - LCD_A Put "0123456" on SBLCDA4 LCD
//
// Description; Put "0123456" on SBLCDA4 LCD.
// ACLK = LFXT1 = 32768, MCLK = SMCLK = DCO = 32xACLK = 1.048576MHz
// //*An external watch crystal is required on XIN/XOUT for ACLK*//
//
//			 MSP430x47xx
//		 -----------------
//	 /|\|			 XIN|-
//		 | |				 | 32kHz
//		 --|RST		 XOUT|-		 SBLCDA4
//		 |				 |	 ___________
//		 |			 S4 |------>|14		 |
//		 |			 S5 |------>|13		 |
//		 |			 .. | .... |..		 |
//		 |			 S17 |------>|1		 |
//		 |			 COM0|------>|15		 |
//		 |			 COM1|------>|16		 |
//		 |			 COM2|------>|17		 |
//		 |			 COM3|------>|18		 |
//		 |			 S18 |------>|19		 |
//		 |			 S19 |------>|20		 |
//		 |			 .. | .... |..		 |
//		 |			 S25 |------>|26		 |	
//		 |_________________|	 |___________|
//
//
// P. Thanigai / K.Venkat
// Texas Instruments Inc.
// November 2007
// Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.42A
//*****************************************************************************
#include <msp430x47x4.h>
// LCD segment definitions.
#define h 0x80
#define e 0x40
#define g 0x20
#define f 0x10
#define d 0x08
#define c 0x04
#define b 0x02
#define a 0x01
const char char_gen[] = {				 // definitions for digits
a+b+c+d+e+f,							 // Displays "0"
b+c,									 // Displays "1"
a+b+d+e+g,							 // Displays "2"
a+b+c+d+g,							 // Displays "3"
b+c+f+g,								 // Displays "4"
a+c+d+f+g,							 // Displays "5"
a+c+d+e+f+g,							 // Displays "6"
a+b+c,								 // Displays "7"
a+b+c+d+e+f+g,						 // Displays "8"
a+b+c+d+f+g							 // Displays "9"
};
void main(void)
{
volatile unsigned int i;
WDTCTL = WDTPW +WDTHOLD;				 // Stop WDT
FLL_CTL0 |= XCAP14PF;					 // Configure load caps
// Wait for xtal to stabilize
do
{
IFG1 &= ~OFIFG;						 // Clear OSCFault flag
for (i = 0x47FF; i > 0; i--);		 // Time for flag to set
}
while ((IFG1 & OFIFG));				 // OSCFault flag still set?

P5SEL = 0x1C;							 // Set COM pins for LCD
LCDACTL = LCDON+LCD4MUX;				 // 4mux LCD, ACLK/32
LCDAPCTL0 = 0x7E;						 // Segments 4-24
for( i = 0; i < 20; i ++)
{
LCDMEM[i] = 0;						 // Clear LCD
}
for (i=2;i<9;i++)
{
LCDMEM[i] = char_gen[i-2];
}
_BIS_SR(LPM3_bits);					 // Enter LPM3
}

Буквально на днях пришли платы со схемой. Ваш пример выдает аналогичный вариант, все моргает и не выводится все что нужно. Т.к. плата уже полностью печатная и дорожки максимально короткие, о наводках никакой речи идти не может.

post-129151-0-58128800-1363271256_thumb.jpg

Подключал ЖК экран к контроллеру MSP430F449. Вроде особых проблем не заметил. В качестве исходника брал пример от техаса.

Мне почемуто кажется у Вас ошибка с подключением ЖК к контроллеру. Такое ощущение что линии ЖК которые COM подключены к линиям контроллера Sx.

Попробуйте для начала сделать так

#include "msp430.h"
void main(void)
{
int i;
WDTCTL = WDTPW + WDTHOLD;							
FLL_CTL0 |= XCAP10PF;								
LCDACTL = LCDON + LCDSON + LCD4MUX + LCDFREQ_128;
LCDAPCTL0 = LCDS0+LCDS4+LCDS8+LCDS12+LCDS16+LCDS20;
P5SEL = BIT2+BIT3+BIT4+BIT5;
for( i = 0; i < 11; i ++)
{
	 LCDMEM[i] = 0xFF;											
}
P1DIR = 0x22;							 // P1.1,5 to output direction
P1SEL = 0x22;							 // P1.1,5 to output MCLK & ACLK

}

и ногу R03 заземлить.

Потом померяйте (если конечно есть чем :-)) на ногах 1.1 частоту MCLK и на 1.5 ACKL. Мало ли что там с частотами.

Хотя на счет "LCDSON" не уверен.

Да нет все нормально. Этот бит служит для организации мигания.

Если он в единице то все сегменты которые должны светиться-светятся, если в ноле то все НЕГОРЯТ.

Вот руководство пользователя на msp430x4x первая часть архива

вторая часть архива

правда это устаревшее описание

Это описание мне уже знакомо. В правильности подключения LCD я уверен. По распиновке все подключалось.

Ссылка на комментарий
Поделиться на другие сайты

Припаял электролит на 10uF на ногу LCDCAP микроконтроллера. Получил такую штуку

post-129151-0-45712900-1363335294_thumb.jpg

Видно что сразу стало получше. Но дисплей все еще каловратит

Ссылка на комментарий
Поделиться на другие сайты

400мс период этого дела? Не многовато ли?

> Правила форума <

...из древних времен доходят до нас слухи о колдунах и волшебниках... - кто бы мог подумать, что так может начинаться дипломная работа по радиотехнике...

...это не дым от канифоли, нет... это души умерших транзисторов....

Первый закон Ома: никому не рассказывать про Ома!

Ну вот, а ты говорил ноль...

Ссылка на комментарий
Поделиться на другие сайты

В результате долгих подборов, все же было выявлено необходимое кол-во сегментов которые должны были бы быть задействованы в проекте. С этим набором ничего не мерцает. Поэтому было решено так это и оставить

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
  • Сообщения

    • @Armenn Хорошо. Сделал резистор на 5 Ом.  Результата два. 1. Если включить блок питания в сеть, а уже потом подключить резистор на 5 Ом в фиолетовый провод, тогда резистор просто будет греться.  2. Если подключить резистор на 5 Ом в фиолетовый провод, а уже потом включить блок питания в сеть, тогда случится следующее: лампочка предохранителя от КЗ засветится (через которую я подключаю БП в сеть), а блок питания начнет пищать. Заснял это на видео -   
    • Ну-вы и сравнили. Вот когда будете строить сварочный инвертор на такую частоту-то там нужно  будет учитывать скин эффект. А на частоты до 75кгц-можно забить, отбить и не принимать во внимание. Тем более-что все стараются аппараты до 200А строить. На кольце плотность тока до 15А на мм ^2, на Ш от 10А на  мм^2 А вентилятор-он все лишние тепло сдует ко льдам в Антарктиде. Проверьте монолит 2,12мм, я таким мотаю СТ. Интересно-что там с ним делается на частотах от 30 до 50кГц? Длинна провода примерно 2 метра-На сердечник Е70 влазит 18 витков
    • Добрый вечер всем!  Проблема следующая: Есть флешка с записанной файловой системой через USB MASS STORAGE DEVICES. При "втыкании"  в порт USB открывается на ПК диск с содержимым. Я подключил библиотеку Fatfs и прописал низкоуровневые функции чтения и записи в файле diskio.c Работаю с файлом так:   disk_initialize(SDFatFs.drv); if(f_mount(&SDFatFs,(TCHAR const*)USER_Path,0)!=FR_OK) { //Error_Handler(); Usart1_Send_String("Error_f_mount!\r\n"); } else { if(f_open(&MyFile,"01.WAV",FA_READ)!=FR_OK) { //Error_Handler(); Usart1_Send_String("Error_open_File1!\r\n"); } else { Usart1_Send_String("open_File_OK1!\r\n"); } if(f_open(&MyFile,"01.wav",FA_READ)!=FR_OK) { //Error_Handler(); Usart1_Send_String("Error_open_File2!\r\n"); } else { Usart1_Send_String("open_File_OK2!\r\n"); UINT testBytes=0; f_read(&MyFile, buff1, 512, &testBytes); sprintf(buf1, "TestBytes=%d\r\n", testBytes); Usart1_Send_String(buf1); Usart1_Send_hex((char*)buff1, 512); Usart1_Send_String("read_File_complite!\r\n"); f_close(&MyFile); } } подправил diskio.c так:   DRESULT disk_read ( BYTE pdrv, /* Physical drive nmuber to identify the drive */ BYTE *buff, /* Data buffer to store read data */ DWORD sector, /* Sector address in LBA */ UINT count /* Number of sectors to read */ ) { DRESULT res; //res = disk.drv[pdrv]->disk_read(disk.lun[pdrv], buff, sector, count); sprintf(buffer0, "sector=%lu\r\n", sector); Usart1_Send_String(buffer0); w25qReadPage(buff, sector*2); w25qReadPage(buff + 256, sector*2+256); res=RES_OK; return res; } #if _USE_WRITE == 1 DRESULT disk_write ( BYTE pdrv, /* Physical drive nmuber to identify the drive */ const BYTE *buff, /* Data to be written */ DWORD sector, /* Sector address in LBA */ UINT count /* Number of sectors to write */ ) { DRESULT res; //res = disk.drv[pdrv]->disk_write(disk.lun[pdrv], buff, sector, count); w25qWritingByUSB(sector, (uint8_t*)buff); res=RES_OK; return res; } #endif /* _USE_WRITE == 1 */ функцию чтения на самом деле пробовал прописывать по разному, все равно не корректно работает... Выдает в отладке такое:   Program start!.... sector=0 // это обращение к функции чтения DRESULT disk_read (); Error_open_File1! sector=0 // это обращение к функции чтения DRESULT disk_read (); Error_open_File2! Что я забыл еще добавить?
    • В былые годы запрещалось размещать на форуме бессмысленные темы. Видать, с тех пор правила существенно изменились.
    • скачай новый архив. там есть важные изменения в комповой программе, по сравнению с той, что я отправлял в личке. исправлены недоделки и добавлены проверки на некорректные действия.
    • Здесь все индивидуально, точного ответа нет. Тип фоторезиста, качество фотошаблона, расстояние и время засветки, длина волны св.диодов, "полоскание" в химии ... Надо все пробовать самому, ручками, опыт придет со временем, ничего сложного там нет. На форуме есть ветка, почитайте.
  • Похожий контент

×
×
  • Создать...