Witam,
Mam problem z którym już chwilę się borykam. Do STMa mam podłączony czujnik BAR180 z którym już się komunikuje po I2C. Dodatkowo skonfigurowałem ADC w trybie pomiaru jednokrotnego wyzwalanego przez Timer1 co 500µs. Dane z ADC chcę przerzucić do bufora przez DMA. Utworzyłem bufor jako tablicę o 256 pozycjach, ponieważ tyle chciałbym pomiarów. Wszystko ładnie tylko przerwanie od zakończenia transmisji DMA występuje tylko raz. Potem już nie. Chciałbym żeby DMA zapełnił mi bufor. Potem chciałbym go obrobić.
Poniżej listingi:
funkcja main:
Funkcja przerwania:
W przerwaniu zeruje flagę i chciałbym żeby po kolejnych 500us w tablicy znalazły się kolejne pomiary.
Chciałbym na bieżąco analizować dane z bufora, 256 pozycji to może trochę na wyrost. Może wystarczą 64. Chciałbym z nich liczyć wariancję aby wykryć piki sygnału na ADC. I też moje pytanie jak to najlepiej zrobić?
Proszę o odpowiedź
Mam problem z którym już chwilę się borykam. Do STMa mam podłączony czujnik BAR180 z którym już się komunikuje po I2C. Dodatkowo skonfigurowałem ADC w trybie pomiaru jednokrotnego wyzwalanego przez Timer1 co 500µs. Dane z ADC chcę przerzucić do bufora przez DMA. Utworzyłem bufor jako tablicę o 256 pozycjach, ponieważ tyle chciałbym pomiarów. Wszystko ładnie tylko przerwanie od zakończenia transmisji DMA występuje tylko raz. Potem już nie. Chciałbym żeby DMA zapełnił mi bufor. Potem chciałbym go obrobić.
Poniżej listingi:
funkcja main:
Kod: text
Funkcja przerwania:
Kod: text
W przerwaniu zeruje flagę i chciałbym żeby po kolejnych 500us w tablicy znalazły się kolejne pomiary.
Chciałbym na bieżąco analizować dane z bufora, 256 pozycji to może trochę na wyrost. Może wystarczą 64. Chciałbym z nich liczyć wariancję aby wykryć piki sygnału na ADC. I też moje pytanie jak to najlepiej zrobić?
Proszę o odpowiedź