Как стать автором
Обновить
18
0
Динар Талибуллин @dinartal

Инженер-программист

Отправить сообщение
спасибо! с наступающим! =)
Одного плюсика не хватает… может подкинете авансом? Хочется кого нибудь порадовать =)
мерит измеряет (поправил)
Я так и не смог разобраться, по какому принципу она это делает, но разобрался, как включить периферию обратно:)

вот же:
	/* Turn off all peripheral clocks that can be turned off. */
	for (i = 0; i <= SYSCLK_PORT_F; i++) {
		*(reg++) = 0xff;
	}


запись единицы в бит регистра PR — отключение питания
По ethernet можно и по PoE питать
Сейчас плата LoLin потребляет 5В 30мА пока спит и до 200мА при работе. Хорошая автономность если год сможет без замены батареи работать. Над другую схему, у есп8366 10мкА в deep sleep по даташиту.
Задача 2
Сползет в сторону, когда центробежная сила станет больше силы трения стакана о пластинку.
Опрокинется в случае когда выполняется п.1 плюс масса стакана достаточна для сохранения инерции.
Прольется вода в случае, когда п.1 не выполняется плюс воды достаточно для сохранения инерции.
Задача 1
включаем свет в вагоне, котором находимся. идем в каком либо направлении считая выключенные, до включенного. сохраняем число, гасим и идем дальше прибавляя. то есть на этот момент у нас в голове 2 числа. как только второе число будет стремиться к бесконечности, значит мы ходим по кругу и число вагонов смотреть из первого числа.
А могли при создании таска указать больший размер, а не копипастить пример и потом править конфиг?
дополнил записью
eMBErrorCode
eMBRegCoilsCB( UCHAR * pucRegBuffer, USHORT usAddress, USHORT usNCoils,
               eMBRegisterMode eMode )
{
    eMBErrorCode    eStatus = MB_ENOERR;
    int             iCoilIndex;

    if( ( usAddress >= REG_COIL_START )
        && ( usAddress + usNCoils <= REG_COIL_START + REG_COIL_NREGS ) )
    {
        iCoilIndex = ( int )( usAddress - REG_COIL_START );
        if (eMode == MB_REG_READ)
        {
          while( usNCoils > 7 )
          {
            *pucRegBuffer++ = xMBUtilGetBits( usRegCoilBuf, iCoilIndex, 8 );
            iCoilIndex+=8;
            usNCoils-=8;              
          }
          if (usNCoils) *pucRegBuffer = xMBUtilGetBits( usRegCoilBuf, iCoilIndex, usNCoils );

        }
        else if (eMode == MB_REG_WRITE)
        {
          while( usNCoils > 7 )
          {
            xMBUtilSetBits( usRegCoilBuf, iCoilIndex, 8, *pucRegBuffer++ );
            iCoilIndex+=8;
            usNCoils-=8;              
          }
          if (usNCoils) xMBUtilSetBits( usRegCoilBuf, iCoilIndex, usNCoils, *pucRegBuffer);
        }
    }
    else
    {
        eStatus = MB_ENOREG;
    }

    return eStatus;
}

Странно. А как у вас колбэк функция реализована? Пользуетесь ли утилитой xMBUtilGetBits?
у меня так
eMBErrorCode
eMBRegCoilsCB( UCHAR * pucRegBuffer, USHORT usAddress, USHORT usNCoils,
               eMBRegisterMode eMode )
{
    eMBErrorCode    eStatus = MB_ENOERR;
    int             iCoilIndex;

    if( ( usAddress >= REG_COIL_START )
        && ( usAddress + usNCoils <= REG_COIL_START + REG_COIL_NREGS ) )
    {
        iCoilIndex = ( int )( usAddress - REG_COIL_START );
        if (eMode == MB_REG_READ)
        {
          while( usNCoils > 7 )
          {
            *pucRegBuffer++ = xMBUtilGetBits( usRegCoilBuf, iCoilIndex, 8 );
            iCoilIndex+=8;
            usNCoils-=8;              
          }
          if (usNCoils) *pucRegBuffer = xMBUtilGetBits( usRegCoilBuf, iCoilIndex, usNCoils );

        }
    }
    else
    {
        eStatus = MB_ENOREG;
    }

    return eStatus;
}


Спасибо за замечание.

Информация

В рейтинге
Не участвует
Откуда
Казань, Татарстан, Россия
Дата рождения
Зарегистрирован
Активность