Witam,
W ramach wolnego czasu robię różne doświadczenia a wewnętrznym przetwornikiem ADC w mikrokontrolerze Atmega32. Jak w tytule, jestem na etapie budowy prostego oscyloskopu tylko i wyłącznie w celach edukacyjnych, (bo to przerost formy nad treścią). Oczywiście podzielę się doświadczeniami gdy skończę.
Na stronie kolegi „dondu” (bardzo dobrej!) jest fajny artykuł na temat maksymalnych osiągów ADC - Link. Mnie zastanawia jak podebrać te dane, i przesłać je do PC. Postanowiłem zapisywać wartości z przetwornika do RAM, i wysyłać je dopiero po pobraniu 1024 próbek.
Mimo tego wykres nie wiele się różni od tego strumieniowanego na żywo przez UART z prędkością 921600 bodów/s.
Zastanawia mnie jak mogę jeszcze usprawnić mój doświadczalny program, i maksymalnie wykorzystać Atmege, bazując na doświadczeniach z powyższej strony.
W tej chwili taktuje ją zegarkiem 14,745 600MHz (przy takim kwarcu komunikacja UART ma najmniej błędów).
ADC ustawione w tryb „free running” z preskalerem 16.
Może powyłączać wszystkie niepotrzebne peryferia procesora na czas pomiaru?
Może czas zapisu do RAM jest za długi ? (można coś z tym zrobić?)
Ma ktoś jakiś pomysł ?
W ramach wolnego czasu robię różne doświadczenia a wewnętrznym przetwornikiem ADC w mikrokontrolerze Atmega32. Jak w tytule, jestem na etapie budowy prostego oscyloskopu tylko i wyłącznie w celach edukacyjnych, (bo to przerost formy nad treścią). Oczywiście podzielę się doświadczeniami gdy skończę.
Na stronie kolegi „dondu” (bardzo dobrej!) jest fajny artykuł na temat maksymalnych osiągów ADC - Link. Mnie zastanawia jak podebrać te dane, i przesłać je do PC. Postanowiłem zapisywać wartości z przetwornika do RAM, i wysyłać je dopiero po pobraniu 1024 próbek.
Mimo tego wykres nie wiele się różni od tego strumieniowanego na żywo przez UART z prędkością 921600 bodów/s.
Zastanawia mnie jak mogę jeszcze usprawnić mój doświadczalny program, i maksymalnie wykorzystać Atmege, bazując na doświadczeniach z powyższej strony.
W tej chwili taktuje ją zegarkiem 14,745 600MHz (przy takim kwarcu komunikacja UART ma najmniej błędów).
ADC ustawione w tryb „free running” z preskalerem 16.
Może powyłączać wszystkie niepotrzebne peryferia procesora na czas pomiaru?
Może czas zapisu do RAM jest za długi ? (można coś z tym zrobić?)
Ma ktoś jakiś pomysł ?
Kod: text
