Estou estudando qual a melhor forma de fazer uma comunicação modbus rtu com o ATMega168.
Pesquisando encontrei o biblioteca, https://github.com/nucleron/freemodbus-v1.5.0/tree/master/demo/AVR
Fiz alguns ajustes para conseguir compilar no AVR Studio 7.0 porém não estou me achando onde coloco os dados de envio ou como leio os dados recebidos.
No exemplo ele fica em um loop, segue abaixo
- Código: Selecionar todos
main( void )
{
const UCHAR ucSlaveID[] = { 0xAA, 0xBB, 0xCC };
eMBErrorCode eStatus;
eStatus = eMBInit( MB_RTU, 0x05, 0, 9600, MB_PAR_NONE ); //Changed address to 0x05 from 0x0A
eStatus = eMBSetSlaveID( 0x34, TRUE, ucSlaveID, 3 );
sei( );
/* Enable the Modbus Protocol Stack. */
eStatus = eMBEnable( );
for( ;; )
{
( void )eMBPoll( );
/* Here we simply count the number of poll cycles. */
usRegInputBuf[0]++;
}
}
A aplicação é implementar um escravo que vai fornecer dados do endereço, recebido pelo mestre, da memória externa I2C.
Ainda não implementei nada fisicamente, só manipulando bibliotecas.
Se alguém puder me orientar agradeço,
Ricardo