Witam,
Chciałem połączyć stosunkowo szybki przetwornik (lub przetworniki) AC z procesorem ATmega128 poprzez interfejs SPI. Napotkałem jednak kilka problemów do rozważenia. Jako, że jestem początkujący to być może dla wielu z Was te zagadnienia okażą się łatwe i będziecie w stanie mi pomóc, za co oczywiście z góry dziękuję.
Problemy są następujące:
1. Przetwornik wysyła dane w formie 16-bitowej i nie jestem pewien jak powinienem odebrać te dane, gdyż ATmega ma SPI 8-bitowy. Oczywiście można by odbierać po 8-bitów gdyby tylko przetwornik tak mógł wysyłać, ale nie może
Nie wiem natomiast czy dwukrotne odebranie po 8-bitów pod rząd jest wykonalne na ATmedze. Dodam, że prędkość SPI ma być bardzo duża najlepiej fosc/2 = 8MHz, a w najgorszym razie fosc/4 = 4MHz. Jeżeli teraz po odebraniu 8-bitów musimy zorientować się o końcu transmisji, przepisać rejestr i znowu zacząć odbierać, to nie uda się chyba tego zrobić na tyle szybko aby nie stracić części nadchodzącej informacji.
2. W ogóle nie jestem pewien jak to jest z tym odbieraniem bitów przez mastera. ATmega128 w tej sytuacji jest masterem, ale niczego nie wysyła tylko ma taktować transmisję, wybierać nadawcę i odbierać dane. Jak w ogóle to działa czy muszę wpisywać dane do rejestru wysyłkowego tak jakby procesor miał wysyłać dane żeby odebrać to co jest w rejestrze danych przychodzących? To jest dal mnie nieco niejasna część dokumentacji.
3. Chciałbym aby oprócz zajmowania się komunikacją SPI procesor w tym czasie wykonywał jakieś inne operacje (obliczeniowe, ewentualna dalsza komunikacja z pamięcią lub komputerem przez RS232 itp.) Jak to w ogóle zrobić, bo jeżeli trzeba cały czas sprawdzać status flagi mówiącej o końcu transmisji, a dane mają z założenia napływać cały czas to procesor nic innego nie będzie robił. Wydawało mi się że skoro ta część (SPI) w ATmedze jest zautomatyzowana to wystarczy np. raz na kilkanaście/kilkadziesiąt cykli zegarowych zająć się danymi otrzymanymi i powrócić do wykonywania na nich operacji. Jak to ugryźć może ktoś z szanownych kolegów ma to już opanowane?
Bardzo proszę o pomoc i dziękuję za poświęcony czas.
Pozdrawiam
Chciałem połączyć stosunkowo szybki przetwornik (lub przetworniki) AC z procesorem ATmega128 poprzez interfejs SPI. Napotkałem jednak kilka problemów do rozważenia. Jako, że jestem początkujący to być może dla wielu z Was te zagadnienia okażą się łatwe i będziecie w stanie mi pomóc, za co oczywiście z góry dziękuję.
Problemy są następujące:
1. Przetwornik wysyła dane w formie 16-bitowej i nie jestem pewien jak powinienem odebrać te dane, gdyż ATmega ma SPI 8-bitowy. Oczywiście można by odbierać po 8-bitów gdyby tylko przetwornik tak mógł wysyłać, ale nie może
2. W ogóle nie jestem pewien jak to jest z tym odbieraniem bitów przez mastera. ATmega128 w tej sytuacji jest masterem, ale niczego nie wysyła tylko ma taktować transmisję, wybierać nadawcę i odbierać dane. Jak w ogóle to działa czy muszę wpisywać dane do rejestru wysyłkowego tak jakby procesor miał wysyłać dane żeby odebrać to co jest w rejestrze danych przychodzących? To jest dal mnie nieco niejasna część dokumentacji.
3. Chciałbym aby oprócz zajmowania się komunikacją SPI procesor w tym czasie wykonywał jakieś inne operacje (obliczeniowe, ewentualna dalsza komunikacja z pamięcią lub komputerem przez RS232 itp.) Jak to w ogóle zrobić, bo jeżeli trzeba cały czas sprawdzać status flagi mówiącej o końcu transmisji, a dane mają z założenia napływać cały czas to procesor nic innego nie będzie robił. Wydawało mi się że skoro ta część (SPI) w ATmedze jest zautomatyzowana to wystarczy np. raz na kilkanaście/kilkadziesiąt cykli zegarowych zająć się danymi otrzymanymi i powrócić do wykonywania na nich operacji. Jak to ugryźć może ktoś z szanownych kolegów ma to już opanowane?
Bardzo proszę o pomoc i dziękuję za poświęcony czas.
Pozdrawiam