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

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

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

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

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

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


 
Опции темы
Непрочитано 21.08.2012, 17:30  
Arpad1
Частый гость
 
Регистрация: 24.08.2010
Сообщений: 12
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Arpad1 на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

.....При такой формулировке вопроса, появляется встречный вопрос - сколько вы готовы за это заплатить?
Немец назначил мне цену 1 дисплей LS020, пока искал ему и нашел он исчез.
Во вторых если хочешь поднять свой рейтинг в глазах у ребят у кого есть еще LS020 и переориентировать их на СТМ32 что вообще-то может стоит
Во третьих сам пытался это сделать имея опыт с STM32F10x с LS020 у меня не получилось.
С этого не сделать коммерческого проекта ввиду практического отсутствия LS020
Реклама:
Arpad1 вне форума  
Непрочитано 22.08.2012, 16:08  
sosedi
Частый гость
 
Регистрация: 31.07.2012
Сообщений: 45
Сказал спасибо: 28
Сказали Спасибо 8 раз(а) в 8 сообщении(ях)
sosedi на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Вопрос, наверно, не совсем по адресу, но все же!
имеется функция для отправки данных на дисплей ЖКИ:
Цитата:
void lcd_out(char * txt)
{
while(*txt) {
lcd_send_data(*txt);
txt++;
}
}

void lcd_send_data(uint8_t byte_com)
{
LSD_delay_ms(100);
LCD_PORT-›BSRRH |= (LCD_DB4|LCD_DB5|LCD_DB6|LCD_DB7);
// RS=1 RW=0
LCD_CONTROL-›BSRRH |= LCD_RW;
LCD_CONTROL-›ODR |= LCD_RS;
// отправка старшего полубайта
if (byte_com & 0x10) {
LCD_PORT-›ODR |=LCD_DB4;
}
if (byte_com & 0x20) {
LCD_PORT-›ODR |=LCD_DB5;
}
if (byte_com & 0x40) {
LCD_PORT-›ODR |=LCD_DB6;
}
if (byte_com & 0x80) {
LCD_PORT-›ODR |=LCD_DB7;
}
lcd_E_ON();
LCD_PORT-›BSRRH |= (LCD_DB4|LCD_DB5|LCD_DB6|LCD_DB7);
// отправка младшего полубайта
if (byte_com & 0x01) {
LCD_PORT-›ODR |=LCD_DB4;
}
if (byte_com & 0x02) {
LCD_PORT-›ODR |=LCD_DB5;
}
if (byte_com & 0x04) {
LCD_PORT-›ODR |=LCD_DB6;
}
if (byte_com & 0x0 {
LCD_PORT-›ODR |=LCD_DB7;
}
lcd_E_ON();
}
т.е для отправки любой фразы, достаточно написать void lcd_out("любая фраза");
вопрос: как сделать так что бы можно было отправить значение любой переменной!
т.е к примеру, есть переменная "value" равная 1054, тк вот как отправить её на дисплей,используя void lcd_out(value)?
разумеется можно написать отдельную функцию, которая будет считать сотни десятки единицы и по отдельности отсылать!
но нельзя ли какниб отправить с использованием уже имеющейся функции, может как-то экранировать переменную можно, типа void lcd_out("/value")?
sosedi вне форума  
Непрочитано 22.08.2012, 16:12  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

sosedi, Волшебное слово ITOA .

Вот из загашника ...

Код:
//////////////////////////////////////////////////////////////////////////////
// ITOA
///////////////////////////////////////////////////////////////////////////////

/*
** The following two functions together make up an itoa()
** implementation. Function i2a() is a 'private' function
** called by the public itoa() function.
**
** itoa() takes three arguments:
**        1) the integer to be converted,
**        2) a pointer to a character conversion buffer,
**        3) the radix for the conversion
**           which can range between 2 and 36 inclusive
**           range errors on the radix default it to base10
** Code from http://groups.google.com/group/comp.lang.c/msg/66552ef8b04fe1ab?pli=1
*/

static char *i2a(unsigned i, char *a, unsigned r)
{
    if (i / r › 0)
        a = i2a(i / r, a, r);
    *a = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"[i % r];
    return a + 1;
}

char *itoa(int i, char *a, int r)
{
    if ((r ‹ 2) || (r › 36))
        r = 10;
    if (i ‹ 0) {
        *a = '-';
        *i2a(-(unsigned) i, a + 1, r) = 0;
    } else
        *i2a(i, a, r) = 0;

    return a;
}
__________________
Осторожно , злой кот

Последний раз редактировалось dosikus; 22.08.2012 в 16:15.
dosikus вне форума  
Сказали "Спасибо" dosikus
sosedi (23.08.2012)
Непрочитано 22.08.2012, 16:47  
sosedi
Частый гость
 
Регистрация: 31.07.2012
Сообщений: 45
Сказал спасибо: 28
Сказали Спасибо 8 раз(а) в 8 сообщении(ях)
sosedi на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от dosikus Посмотреть сообщение
sosedi, Волшебное слово ITOA .

Вот из загашника ...

Код:
//////////////////////////////////////////////////////////////////////////////
// ITOA
///////////////////////////////////////////////////////////////////////////////

/*
** The following two functions together make up an itoa()
** implementation. Function i2a() is a 'private' function
** called by the public itoa() function.
**
** itoa() takes three arguments:
**        1) the integer to be converted,
**        2) a pointer to a character conversion buffer,
**        3) the radix for the conversion
**           which can range between 2 and 36 inclusive
**           range errors on the radix default it to base10
** Code from http://groups.google.com/group/comp.lang.c/msg/66552ef8b04fe1ab?pli=1
*/

static char *i2a(unsigned i, char *a, unsigned r)
{
    if (i / r › 0)
        a = i2a(i / r, a, r);
    *a = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"[i % r];
    return a + 1;
}

char *itoa(int i, char *a, int r)
{
    if ((r ‹ 2) || (r › 36))
        r = 10;
    if (i ‹ 0) {
        *a = '-';
        *i2a(-(unsigned) i, a + 1, r) = 0;
    } else
        *i2a(i, a, r) = 0;

    return a;
}
если честно, то я мало понял из этого кода(по-этому повторюсь,
тк а можно как-то экранировать мою переменную и скормить её массиву?
sosedi вне форума  
Непрочитано 22.08.2012, 18:07  
Hives
Гражданин KAZUS.RU
 
Регистрация: 25.11.2010
Сообщений: 516
Сказал спасибо: 1
Сказали Спасибо 126 раз(а) в 109 сообщении(ях)
Hives на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

sosedi или чуть более универсально:

void lcd_out (char * txt)
{
while(*txt) lcd_send_data(*txt++);
}

// sample
char S[16];
sprintf(S, "%i", Value);
lcd_out(S);
Hives вне форума  
Сказали "Спасибо" Hives
sosedi (23.08.2012)
Непрочитано 22.08.2012, 18:18  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от sosedi Посмотреть сообщение
если честно, то я мало понял из этого кода(по-этому повторюсь,
тк а можно как-то экранировать мою переменную и скормить её массиву?
Собственно , что бы не тратить попусту ресурсы с "помощью" sprintf ,
Смысл такой - ITOA преобразует целое в строку символов , заполняя ими буфер.
Указатель на этот буфер вы и скармливаете своей функции вывода .

Как использовать - вывод значения переменной с основанием 10:
Код:
    char stringa[8];
     ...
    itoa(Ваша переменная,stringa,10);
    lcd_out(stringa);
__________________
Осторожно , злой кот
dosikus вне форума  
Сказали "Спасибо" dosikus
sosedi (23.08.2012)
Непрочитано 22.08.2012, 18:42  
Hives
Гражданин KAZUS.RU
 
Регистрация: 25.11.2010
Сообщений: 516
Сказал спасибо: 1
Сказали Спасибо 126 раз(а) в 109 сообщении(ях)
Hives на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

dosikus мы все еще про STM32 говорим, где мегабайтные флеши и сотни мипс по скорости? и GUI это не то место где нужна суперскорость.
Hives вне форума  
Сказали "Спасибо" Hives
sosedi (23.08.2012)
Непрочитано 22.08.2012, 19:02  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Hives, Ну,ну ...
А sosedi из любопытства на CMSIS переводит все ...
__________________
Осторожно , злой кот

Последний раз редактировалось dosikus; 22.08.2012 в 19:06.
dosikus вне форума  
Сказали "Спасибо" dosikus
sosedi (23.08.2012)
Непрочитано 22.08.2012, 21:43  
Mike121234
Вид на жительство
 
Аватар для Mike121234
 
Регистрация: 02.04.2008
Адрес: Ленинград
Сообщений: 346
Сказал спасибо: 67
Сказали Спасибо 8 раз(а) в 7 сообщении(ях)
Mike121234 на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от Sl_ Посмотреть сообщение
Mike121234 Откуда Вы знаете длину посылки? Из первого принятого байта?
Вашу задачу я бы решил используя прерывание по каждому принятому байту, те вообще без DMA.
Ну или как компромис минимальнуя длину 4 байта через DMA, затем запретив его через прерывания UARTa - но это уже как-то коряво.
Да это все понятно, так и делалось.
История вопроса....
На семинаре спросил про FIFO UART у STM
- 1 БАЙТ !
- У филипса 8 байт...
- А зачем Вам FIFO, если есть DMA?

Вот я тогда итак и не понял как DMA может заменить FIFO, НО судя по уверенному ответу понял, что это надо знать...
Mike121234 вне форума  
Непрочитано 23.08.2012, 11:28  
sosedi
Частый гость
 
Регистрация: 31.07.2012
Сообщений: 45
Сказал спасибо: 28
Сказали Спасибо 8 раз(а) в 8 сообщении(ях)
sosedi на пути к лучшему
Радость Re: Изучаем STM32 Cortex M3

Сообщение от dosikus Посмотреть сообщение
Hives, Ну,ну ...
А sosedi из любопытства на CMSIS переводит все ...
Спасибо большое, за эту быструю и могучую функцию)
Не могли бы вы помочи мне разобраться в вашем коде, а именно:
Код:
 a = i2a(i / r, a, r);
*a = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"[i % r];
return a + 1;
я то понимаю , в общих чертах, что тут происходит, но хотелось бы разобрать все!

И вот еще вопрос!!!
почему в прерываниях я не могу работать с дисплеем, а точнее зависание происходит при вызове функций задержки, в которых используются другие прерывания!
sosedi вне форума  
 

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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Школа АRMрестлинга Uragan90 Микроконтроллеры, АЦП, память и т.д 54 22.08.2011 16:13
ARM Cortex M3 + Linux SiMiLya Микроконтроллеры, АЦП, память и т.д 10 17.06.2011 17:20
Помогите с STM32 - очень нужно... yakuzaa Микроконтроллеры, АЦП, память и т.д 60 04.08.2010 11:04
Как добавить поддержку для STM32 SFHK Микроконтроллеры, АЦП, память и т.д 11 18.12.2009 18:09


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


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