Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Aqui está a versão com o adc rápido, usando um oversampling de pelo menos 6 bits para nosso adc. Não sei dizer até onde isso realmente adiciona precisão, preciso ainda fazer um teste com uma tensão de referência bem estável, e também comparar os valores com um voltímetro de alta precisão.
Algumas mudanças necessárias para aumentar a frequência foram:
Para tentar melhorar o nível sinal-ruído do adc, apliquei também a técnica de 'noise reduction' utilizando o sleep no modo adc. Não consegui perceber diferenças, mais testes precisam ser feitos. Até mesmo não tenho certeza se ele está em sleep na maior parte dos adcs por conta da interrupção do timer do machine. Talvez uma opção em relação à isso seria remover este timer e fazer com que o machine rode de acordo com um divisor de clock do próprio timer do adc, mas pode resultar em uma janela com pouco tempo disponível para o processamento.
Nota que por estar testando num arduino, desabilitei o canbus.
É importante notar que agora tem 500 mil interrupções por segundo ocorrendo, então talvez na hora de enviar os dados pelo canbus tenhamos que realizar atomicamente desabilitando as interrupções naquela parte.