Мелкие вопросы по МК и ПЛИС.

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25154
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение КРАМ »

А с чего им стоить дешевле, если это абсолютно идентичные микросхемы?
С одинаковой исходной ценой и идентичным происхождением.
Весь профит возникает у производителя за счет получения новых ниш на рынке, а не за счет демпинга.
С другой стороны совершенно непонятно маниакальное стремление некоторых радиолюбителей сэкономить две копейки на хобби, чтобы потом выкинуть кучу элементной базы на помойку из-за неопытности и незнания.
К тому же за этими гонками за дешевизной они лишают себя удовольствия от работы с иными платформами, которые совсем неспроста успешно конкурируют с морем дешевки... :) :tea:
Chettuser

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение Chettuser »

КРАМ писал(а): от работы с иными платформами, которые совсем неспроста успешно конкурируют с морем дешевки... :) :tea:

Эээ.. Я что то пропустил? Про какие платформы идёт речь?
Аватара пользователя
ptr128
Вымогатель припоя
Сообщения: 606
Зарегистрирован: Чт окт 06, 2016 21:12:07
Откуда: Южное Бутово

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение ptr128 »

КРАМ писал(а): лишают себя удовольствия от работы с иными платформами


"Если звезды зажигают, значит это кому-то нужно" (с)

Рынок жесток. Продукцию, не пользующуюся спросом (никому не нужную) никто выпускать себе не позволит. И, с точки зрения производителя IC, радиолюбительский спрос есть слишком узкая ниша рынка, чтобы ориентироваться только на него.
Конечно, рано или поздно устареет любой МК. Как почил в истории 8048, а за ним и 8051. Как исчез с рынка столь популярный в свое время Z80. Так же уйдут и AVR, и STM32, и ESP8266, и даже ARM с RISC.
Если уж пытаться быть впереди планеты всей, то Вам стоит больше обратить внимание на MIMD архитектуру для построения нейронных сетей или на D-Wave Systems для квантовых вычислений.
А любителям оставьте любительское, пожалуйста )
Не ошибается только то, кто ничего не делает.
Тот, кто признает свои ошибки, на них учится.
Глупец же, упорствуя в своих заблуждениях, остается глупцом.
Аватара пользователя
scorpi_0n
Вымогатель припоя
Сообщения: 616
Зарегистрирован: Вс ноя 01, 2015 13:13:49

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение scorpi_0n »

Chettuser писал(а):Про какие платформы идёт речь?

Про экзотические. Типа ПИК24 или ХМега. А смысла в применении GD32F103 действительно никакого нет.
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение ARV »

ptr128 писал(а):Как почил в истории ... и 8051
дык вроде нет? и сейчас живее многих...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
ptr128
Вымогатель припоя
Сообщения: 606
Зарегистрирован: Чт окт 06, 2016 21:12:07
Откуда: Южное Бутово

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение ptr128 »

Так же как и Z80, примерно того же года разработки. Между ними разницы 4 года. 8051 1980-го, а Z80 - 1976-го.
Из-за популярности в 80-е и 90-е годы выпускаются и ныне, так как промышленные изделия на них эксплуатируются до сих пор. Но о том, чтобы за последние лет 5 хотя бы один производитель взял его за основу в своей новой продукции я не слышал. Устарела все же за 35 лет и архитектура, и технология.
Не ошибается только то, кто ничего не делает.
Тот, кто признает свои ошибки, на них учится.
Глупец же, упорствуя в своих заблуждениях, остается глупцом.
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25154
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение КРАМ »

scorpi_0n писал(а):А смысла в применении GD32F103 действительно никакого нет.

Смысл в применении GD32 ровно такой же как и STM32. Ни больше. ни меньше.
Я что то не встречал радиолюбителей, которые бы предпочитали определенного производителя дискретной логики 74НС. А их как блох на дикой собаке.
С другой стороны, есть свои платформы у AD и TI, есть PSoC и подобные ему с ядром ARM. Есть и упомянутые тут PIC24/dsPIC33. Много чего есть, что по идее должно вызывать любопытство для пытливого любителя...
Аватара пользователя
Jeka_M
Встал на лапы
Сообщения: 101
Зарегистрирован: Пт окт 03, 2014 14:50:06

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение Jeka_M »

ptr128 писал(а):стоит больше обратить внимание на MIMD архитектуру для построения нейронных сетей или на D-Wave Systems для квантовых вычислений
А оно в Arduino IDE поддерживается? :)))
P.S. Простите, не удержался.
Аватара пользователя
ptr128
Вымогатель припоя
Сообщения: 606
Зарегистрирован: Чт окт 06, 2016 21:12:07
Откуда: Южное Бутово

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение ptr128 »

ptr128 писал(а):
КРАМ писал(а): лишают себя удовольствия от работы с иными платформами

Если уж пытаться быть впереди планеты всей


Как можно быть впереди планеты всей, используя Arduino IDE? )))
Не ошибается только то, кто ничего не делает.
Тот, кто признает свои ошибки, на них учится.
Глупец же, упорствуя в своих заблуждениях, остается глупцом.
Аватара пользователя
scorpi_0n
Вымогатель припоя
Сообщения: 616
Зарегистрирован: Вс ноя 01, 2015 13:13:49

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение scorpi_0n »

КРАМ писал(а):Смысл в применении GD32 ровно такой же как и STM32. Ни больше. ни меньше.

Следуя вашей логике уже в самом смысле отсутствует смысл.
Я что то не встречал радиолюбителей, которые бы предпочитали определенного производителя дискретной логики 74НС. А их как блох на дикой собаке.

Да ладно! Есть два фактора, которые не чужды любителю - цена и доставаемость или наличие в местном ларьке.
С другой стороны, есть свои платформы у AD и TI, есть PSoC и подобные ему с ядром ARM. Есть и упомянутые тут PIC24/dsPIC33. Много чего есть, что по идее должно вызывать любопытство для пытливого любителя...

Как видим - не очень. Да и не только у любителей.
Аватара пользователя
hosturik
Потрогал лапой паяльник
Сообщения: 354
Зарегистрирован: Чт июл 24, 2014 23:09:23
Откуда: Киев

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение hosturik »

Разбираюсь в исходниках одного проекта(C знаю очень плохо)
Никак не могу догнать что делает эта функция.
файл отвечает за вывод с дисплея, называется lcd_lib.c
Я понял что считываются данные с дисплея, а потом идет ихняя проверка, а вот что проверяется и зачем никак не пойму.
Спойлер

Код: Выделить всё

 
#define FLAG_BF 7
void LCD_Wait(void)
{
#ifdef CHECK_FLAG_BF
  #ifdef BUS_4BIT
 
  unsigned char data;
  DDRX_DATA &= 0x0f;            //конфигурируем порт на вход
  PORT_DATA |= 0xf0;           //включаем pull-up резисторы
  SetBit(PORT_SIG, RW);         //RW в 1 чтение из lcd
  ClearBit(PORT_SIG, RS);   //RS в 0 команды
  do{
    SetBit(PORT_SIG, EN);   
    _delay_us(2);
    data = PIN_DATA & 0xf0;      //чтение данных с порта
    ClearBit(PORT_SIG, EN);
    data = __swap_nibbles(data);
    SetBit(PORT_SIG, EN);   
    _delay_us(2);
    data |= PIN_DATA & 0xf0;      //чтение данных с порта
    ClearBit(PORT_SIG, EN);
    data = __swap_nibbles(data);
  }while((data & (1<<FLAG_BF))!= 0 );
  ClearBit(PORT_SIG, RW);
  DDRX_DATA |= 0xf0;
 
  #else
  unsigned char data;
  DDRX_DATA = 0;                //конфигурируем порт на вход
  PORT_DATA = 0xff;           //включаем pull-up резисторы
  SetBit(PORT_SIG, RW);         //RW в 1 чтение из lcd
  ClearBit(PORT_SIG, RS);   //RS в 0 команды
  do{
    SetBit(PORT_SIG, EN);   
    _delay_us(2);
    data = PIN_DATA;            //чтение данных с порта
    ClearBit(PORT_SIG, EN);   
  }while((data & (1<<FLAG_BF))!= 0 );
  ClearBit(PORT_SIG, RW);
  DDRX_DATA = 0xff;
  #endif   
#else
  _delay_us(40);
#endif 
}

//функция записи команды
void LCD_WriteCom(unsigned char data)
{
  LCD_Wait();
  ClearBit(PORT_SIG, RS);   //установка RS в 0 - команды
  LCD_CommonFunc(data);
}

//функция записи данных
void LCD_WriteData(unsigned char data)
{
  LCD_Wait();
  SetBit(PORT_SIG, RS);           //установка RS в 1 - данные 
  LCD_CommonFunc(data);
}
Последний раз редактировалось hosturik Ср ноя 09, 2016 18:48:51, всего редактировалось 4 раза.
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение ARV »

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

Мой уютный бложик... заходите!
Аватара пользователя
hosturik
Потрогал лапой паяльник
Сообщения: 354
Зарегистрирован: Чт июл 24, 2014 23:09:23
Откуда: Киев

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение hosturik »

Да, код не совсем полный был, думал этого хватит. Дополнил.
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение ARV »

еще больше убедился, что это ожидание готовности ЖКИ
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
hosturik
Потрогал лапой паяльник
Сообщения: 354
Зарегистрирован: Чт июл 24, 2014 23:09:23
Откуда: Киев

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение hosturik »

Спасибо. А можно чуть более подробно написать что там происходит в коде. Читаются данные с дисплея потом эти данные проверяются на соответствие, только вот с чем?
Какая то цифра "7" (#define FLAG_BF 7)
и что эта строчка делает (data & (1<<FLAG_BF))?
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение ARV »

считывается регистр состояния ЖКИ и проверяется наличие в нем 7-го бита, который есть флаг занятости. пока он есть - крутится цикл опроса этого флага.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
hosturik
Потрогал лапой паяльник
Сообщения: 354
Зарегистрирован: Чт июл 24, 2014 23:09:23
Откуда: Киев

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение hosturik »

Уже второй день борюсь с ошибкой компилятора, несколько раз переписывал код для дисплея, думал в этом ошибка. Но ошибка каждый раз одна и та же - multiple definition в файле lcd_main.h
интернет говорит что что-то не так с подключаемыми файлами.
Мне кажется решение где-то на поверхности, но я уже все варианты перепробовал, которые знал.

есть три файла, которые менял - lcd_lib.c, lcd_lib.h и main.c, приведу только начало, а то много кода. Файл lcd_lib.h весь, на него ругается.
Помогите советом, как это исправить.

Лог
Спойлер

Код: Выделить всё

Compiling C: lcd_lib.c
avr-gcc -c -mmcu=atmega168p -I. -gdwarf-2 -DF_CPU=8000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=./lcd_lib.lst  -std=gnu99 -Wundef -MMD -MP -MF .dep/lcd_lib.o.d lcd_lib.c -o lcd_lib.o

Linking: main.elf
avr-gcc -mmcu=atmega168p -I. -gdwarf-2 -DF_CPU=8000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=main.o  -std=gnu99 -Wundef -MMD -MP -MF .dep/main.elf.d main.o lcd_lib.o --output main.elf -Wl,-Map=main.map,--cref     -lm
lcd_lib.o: In function `I2C_StartCondition':
E:\1\mod_168/lcd_lib.h:25: multiple definition of `I2C_StartCondition'
main.o:E:\1\mod_168/lcd_lib.h:25: first defined here
lcd_lib.o: In function `I2C_StopCondition':
E:\1\mod_168/lcd_lib.h:32: multiple definition of `I2C_StopCondition'
main.o:E:\1\mod_168/lcd_lib.h:32: first defined here
lcd_lib.o: In function `I2C_SendByte':
E:\1\mod_168/lcd_lib.h:38: multiple definition of `I2C_SendByte'
main.o:E:\1\mod_168/lcd_lib.h:38: first defined here
lcd_lib.o: In function `I2C_Init':
E:\1\mod_168/lcd_lib.h:46: multiple definition of `I2C_Init'
main.o:E:\1\mod_168/lcd_lib.h:46: first defined here
lcd_lib.o: In function `I2C_SendPocket':
E:\1\mod_168/lcd_lib.h:51: multiple definition of `I2C_SendPocket'
main.o:E:\1\mod_168/lcd_lib.h:51: first defined here
lcd_lib.o: In function `I2C_RecieveByte':
E:\1\mod_168/lcd_lib.h:63: multiple definition of `I2C_RecieveByte'
main.o:E:\1\mod_168/lcd_lib.h:63: first defined here
lcd_lib.o: In function `I2C_RecieveLastByte':
E:\1\mod_168/lcd_lib.h:73: multiple definition of `I2C_RecieveLastByte'
main.o:E:\1\mod_168/lcd_lib.h:73: first defined here
make.exe: *** [main.elf] Error 1

> Process Exit Code: 2
> Time Taken: 00:01

lcd_lib.h
Спойлер

Код: Выделить всё

#ifndef LCD_LIB_H
#define LCD_LIB_H

#include <avr/io.h>
#include <util/delay.h>
#include <avr/pgmspace.h>

// отправка команды СТАРТ
void I2C_StartCondition(void)
{
TWCR = (1<<TWINT)|(1<<TWSTA)|(1<<TWEN);
while (!(TWCR & (1<<TWINT)));//ожидание установки бита TWIN
}

// отправка СТОП
void I2C_StopCondition(void)
{
TWCR = (1<<TWINT)|(1<<TWSTO)|(1<<TWEN);
}

//отправка байта
void I2C_SendByte(unsigned char c)
{
TWDR = c;//загрузка значения в регистр данных
TWCR = (1<<TWINT)|(1<<TWEN);//начаало передачи байта данных
while (!(TWCR & (1<<TWINT)));//ожидание установки бита TWIN
}

//инициализация I2C как передатчика
void I2C_Init (void)
{
TWBR=0xFF;//скорость передачи
}

//отправка SLA_W + байт данных
void I2C_SendPocket (unsigned char value,unsigned char adres_rw)
{
I2C_StartCondition(); // генерируем условие СТАРТ
I2C_SendByte(adres_rw); //оправляем адрес устройства+бит запись
I2C_SendByte(value);//отправляем байт данных
I2C_StopCondition();//генерируем условие СТОП
}

//добавляем функции чтения по I2C
//чтение байта
unsigned char I2C_RecieveByte(void)
{
unsigned char dat;//переменная хранения значения
TWCR |= (1<<TWINT)|(1<<TWEN)|(1<<TWEA);
while (!(TWCR & (1<<TWINT)));//ожидание установки бита TWIN
dat = TWDR;//читаем регистр данных
return dat;
}

//чтение последнего байта
unsigned char I2C_RecieveLastByte(void)
{
unsigned char dat;//переменная хранения значения   
TWCR |= (1<<TWINT)|(1<<TWEN)|(0<<TWEA);//чтение последнего байта
while (!(TWCR & (1<<TWINT)));//ожидание установки бита TWIN
dat = TWDR;//читаем регистр данных   
return dat;
}

lcd_lib.c
Спойлер

Код: Выделить всё

#include "lcd_lib.h"
#include "codetable.h"

//адрес LCD переходника
#define LCD_ADDR 0b00100111
//макрос адреса + бит записи
#define SLA_W   LCD_ADDR<<1

//создаем переменную Эквивалент регистра порта
unsigned char Led_port=0;

//макрос отправки пакетов LCD
#define I2C_SendPocketLCD(x) I2C_SendPocket (x,SLA_W)

/*
таблица соответствия
Po - RS
P1 - R/W
P2 - E
P3 - подсветка
P4 - D4
P5 - D5
P6 - D6
P7 - D7
 */

/* установка лог. "1" на линии RS */
#define LCD_RS_SET  I2C_SendPocketLCD (Led_port|=0x01)
/* установка лог. "0" на линии RS */
#define LCD_RS_CLR  I2C_SendPocketLCD (Led_port&=~0x01)
/* установка лог. "1"(запись) R/W*/
#define LCD_RW_SET  I2C_SendPocketLCD (Led_port|=0x02)
/* установка лог. "0"(Чтение) R/W */
#define LCD_RW_CLR  I2C_SendPocketLCD (Led_port&=~0x02)
/* установка лог. "1" на линии E */
#define LCD_E_SET   I2C_SendPocketLCD (Led_port |=0x04)
/* установка лог. "0" на линии E */
#define LCD_E_CLR   I2C_SendPocketLCD (Led_port &=~0x04)
/* установка лог. "1" на линии подсветки */
#define LCD_BT_SET  I2C_SendPocketLCD (Led_port|=0x08)
/* установка лог. "0" на линии подсветки */
#define LCD_BT_CLR  I2C_SendPocketLCD (Led_port&=~0x08)

/* функция передачи тетрады в жки */
inline static void LCD_CommonFunc(unsigned char t)
{
t<<=4;
    LCD_E_SET;
    _delay_us(50);
    I2C_SendPocketLCD (Led_port|t);
    LCD_E_CLR;
    _delay_us(50);
}


main.c
Спойлер

Код: Выделить всё

#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/pgmspace.h>
#include <avr/eeprom.h>
#include "lcd_lib.h"

#include "main.h"
#include <avr/wdt.h>
ISR (__vector_default)    
{
return;               
}

//unsigned char cc=5;
ISR (TIMER0_OVF_vect)   
{
      
   static char delenie_in_two = 0;
   if(++delenie_in_two == 2)
   {
      delenie_in_two = 0;
Аватара пользователя
hybroid
Друг Кота
Сообщения: 8007
Зарегистрирован: Вс ноя 14, 2010 19:24:26
Откуда: Лукалэнд

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение hybroid »

Все с ног на голову. В заголовке объявить прототипы функций, а тело в .c файле. Инлайн-функцию вынести наоборот в заголовок.
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25154
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение КРАМ »

scorpi_0n писал(а):Следуя вашей логике уже в самом смысле отсутствует смысл.

Следуя моей логике, можно применять ровно те микросхемы, которые имеются в наличии (либо доступны) и позволяют достичь поставленной цели. Обозначение производителя не имеет вообще никакого значения.
Что до ларька с комплектацией, то покупка на али делает обозначение производителя смешным фейком. Но али, тем не менее, остается самым популярным ларьком.
Именно потому, что "даром за амбаром" стало самоцелью. И хобби на этом фоне идет лесом (см. комментарий об АД, ТИ и прочих).
Ответить

Вернуться в «Разные вопросы по МК»