Jump to content
Рамазан

Modbus+Nrf24L01 Master Slave Slave(Чайник В Создании Промышленых Сетях)

Recommended Posts

Отзовитесь люди кто создавал промышленную сеть на протоколе modbus или делал девайсы с использованием радиомодуля nRF23l01 нужен ваш код с комментами мне бедному студенту обьяснить че как почему и откуда естественно не за спасибо . могу даже заехать к вам со всем что потребуется (ноут макетка и все остальные детали) если вы проживаете в Москве.

Share this post


Link to post
Share on other sites

Я завтра начну писать ...

а можеш написать два кода на меге 16 когда один принимает другой отправляет какойнить сообщение в коментах??

Edited by artos5

Share this post


Link to post
Share on other sites

Высококачественные конденсаторы Panasonic для надежности вашей электроники!

Электролитические алюминиевые конденсаторы Panasonic отличаются повышенной надежностью, длительным сроком службы, низким импедансом и выдерживают большой ток пульсаций, в то время как семейства полимерных конденсаторов Panasonic SP-CAP, POSCAP, OS-CON и HYBRID характеризуют сверхнизкий ESR и увеличенная емкость, работа при высоких напряжениях и в расширенном температурном диапазоне. Приобретая продукцию Panasonic, вы гарантированно получаете самое передовое решение для ваших задач. Для облегчения вашего выбора, мы подготовили подборку полезных материалов.

Читать статьи

Не комментируй целиком пред. Пост.

Так про модбас много инфы есть.Все просто.

Share this post


Link to post
Share on other sites
                     

Вебинар "Как создать BLE-устройство на базе новейшего беспроводного микроконтроллера STM32WB55"

27 ноября 2019 года компания КОМПЭЛ приглашает разработчиков, технических руководителей и энтузиастов беспроводной связи на вебинар, посвященный новинке 2019 года – мультипротокольному беспроводному микроконтроллеру STM32WB55, который позволяет создавать устройства на базе стандартов BLE 5.0; BLE Mesh; 802.15.4/ZigBee и Thread. На вебинаре мы покажем, как с помощью привычных инструментов STM32Cube и STM32CubeMX можно создать свое первое, надежно работающее BLE-приложение.

Зарегистрироваться на вебинар

Слушай, давай я себе напишу модбас , а потом тебе дам.... я еще не реализовал его...

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

// crc file C
unsigned int CRC16 (const unsigned char *nData, unsigned char wLength)
{
static const unsigned int wCRCTable[] = {
0X0000, 0XC0C1, 0XC181, 0X0140, 0XC301, 0X03C0, 0X0280, 0XC241,
0XC601, 0X06C0, 0X0780, 0XC741, 0X0500, 0XC5C1, 0XC481, 0X0440,
0XCC01, 0X0CC0, 0X0D80, 0XCD41, 0X0F00, 0XCFC1, 0XCE81, 0X0E40,
0X0A00, 0XCAC1, 0XCB81, 0X0B40, 0XC901, 0X09C0, 0X0880, 0XC841,
0XD801, 0X18C0, 0X1980, 0XD941, 0X1B00, 0XDBC1, 0XDA81, 0X1A40,
0X1E00, 0XDEC1, 0XDF81, 0X1F40, 0XDD01, 0X1DC0, 0X1C80, 0XDC41,
0X1400, 0XD4C1, 0XD581, 0X1540, 0XD701, 0X17C0, 0X1680, 0XD641,
0XD201, 0X12C0, 0X1380, 0XD341, 0X1100, 0XD1C1, 0XD081, 0X1040,
0XF001, 0X30C0, 0X3180, 0XF141, 0X3300, 0XF3C1, 0XF281, 0X3240,
0X3600, 0XF6C1, 0XF781, 0X3740, 0XF501, 0X35C0, 0X3480, 0XF441,
0X3C00, 0XFCC1, 0XFD81, 0X3D40, 0XFF01, 0X3FC0, 0X3E80, 0XFE41,
0XFA01, 0X3AC0, 0X3B80, 0XFB41, 0X3900, 0XF9C1, 0XF881, 0X3840,
0X2800, 0XE8C1, 0XE981, 0X2940, 0XEB01, 0X2BC0, 0X2A80, 0XEA41,
0XEE01, 0X2EC0, 0X2F80, 0XEF41, 0X2D00, 0XEDC1, 0XEC81, 0X2C40,
0XE401, 0X24C0, 0X2580, 0XE541, 0X2700, 0XE7C1, 0XE681, 0X2640,
0X2200, 0XE2C1, 0XE381, 0X2340, 0XE101, 0X21C0, 0X2080, 0XE041,
0XA001, 0X60C0, 0X6180, 0XA141, 0X6300, 0XA3C1, 0XA281, 0X6240,
0X6600, 0XA6C1, 0XA781, 0X6740, 0XA501, 0X65C0, 0X6480, 0XA441,
0X6C00, 0XACC1, 0XAD81, 0X6D40, 0XAF01, 0X6FC0, 0X6E80, 0XAE41,
0XAA01, 0X6AC0, 0X6B80, 0XAB41, 0X6900, 0XA9C1, 0XA881, 0X6840,
0X7800, 0XB8C1, 0XB981, 0X7940, 0XBB01, 0X7BC0, 0X7A80, 0XBA41,
0XBE01, 0X7EC0, 0X7F80, 0XBF41, 0X7D00, 0XBDC1, 0XBC81, 0X7C40,
0XB401, 0X74C0, 0X7580, 0XB541, 0X7700, 0XB7C1, 0XB681, 0X7640,
0X7200, 0XB2C1, 0XB381, 0X7340, 0XB101, 0X71C0, 0X7080, 0XB041,
0X5000, 0X90C1, 0X9181, 0X5140, 0X9301, 0X53C0, 0X5280, 0X9241,
0X9601, 0X56C0, 0X5780, 0X9741, 0X5500, 0X95C1, 0X9481, 0X5440,
0X9C01, 0X5CC0, 0X5D80, 0X9D41, 0X5F00, 0X9FC1, 0X9E81, 0X5E40,
0X5A00, 0X9AC1, 0X9B81, 0X5B40, 0X9901, 0X59C0, 0X5880, 0X9841,
0X8801, 0X48C0, 0X4980, 0X8941, 0X4B00, 0X8BC1, 0X8A81, 0X4A40,
0X4E00, 0X8EC1, 0X8F81, 0X4F40, 0X8D01, 0X4DC0, 0X4C80, 0X8C41,
0X4400, 0X84C1, 0X8581, 0X4540, 0X8701, 0X47C0, 0X4680, 0X8641,
0X8201, 0X42C0, 0X4380, 0X8341, 0X4100, 0X81C1, 0X8081, 0X4040 };
unsigned char nTemp;
unsigned int wCRCWord = 0xFFFF;
  while (wLength--)
  {
  nTemp = *nData++ ^ wCRCWord;
  wCRCWord >>= 8;
  wCRCWord ^= wCRCTable[nTemp];
  }
  return wCRCWord;
}

// file H
unsigned int CRC16 (const unsigned char *nData, unsigned char wLength);

// function modbus 
void modbus_rtu()
{
unsigned char x_, code_modbus[6];
unsigned int crc_=0;
if( rx_buffer0[0]==eep_setting[6] && rx_buffer0[1]==0x03 && rx_buffer0[2]==0x00 && rx_buffer0[3]==0x05 ) // 1 байт - проверка адреса
   {
  crc_ = CRC16(rx_buffer0, 3);
 if(rx_buffer0[4] == (crc_&0x00FF) && rx_buffer0[5] == (crc_>>8))
 {
	  #asm("CLI")
	  for (x_=0; x_<8; x_++) code_modbus[x_]=0x00;
	  code_modbus[0] = eep_setting[6]; // adress
	  code_modbus[1] = 0x03; // команда
	  code_modbus[2] = 0x01; // сколько байт
	  code_modbus[3] = ALRM1; //PINC.1
	  code_modbus[3]|= UNLK; //PINC.2
	  code_modbus[3]|= DOOR; //PINC.3
	  code_modbus[3]|= SDA_; //PINC.4 
	  crc_ = CRC16(code_modbus, 3);
	  code_modbus[4] = (crc_ & 0x00FF);  // crc
	  crc_ = (crc_>>8);
	  code_modbus[5] = crc_;  

																																								 // 2 байт - команда
	   delay_ms(4);																																    // 3 байт - начало данных
	   for (x_=0; x_< 6; x_++)  printf("%d" , code_modbus[x_]);																				   // 4 байт - количество
	   delay_ms(4);
	   #asm("SEI")
 }
 else
 {
    // error_crc
 }
   }																 
  else
{
//  error data format
}
}

пока что так...

еще не проверял код.

функцию ЦРЦ взял стандартную , табличную в интернете . Инфа по модбасу тоже имеется в интернет.

Share this post


Link to post
Share on other sites

if(rx_buffer0[4] == (crc_&0x00FF) && rx_buffer0[5] == (crc_>>8))

if( rx_buffer0[0]==eep_setting[6] && rx_buffer0[1]==0x03 && rx_buffer0[2]==0x00 && rx_buffer0[3]==0x05 )

ни слова про TX

разве они не по двум каналам сразу общаются?

Share this post


Link to post
Share on other sites

А printf() - Чем тебе не ТХ ? )))

разве они не по двум каналам сразу общаются?

Ты хоть читал о модбас?! Рекомендую почитать, а потом задавать вопросы :)

Share this post


Link to post
Share on other sites

вот ты знаешь я все это читаю и не хуя не понимаю .

ты написал это для одного мк . а для второго че нада писать?

Share this post


Link to post
Share on other sites

ну у меня задача не два МК связать а МК+Сервер , со стороны сервера комп из пользовательской программой.

Со стороны МАСТЕРА надо отправить код который проверяет СЛЕЙВ ... все просто ;)

Share this post


Link to post
Share on other sites

#asm("CLI")

asm("cli"); или просто cli(); Вообще, прежде, чем браться за что-то сложное, стоит разобраться с основами и почитать документацию.

Share this post


Link to post
Share on other sites

завтра залью все на мегу. сам то смотрел работает нет? и какую прогу на компе включал?

artoooos

Привет! Код тот должен работать (пока нет возможности проверить) но он пока не соответствует стандарту. Неправильно реализован вывод ошибки.

Я на днях буду его допиливать , ибо надо завершать проект..

Share this post


Link to post
Share on other sites

седня я я второй кабелт usb возму у меня все есть прост провод usb-usb b tupe на кафедре оставил седня поеду заберу заодно вечерком будем тестить xD

Edited by Рамазан

Share this post


Link to post
Share on other sites

Победил я модбас :)

printf(); - не годится для отправки ответа . В результате писал свою функцию.

Код могу дать в личке. Заточен он под CVAVR.

Share this post


Link to post
Share on other sites

Моя реализация Modbus RTU:

PS: Этот код собран из кучи различных кусков :) плюс дописано/переписано под CVAVR .

Саму обработку принятых команд написал полностью свою. Также, отправку ответа написал свою.

Все остальное взято из интернет , и допилено под себя ))

Код проверен, работает нормально .

void modbus_rtu()
{
unsigned char x_;
unsigned int crc_=0;
if((rx_buffer0[0]==eep_setting[6] || rx_buffer0[0]==0) && rx_buffer0[1]==0x03 && rx_buffer0[2]==0x02 && rx_buffer0[3]==0x00 ) // 1 байт - проверка адреса
{
crc_ = CRC16(rx_buffer0, 4);
if(rx_buffer0[4] == Low(crc_) && rx_buffer0[5] == Hi(crc_)) // read register
{
if(rx_buffer0[0])
{
#asm("CLI")
for (x_=0; x_<15; x_++) code_modbus[x_]=0x00;
code_modbus[0] = eep_setting[6]; // adress
code_modbus[1] = 0x03; // команда
code_modbus[2] = 0x02; // сколько байт
code_modbus[3] = 0x00; // старший регистр
x_=0;

if(ALRM1)
{
x_ = x_ &~ (1<<0);
}
else
{
x_ = x_ | (1<<0);
}
if(UNLK)
{
x_ = x_ &~ (1<<1);
}
else
{
x_ = x_ | (1<<1);
}
if(DOOR)
{
x_ = x_ &~ (1<<2);
}
else
{
x_ = x_ | (1<<2);
}
if(SDA_)
{
x_ = x_ &~ (1<<3);
}
else
{
x_ = x_ | (1<<3);
}

code_modbus[4] = x_; //PINC.1
crc_ = CRC16(code_modbus, 5);
code_modbus[5] = Low(crc_); // crc
code_modbus[6] = Hi(crc_); // crc
// 2 байт - команда
delay_ms(4);
RT=ON; // 3 байт - начало данных
modbus_tx(7); // передаем данные!
RT=OFF;
}
clear_buffer_rx();
delay_ms(4);

#asm("SEI")
}
else // ошибка сообщения
{
if(rx_buffer0[0])
{
delay_ms(4);

ErrorMessage(0x08); //ошибка паритета
RT=ON;
modbus_tx(6); // передаем данные!
RT=OFF;

}
clear_buffer_rx();
}
} // adress register // data register
else if((rx_buffer0[0]==eep_setting[6] || rx_buffer0[0]==0) && rx_buffer0[1]==0x06 && rx_buffer0[2]==0x00 && rx_buffer0[3]==0x01 && rx_buffer0[4]==0x00 && rx_buffer0[5]==0x01 )
{ // процедура включения охраны
crc_ = CRC16(rx_buffer0, 6);
if(rx_buffer0[6] == Low(crc_) && rx_buffer0[7] == Hi(crc_))
{
if(rx_buffer0[0])
{
#asm("CLI")
for (x_=0; x_<15; x_++) code_modbus[x_]=0x00;
code_modbus[0] = eep_setting[6]; // adress
code_modbus[1] = 0x06;
code_modbus[2] = 0x00;
code_modbus[3] = 0x01;
code_modbus[4] = 0x00;
code_modbus[5] = 0x01; // управление включением охраны
crc_ = CRC16(code_modbus, 6);
code_modbus[6] = Low(crc_); // crc
code_modbus[7] = Hi(crc_);
// 2 байт - команда
delay_ms(4);
RT=ON; // 3 байт - начало данных
modbus_tx(8); // передаем данные!
RT=OFF;
}
data_secur1 = ALRM1;
data_secur2 = SDA_;
secur_on=flags_secur=1; timer=0;// on secur
hacking=0;

clear_buffer_rx();
delay_ms(4);

#asm("SEI")
}
else
{
if(rx_buffer0[0])
{
delay_ms(4);

ErrorMessage(0x08); //ошибка паритета
RT=ON;
modbus_tx(6); // передаем данные!
RT=OFF;
}
clear_buffer_rx();
}
}
else if((rx_buffer0[0]==eep_setting[6] || rx_buffer0[0]==0) && rx_buffer0[1]==0x06 && rx_buffer0[2]==0x00 && rx_buffer0[3]==0x02 && rx_buffer0[4]==0x00 && rx_buffer0[5]==0x02 )
{ // откл. режим охрана
crc_ = CRC16(rx_buffer0, 6);
if(rx_buffer0[6] == Low(crc_) && rx_buffer0[7] == Hi(crc_))
{
if(rx_buffer0[0])
{
#asm("CLI")
for (x_=0; x_<15; x_++) code_modbus[x_]=0x00;
code_modbus[0] = eep_setting[6]; // adress
code_modbus[1] = 0x06;
code_modbus[2] = 0x00;
code_modbus[3] = 0x02;
code_modbus[4] = 0x00;
code_modbus[5] = 0x02; // управление замком двери
crc_ = CRC16(code_modbus, 6);
code_modbus[6] = Low(crc_); // crc
code_modbus[7] = Hi(crc_);
// 2 байт - команда
delay_ms(4);
RT=ON; // 3 байт - начало данных
modbus_tx(8); // передаем данные!
RT=OFF;
}

secur_on=flags_secur=0; timer=0;
hacking=0;

clear_buffer_rx();
delay_ms(4);
#asm("SEI")
}
else
{
if(rx_buffer0[0])
{
delay_ms(4);

ErrorMessage(0x08); //ошибка паритета
RT=ON;
modbus_tx(6); // передаем данные!
RT=OFF;
clear_buffer_rx();
}
}
}
else if( (rx_buffer0[0]==eep_setting[6] || rx_buffer0[0]==0) && rx_buffer0[1]==0x06 && rx_buffer0[2]==0x00 && rx_buffer0[3]==0x03 && rx_buffer0[4]==0x00 && rx_buffer0[5]==0x03 )
{ // управление замком
crc_ = CRC16(rx_buffer0, 6);
if(rx_buffer0[6] == Low(crc_) && rx_buffer0[7] == Hi(crc_))
{
if(rx_buffer0[0])
{
#asm("CLI")
for (x_=0; x_<15; x_++) code_modbus[x_]=0x00;
code_modbus[0] = eep_setting[6]; // adress
code_modbus[1] = 0x06;
code_modbus[2] = 0x00;
code_modbus[3] = 0x03;
code_modbus[4] = 0x00;
code_modbus[5] = 0x03; // управление замком двери
crc_ = CRC16(code_modbus, 6);
code_modbus[6] = Low(crc_); // crc
code_modbus[7] = Hi(crc_);


// 2 байт - команда
delay_ms(4);
RT=ON; // 3 байт - начало данных
modbus_tx(8); // передаем данные!
RT=OFF;
}
open_door=1;
clear_buffer_rx();
delay_ms(4);
#asm("SEI")
}
else
{
if(rx_buffer0[0])
{
delay_ms(4);

ErrorMessage(0x08); //ошибка паритета
RT=ON;
modbus_tx(6); // передаем данные!
RT=OFF;
}
clear_buffer_rx();
}
}
else if((rx_buffer0[0]==eep_setting[6] || rx_buffer0[0]==0) && rx_buffer0[1]==0x06 && rx_buffer0[2]==0x00 && rx_buffer0[3]==0x04 && rx_buffer0[4]==0x00 && rx_buffer0[5]==0x04 )
{ // вкл. режим взлом
crc_ = CRC16(rx_buffer0, 6);
if(rx_buffer0[6] == Low(crc_) && rx_buffer0[7] == Hi(crc_))
{
if(rx_buffer0[0])
{
#asm("CLI")
for (x_=0; x_<15; x_++) code_modbus[x_]=0x00;
code_modbus[0] = eep_setting[6]; // adress
code_modbus[1] = 0x06;
code_modbus[2] = 0x00;
code_modbus[3] = 0x04;
code_modbus[4] = 0x00;
code_modbus[5] = 0x04; // управление замком двери
crc_ = CRC16(code_modbus,6);
code_modbus[6] = Low(crc_); // crc
code_modbus[7] = Hi(crc_); // 2 байт - команда
delay_ms(4);
RT=ON; // 3 байт - начало данных
modbus_tx(8); // передаем данные!
RT=OFF;
}
clear_buffer_rx();
delay_ms(4);
#asm("SEI")

secur_on=flags_secur=1; timer=0;
hacking=1;
}
else
{
if(rx_buffer0[0])
{
delay_ms(4);

ErrorMessage(0x08); //ошибка паритета
RT=ON;
modbus_tx(6); // передаем данные!
RT=OFF;
}
clear_buffer_rx();
}
}
else if((rx_buffer0[0]==eep_setting[6] || rx_buffer0[0]==0) && rx_buffer0[1]==0x04 && rx_buffer0[2]==0x00 && rx_buffer0[3]==0x01 && rx_buffer0[4]==0x00 && rx_buffer0[5]==0x01 )
{ // процедура чтения АЦП
crc_ = CRC16(rx_buffer0, 6);
if(rx_buffer0[6] == Low(crc_) && rx_buffer0[7] == Hi(crc_))
{
if(rx_buffer0[0])
{
#asm("CLI")
for (x_=0; x_<15; x_++) code_modbus[x_]=0x00;
code_modbus[0] = eep_setting[6]; // adress
code_modbus[1] = 0x04;
code_modbus[2] = 0x00;
code_modbus[3] = 0x01;
code_modbus[4] = read_adc(6);
code_modbus[5] = read_adc(7);

crc_ = CRC16(code_modbus, 6);
code_modbus[6] = Low(crc_); // crc
code_modbus[7] = Hi(crc_);
// 2 байт - команда
delay_ms(4);
RT=ON; // 3 байт - начало данных
modbus_tx(8); // передаем данные!
RT=OFF;
}

clear_buffer_rx();
delay_ms(4);

#asm("SEI")
}
}
else
{
if( rx_buffer0[0]==eep_setting[6] && (rx_buffer0[1]!=0 || rx_buffer0[2]!=0 || rx_buffer0[3]!=0 || rx_buffer0[4]!=0 || rx_buffer0[5]!=0 ))
{
if(rx_buffer0[0])
{
delay_ms(4);

ErrorMessage(0x01); //недопустимая команда
RT=ON;
modbus_tx(6); // передаем данные!
RT=OFF;
}
clear_buffer_rx();
}
else
{
clear_buffer_rx();
}
}
}

//формирование ответа об ошибке
void ErrorMessage(char Error){
int TempI;
code_modbus[1]=eep_setting[6]; // adress
code_modbus[1]=rx_buffer0[1]+0x80;//команда с ошибкой
code_modbus[2]=Error;

TempI=CRC16(code_modbus,3);//подсчет КС посылки
code_modbus[3]=Low(TempI);
code_modbus[4]=Hi(TempI);
clear_buffer_rx();
//return 5;
}//end ErrorMessage()

// отправка обработанных данных
void modbus_tx(char cNumTrByte0)
{
char TrCount=0, tx=0;

if(cNumTrByte0)tx=1; // set tx mode
while(tx)
{
if (TrCount<cNumTrByte0+2)
{
while ((UCSR0A & (1 << UDRE0)) == 0) {}; //Ожидание опустошения буфера приема
UDR0=code_modbus[TrCount];
TrCount++;
}
else
{
TrCount=0;
tx=0;
}
}
}

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Similar Content

    • By Kirill Lubinets
      Где можно симулировать сеть Modbus? Предполагаю использовать Proteus.
      Все это необходимо чтобы научится в симуляции работать с Modbus
       

       
    • By User_1
      Всем привет
      Столкнулся со странным поведением модуля: когда посылаю ему байт, он генерирует прерывание на линии IRQ, в регистре STATUS (0x07) выставляет байт RX_DR (байт принят), но при этом все три байта RX_P_NO == 1 (ничего не принято), очередь FIFO пуста (при попытке считать модуль посылает в SPI 0x00), в регистре FIFO_STATUS (0x17) байт RX_EMPTY выставлен в единичку. То есть прерывание срабатывает, а самого байта как будто и не было. Никто с таким не сталкивался?
      В настройках отправка без подтверждения и без CRC
    • By DrobyshevAlex
      Приобрел с ebay две платки на nrf24l01, вчера почитал о том как предать и  принять данные. Вроде все просто, а сегодня озадачился вопросом  Если у меня 3 платы? И одна будет слать  данные, другие обе будут их принимать? Или платы идут парами и взять может быть только 1 к 1, но что тогда если одна сломается) Да и продают их по 1.
      Или есть возможность сделать что то типа авторизации с уникальным паролем, но как тогда быть? Есть ли возможность установить сессию после авторизации, или нужно будет каждый раз слать пароль + байт данных) Там всего 12 байт вроде бы за раз передать можно
    • By Motrosoff8888
      Всем привет! Ребят есть вот это STM32F030K6T6 
      вот это, адаптер для прошивки  
      и это, собственно чем прошить. 
      Имеется прошивка, скетч, для двух Atmega328p. Есть пьезоэлементы, которые подсоединены к аналоговому пину, при касании, одна другой передаёт символы через NRF24l01, друга принимает таким же модулем и отправляет данные по блютус HC-05 на телефон.  Хотелось бы перенести её на STM32, не бесплатно конечно но и в рамках разумного. Цель переноса на STM32 - увеличить скорость отклика (задержка между ударом по пьезику и появлением символа в мониторе порта телефона) пьезо! И есть уже адаптер для прошивки МК с 32 ножками. Буду признателен если кто то ответит, можно в ЛС
    • By Motrosoff8888
      Всем привет! Ребят есть вот это STM32F030K6T6 
      вот это, адаптер для прошивки 
      и это, собственно чем прошить. 
      Имеется прошивка для двух Atmega328p. Есть пьезоэлементы, которые подсоединены к аналоговому пину, при касании, одна другой передаёт символы через NRF24l01, друга принимает таким же модулем и отправляет данные по блютус HC-05 на телефон.  Хотелось бы перенести её на STM32, не бесплатно конечно но и в рамках разумного. Цель переноса на STM32 - увеличить скорость отклика (задержка между ударом по пьезику и появлением символа в мониторе порта телефона) пьезо! И есть уже адаптер для прошивки МК с 32 ножками. Буду признателен если кто то ответит, можно в ЛС
  • Сообщения

    • 4uvak, Я извиняюсь что много вам вопросов написал в личку, но изначально Я вам предлагал поговорить голосом в скайпе или вайбере, повести платяную консультацию по помощи в сборке станции, без этого тут флуда как вы вырезались !!!
    • С учетом всего напрашивается какой-то такой практический вариант:    
    • To - > 4uvak  Благодарю Вас !  Собирая Ваш проект ... чувствуется ,  что Вы немало усилий приложили, чтобы последователям ) было легко !)) За энкодер - понял ....  Как сделаете корректировку ... сообщите  !!! Завтра буду делать силовую плату ....   To - > sancheni  Думаю не только у меня сложилась масса вопросов к Вам ....  Но не хочется их задавать ... Прочтите пожалуйста всю ветку форума ...... ВДУМЧИВО !!! И ... если останется пара вопросов ... задайте их ...   А ту массу вопросов, которые Вы задаете здесь -  задавайте так ....  ОК GOOGLE ...  )))   PS  Плату травил сам ( лут )   Экран 100 грн.  
    • Оплата картой/наличными? LA2500 имеется?
    • А там что то напаяно? Провод должен быть такой же, как на правых выводах. Я так думаю. И потом   А четыре правых вывода должны звониться.
    • Этими "извращениями" человек пытается "убить" сразу двух зайцефф. Во первых, при таком включинии выходного транзистора исключается падение максимального выходного напряжения на величину  равную смещению Б-Э составного транзистора  и, самое главное,  появляется возможность получить на выходе ЛАБа, практически, любое выходное напряжение, если выходной транзистор запитать от отдельного источника питания развязав его от питания самой схемы управления. Примерно так, как сделано вот в этой схеме -       
    • странно, когда я читал форум сообщение от serzhant808е не отображалось, получилось я его повторил. Waso, мне конечно льстит титул "Сам" (и палец вверх), но какое это имеет отношение к теме? защита на процессорах используется в более серьёзной технике, а ваши "минусы-плюсы" в рейтинге это ваши подковёрные игры, я в них не играю. Чего-то не поняли или вопрос показался сложным - значит минус, детский сад
×
×
  • Create New...