Imprecisão de tempo de delay no STM32 ou pino incorreto?

Projetos com STM32
biazoto
Membro
Mensagens: 9
Registrado em: 31/Ago/2018, 18:03

Imprecisão de tempo de delay no STM32 ou pino incorreto?

Mensagem por biazoto » 09/Set/2018, 14:15

Um salve a todos do forum.
Estou fazendo testes com 3 micro processadores, o Arduino nano, STM 32 e o ESP 32.
Tive problemas com leitura de controle de fluidos e achei os resultados um pouco estranhos, por isso resolvi fazer testes utilizando um osciloscópio.
A principio resolvi fazer um simples teste com a função delayMicroseconds com pinout high de 1.2 ms em cada um dos três.
Os Arduino (UNO e NANO), ESP32 Wroom estavam precisos com a leitura do osciloscópio mas o STM32 precisou de um fator de correção para diminuir o tempo que estava acima de 1.2 ms.
Estaria eu utilizando um pino errado (PB5) para executar esta função?
Segue abaixo o exemplo do código utilizado no arduino ide

Código: Selecionar todos


// ################# Definicao de constantes
#define FUEL PB5         // output DO PULSO 
// ################# Declaracao de variaveis
float PULSO = 1.2 ; // TEMPO DE DURAÇÃO DO PULSO EM MS  a ser convertido em microsegundos
float FATOR = 0.85; //  fator de correção de 0,85 para ajustar o tempo lido no osciloscópio
float PULSOM = PULSO * 1000 * FATOR ; // TEMPO ESTADO HIGH

do
{
digitalWrite(FUEL, HIGH);
delayMicroseconds(PULSOM);
digitalWrite(FUEL, LOW);
delay(500); // TEMPO DE ESTADO LOW
}
while (1 == 1);
Carlos Biazoto
Osasco - SP
|----------------- Utilizo ---------------- |
| Arduino IDE 1.8.8 |
| Nano, STM32, ESP8266, ESP32 |
|--------------------------------------------|

biazoto
Membro
Mensagens: 9
Registrado em: 31/Ago/2018, 18:03

Re: Imprecisão de tempo de delay no STM32 ou pino incorreto?

Mensagem por biazoto » 12/Set/2018, 12:15

Adicionando informação
Refiz o teste verificando as configurações e utilizando outro STM32F103C8 e os resultados foram idênticos.
Foi necessário utilizar um fator de correção para o STM32 manter um pulso com o tempo correto.
Mais alguém teve esta experiência ou estou utilizando pino errado?

Carlos Biazoto
Osasco - SP
|----------------- Utilizo ---------------- |
| Arduino IDE 1.8.8 |
| Nano, STM32, ESP8266, ESP32 |
|--------------------------------------------|

Sérgio Lembo
Novato
Mensagens: 1
Registrado em: 20/Out/2018, 18:28

Re: Imprecisão de tempo de delay no STM32 ou pino incorreto?

Mensagem por Sérgio Lembo » 20/Out/2018, 19:01

Erro bravo esse se considerarmos que a ST diz no manual que o RC interno é calibrado de fábrica para 1%. Aqui estou assumindo que está sendo utilizado o oscilador interno. Caso seja externo a colocação do osciloscópio nos pinos OSC_IN ou OSC_OUT já te permitirá conferir a frequência base.
De qualquer forma aqui vai um link de calibração do RC interno quando se deseja precisão de tempo <1%, talvez te dê uma luz.
https://www.st.com/content/ccc/resource ... 289137.pdf

No seu código não aparece as informações iniciais onde é informado o valor do clock e sua origem.
Acredito ter havido um erro nas informações iniciais do seu compilador na parte de frequência e origem, 15% de erro é coisa demais.
Boa sorte

biazoto
Membro
Mensagens: 9
Registrado em: 31/Ago/2018, 18:03

Re: Imprecisão de tempo de delay no STM32 ou pino incorreto?

Mensagem por biazoto » 23/Out/2018, 16:34

Prezado Sergio
Obrigado pela ajuda
Eu fiquei tão perplexo com a falha que cheguei a utilizar dois osciloscópios para ver a leitura e só não testei outro STM32 por não possuir algum vindo de outro lote de fabricação.
Sobre o seu questionamento sobre não haver valor do clock de origem, realmente não há porque não estou usando nenhum settings de clock no código.
Estou utilizando o arduino IDE nos três processadores e baseado nas suas informações e meus testes posso chegar a algumas hipóteses.
1 - Necessidade de settings de clock no código para uso com STM32 no Arduino IDE.
2 - Bug no compilador do arduino IDE para STM32
3 - Lote de processadores com falha.
Carlos Biazoto
Osasco - SP
|----------------- Utilizo ---------------- |
| Arduino IDE 1.8.8 |
| Nano, STM32, ESP8266, ESP32 |
|--------------------------------------------|

licorj
Membro
Mensagens: 3
Registrado em: 27/Jul/2018, 23:47

Re: Imprecisão de tempo de delay no STM32 ou pino incorreto?

Mensagem por licorj » 08/Nov/2018, 13:24

Caro Biazoto,
Fez mais algum teste, ou chegou a alguma conclusão ?
Testou a inclusão de códiço específico de Clock para STM32 ?
Vou usar um STM32, e me interessei pelo tópico.
Vou usar interrupção externa para pegar o "tempo de vôo" dos contatos de um Relé, entre o "Normal Aberto" e o "Normal Fechado". Isso é: O tempo em que o Relé estará com os dois contatos abertos ao mesmo tempo.

biazoto
Membro
Mensagens: 9
Registrado em: 31/Ago/2018, 18:03

Re: Imprecisão de tempo de delay no STM32 ou pino incorreto?

Mensagem por biazoto » 09/Nov/2018, 10:19

Ola.
Estou discutindo isso em outro forum e uma das suspeitas é que o cristal do STM deve estar com problemas.
Por ter utilizado dois processadores do mesmo lote, não pude mais realizar testes e continuei meu projeto com um arduino nano.
Se você tiver como medir o tempo utilizando meu sketch acima, eu agradeço e assim poderemos chegar a uma conclusão.
[ ]´s
Carlos Biazoto
Osasco - SP
|----------------- Utilizo ---------------- |
| Arduino IDE 1.8.8 |
| Nano, STM32, ESP8266, ESP32 |
|--------------------------------------------|

Responder