Antystatyczny napisał(a):
Rozumiem też, że jeśli przestawię na wyższą częstotliwośc w fuse bitach i nadal będe miał INT RC, to to nie będzie miało żadnego wpływu na stabilnośc pracy (z doświadczenia wiem, że mocno pływa częstotliwośc, bo zrobiłem zegarek na INT RC)
Niestety to jest NAJWIĘKSZY grzech i niezrozumienie początkujących
.... NIC ci nie będzie pływać przy wewn. oscylatorze RC i spokojnie możesz go używać. Ja do 80% prostych projektów gdzie tylko się da wykorzystuję wewn. oscylator RC 8MHz .... i nic więcej nie potrzeba. A to opowiadanie że RC pływa bo zegarek źle chodził ..... eeeeeh na tą chwilę zapomnij o tym
Bo próba oceniania stabilności int.RC na podstawie robienia zegarka na int.RC to mniej więcej to samo jakby próbować łapać komara wiadrem albo beczką - no można - tylko po co ?
Coś mi się wydaje jednak że nie czytałeś jeszcze całej książki bo już z samego rozdziału np o budowaniu pilota podczerwieni w RC5 czy też odbiornika już byś się co nieco dowiedział o co chodzi z wyborem hmm doborem źródła taktowania. Ale pewnie i teraz zdajesz sobie sprawę jak krótkie czasy impulsów są do pomiaru przez procek gdy dekoduje się ramki podczerwieni prawda ???? gdzie tu mowa o tak kosmicznie długich czasach jak przy robieniu "zegarka"
..... i wyobraź Pan sobie, że nawet do tych celów wystarcza wewn. Oscylator RC
A przecież gdyby był tak zły jak go opisują po takich próbach początkujący - to w zasadzie lepiej byłoby go wydłubać z procka i wyrzucić
Raczej musisz wiedzieć coś innego:
Kiedy warto dobrać zewn. kwarc i od czego to zależy
a kiedy warto działać jeszcze na wewn. oscylatorze
wskazówek i powodów jest dużo - ja też zdaje mi się mówię o tym w książce, ale w skrócie tutaj ci powiem, że jeśli nie potrzebujesz z jakichś tam względów taktowania większego niż 8MHz to zwykle wystarczy ci wewn. oscylator RC. I super że jest w prockach bo można zminimalizować ilość elementów zewnętrznych. Ale np pierwsza przesłanka kiedy dać kwarc - proszę bardzo. Potrzebujesz mieć transmisję RS232 o prędkości 115200bps
... albo w zasadzie możliwość korzystania z dowolnej i zawsze stabilnej prędkości RS232 - to wtedy sięgnę na pewno po kwarc. Ale też nie jakiś tam kwarc 8MHz czy 12MHz czy 16MHz tylko po takie dziwne wydawać by się mogło wartości jak np:
11,0592MHz, 18,432MHz i podobne
ale jak chcesz wiedzieć dlaczego - to zajrzyj sobie na ostatnią stronę noty PDF dowolnego procka AVR w rozdziale UART... tam masz takie tabelki z różnymi częstotliwościami taktowania i procentem błędó .... zwróć uwagę jakie procenty błędów są dla dowolnej prędkości dla tych kwarców które podałem wyżej
i jeszcze kilku innych takich dziwnych
Jak więc widzisz jeszcze sporo fajnych rzeczy przed tobą więc uwierz mi że nie ma co pisać takich rzeczy o tym że nie warto używać wewn. Oscylatora RC bo jest niedokładny
OK ?
Nawet RS232 działa przy nim ładnie chociaż oczywiście jeśli chcieć zastosować takie rozwiązanie w urządzeniu pracującym w różnych i skrajnych temperaturach (lato/zima) ... na dworzu - to NIE, bo temperatura może niestety na tyle w prockach AVR rozjechać RC że transmisja może się psuć ... no ale to jak mówię w skrajnych warunkach ....
dobra koniec z tym bo można by o tym jeszcze pisać i pisać
Antystatyczny napisał(a):
Już mniej więcej rozumiem wzór z datasheet. TWBR służy do dokłądnego dostrojenia SCL, a TWPS do zgrubnego, tak? W Twoim kodzie nie dopatrzyłem się fragmentu, w którym zmieniasz ustawienia TWPS. To celowe działanie, czy było jakies konkretne założenie, że np. MAX F_CPU = hmm... np. 8MHz?
Zabij mnie teraz, posól i popieprz mi rany a nie przypomnę sobie - funkcja działa i nie pamiętam jak
ale z tego co widzę na pierwszy rzut oka wykorzystuje domyślny preskaler ustawiony po resecie w TWBS
Zamiast się martwić - lepiej weź sobie właśnie zabierz się za Fusebity i potestuj sobie swoje różne wersje bibliotek i programów na różnych częstotliwościach - i wcale nie koniecznie z kwarcem tylko z wewn. Oscylatorem