STM32 Timer input capture, automatic slope detect?
Buongiorno a tutti,
Utilizzo, come microcontrollore, un STM32F103RB, e questo è il suo Reference Manual:https://www.st.com/content/ccc/resource/technical/document/reference_manual/59/b9/ba/7f/11/af/43/d5/CD00171190.pdf/files/CD00171190.pdf/jcr:content/translations/en.CD00171190.pdf.
Lo scopo del mio progetto è di campionare un'onda quadra in ingresso, e di memorizzare in un frammento di memria SRAM, la durata di ogni singolo fronte d'onda preso separatamente, che compone quest'onda.
Allego a questo post un'immagine di come è composta la quadra entrante nel controller stesso.
Per campionare la durata di ogni singolo fronte, utilizzo il modulo "Input capture", associato al Timer quattro. Il timer è cloccato a 32 MHz, ma ho impostato un filtro d'ingresso che divide l'intervallo di campionatura per dare modo di stabilizzare la lettura, quindi per quello che riguarda i tempi di campionatura sono abbondantemente entro le specifiche del Timer integrato nel controller.
Il mio problema è questo: per come è realizzato il timer, io devo selezionare manualmente, di volta in volta la pendenza del fronte entrante dell'nda quadra nel pin del timer, attraverso il bit CC1P, del registro TIMx_CCER, come scritto a pagina 417 del Reference Manual che ho linkato proprio qui sopra.
La domanda è: esiste un modo di impostare il riconoscimento automatico del fronte d'onda del timer, in modo da non dover impostare manualmente ogni volta il fronte opposto, per poter campionare tutti i fronti?
L'alternativa altrimenti sarebbe di ripetere due volte la stessa onda composta e campionare una volta tutti i fronti alti, una seconda volta, tutti quelli bassi, e poi combinare le letture, ma non mi sembra affatto una buona idea.
Qualcuno ha qualche idea migliore?
Grazie.
Saluti.
Utilizzo, come microcontrollore, un STM32F103RB, e questo è il suo Reference Manual:https://www.st.com/content/ccc/resource/technical/document/reference_manual/59/b9/ba/7f/11/af/43/d5/CD00171190.pdf/files/CD00171190.pdf/jcr:content/translations/en.CD00171190.pdf.
Lo scopo del mio progetto è di campionare un'onda quadra in ingresso, e di memorizzare in un frammento di memria SRAM, la durata di ogni singolo fronte d'onda preso separatamente, che compone quest'onda.
Allego a questo post un'immagine di come è composta la quadra entrante nel controller stesso.
Per campionare la durata di ogni singolo fronte, utilizzo il modulo "Input capture", associato al Timer quattro. Il timer è cloccato a 32 MHz, ma ho impostato un filtro d'ingresso che divide l'intervallo di campionatura per dare modo di stabilizzare la lettura, quindi per quello che riguarda i tempi di campionatura sono abbondantemente entro le specifiche del Timer integrato nel controller.
Il mio problema è questo: per come è realizzato il timer, io devo selezionare manualmente, di volta in volta la pendenza del fronte entrante dell'nda quadra nel pin del timer, attraverso il bit CC1P, del registro TIMx_CCER, come scritto a pagina 417 del Reference Manual che ho linkato proprio qui sopra.
La domanda è: esiste un modo di impostare il riconoscimento automatico del fronte d'onda del timer, in modo da non dover impostare manualmente ogni volta il fronte opposto, per poter campionare tutti i fronti?
L'alternativa altrimenti sarebbe di ripetere due volte la stessa onda composta e campionare una volta tutti i fronti alti, una seconda volta, tutti quelli bassi, e poi combinare le letture, ma non mi sembra affatto una buona idea.
Qualcuno ha qualche idea migliore?
Grazie.
Saluti.