Atmega internal oscillator

Znów wyszło, że powinienem czytać noty katalogowe, oszczędziłoby to czasu. Buduję nakładkę na RaspberryPi, tzw. shielda, która to będzie sterownikiem dwóch serwomechanizmów i jednej lampy. Serwami można oczywiście sterować bezpośrednio z Maliny, ale z racji, iż nie jest to system czasu rzeczywistego, to przy bardzo dużym obciążeniu pozycja serwa była bardziej losowa niż zadana. Cały projekt kiedyś opiszę, a teraz wracając do sedna – komunikacja Atmegi8 którą wykorzystałem z RPi odbywać się miała przez UART i gdy testowałem to poza układem wszystko działało (a trzeba dodać, że postanowiłem korzystać z wewnętrznego oscylatora, bez zewnętrznych kwarców). Problem wyszedł na jaw po włożeniu Atmegi w układ gdzie zasilana była nie 5V, a 3.3V. Okazało się, że taktowanie na tyle się rozjechało, że transmisja 9600 nie była możliwa. Tu pojawiają się dwie opcje – kalibracja wewnętrznego oscylatora albo dołożenie kwarcu. Estetyczniej byłoby pobawić się w kalibrację bo na płytce nie przewidziałem miejsca żeby coś dołożyć koło nóżek XTAL, ale nigdy tego nie robiłem i wolałem by estetyka ucierpiała i 70gr które wydałem na kwarc. Podsumowując, jeśli chce się korzystać z wewnętrznego oscylatora należy pamiętać, że przykładowo Atmega8 jest kalibrowana dla 5V przy 25*C, przy taktowaniu 8MHz całkiem w porządku jest ustawić UART na 9600bps. Polecam stronę z tabelami ułatwiającymi dobór prędkości transmisji do taktowania: WormFood’s AVR Baud Rate Calculato

Ten wpis został opublikowany w kategorii Arduino, Atmega, embedded. Dodaj zakładkę do bezpośredniego odnośnika.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *