Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[Atmega16A-AU] Zbyt wolne taktowanie

06 Lut 2013 14:23 1584 12
  • Poziom 13  
    Mam problem z taktowaniem procesora Atmega16A-AU.
    Mam wykonane dwie identyczne płytki, na których zamontowane są dwa jednakowe (mogłoby się zdawać po odczycie na obudowie procesora) Atmegi16A-AU.
    Program realizuje między innymi cykliczne miganie diodą - po którym to miganiu stwierdzam, że obie Atmegi z wgranym takim samym programem charakteryzują się różną częstotliwością mrugania. Dokładniej jedna miga przynajmniej 10 razy wolniej.
    Odczytałem fusebity w obu procesorach za pomocą mkAVRCalculatora i są identyczne - wewnętrzny oscylator 1MHz . Wykonałem doświadczenie polegające na przelączeniu tego wolniej działającego procka na 8Mhz - dioda migała szybciej, jednak nie tak jak w pierwszym procku.
    Czy ktoś ma może pomysł skąd może pochodzić ten problem?
    Podzielę się jeszcze swoją drobną wątpliwością dotyczącą wspomnianego mkAVRCalculatora:
    Otóż z listy procesorów można tam wybrać Atmega16 lub Atmega16A. Jednak mimo, że na obudowie obu moich procesorów widnieje napis "Atmega16A-AU" fusebity moge odczytać jedynie wybierając Atmega16. Gdy wybieram Atmega16A mkAVDCalc wyrzuca komunikat o błędzie.
    Czy na liście nie powinno być pozycji Atmega16A-AU, żeby poprawnie odczytać fusebity?
    W tym poście przeczytałem, że Atmegi z literką A mają ustawiony fabrycznie inny oscylator i dzielnik. Ale u mnie się to teoretycznie nie sprawdza.
    Proszę o pomoc...
  • Poziom 19  
    Może po prostu w obu uC są inne programy?
  • Poziom 42  
    PJimi napisał:

    W tym poście przeczytałem, że Atmegi z literką A mają ustawiony fabrycznie inny oscylator i dzielnik. Ale u mnie się to teoretycznie nie sprawdza.
    Proszę o pomoc...


    to może zamiast czytać posty i nie wiadomo co jeszcze w internecie - zajrzyj po prostu do PDF'a od ATmela gdzie masz porównanie ATmega16 i ATmega16A

    http://www.atmel.com/Images/doc8163.pdf

    kurczę - zaledwie 3 strony - i pokaż mi gdzie tam mowa o takich rzeczach jak różne oscylatory ? Pokaż mi choć JEDNĄ różnicę pomiędzy tymi dwiema wersjami procków jeśli chodzi o programowanie ?

    Sam się zdziwisz jak zajrzysz do tego dokumentu - NIE MA ŻADNYCH różnic, i dlatego MkAvrCalculator obsługuje spokojnie ATmega16A DOKŁADNIE tak samo jak ATmega16 bo nawet SYGNATURY są te same.....

    A ty na spokojnie sam doczytaj czym się różnią i dlaczego tylko kilkoma parametrami elektrycznymi.
  • Poziom 21  
    Nie pamiętam dokładnie dokumentacja Atmaga16 ale jest tam rejestr kalibrujący generator RC.

    Znalazłem:
    Cytat:
    The ATmega16 stores four different calibration values for the internal RC Oscillator. These bytes
    resides in the signature row High Byte of the addresses 0x0000, 0x0001, 0x0002, and 0x0003
    for 1 MHz, 2 MHz, 4 MHz, and 8 Mhz respectively. During Reset, the 1 MHz value is automatically
    loaded into the OSCCAL Register. If other frequencies are used, the calibration value has
    to be loaded manually, see “Oscillator Calibration Register – OSCCAL” on page 30 for details.

    [Atmega16A-AU] Zbyt wolne taktowanie
  • Poziom 13  
    W obu procesorach jest dokladnie ten sam program wgrany doslownie z tego samego pliku, programatora itp. Myslalem juz o tym ze procesor moze byc uszkodzony ale wymienilem go na taki sam i problem pozostal. Fusebity ustawione identycznie w mkAVRCalc. Nie mam pomyslu na rozwiazanie problemu. Moge jako trop jedynie dodac ze na tej plytce jakis czas temu spalilem procesor robiac jakies zwarcie. Wymienilem procek i rezystory i kondensatory odpowiedzialne za jego zasilanie oraz filtracje. Po zamontowaniu nowego procesora pojawil sie problem. Poprzedni (spalony) dzialal ok, ale zaznaczam ze byl on z tej samej parti co ten dzialajacy na drugiej plytce.
  • Specjalista - Mikrokontrolery
    A może jeden z nich się po prostu ciągle resetuje, i dlatego masz wrażenie, że jeden mruga szybciej?

    Który z nich mruga z prawidłową prędkością? Ten, który mruga szybciej czy wolniej?
  • Poziom 13  
    Taka też był moja wczorajsza myśl - że procesor może się resetować. Wymieniłem dziś 10k przez które podpinam RST do Vcc i jest to samo. Podrążę jeszcze temat resetowania bo niczego innego na chwilę obecną nie jestem się w stanie chwycić.
    Czy gdyby faktycznie się resetował to objawy byłyby właśnie takie? Kiedy procesor może się resetować i jak to wpływa na działanie programu?
  • Poziom 21  
    Jeżeli masz możliwość podłącz kwarc.
  • Poziom 21  
    Napisz program w taki sposób żeby dioda migała coraz szybciej - od razu się zorientujesz czy się resetuje.
  • Poziom 13  
    Problem rozwiązany:
    W urządzeniu używam INT0. INT1 i INT2. Sygnałem podłączonym do przerwań jest detekcja zera sieci (z 3 faz). Detektor generuje krótki ujemny impuls w momencie przekroczenia napięcia przez zero. INTy były ustawione na stan niski (a nie na zbocze). Gdy 3 detektory działały poprawnie (dawały ujemne szpilki w zerze) procesor widział je jako chwilowy stan niski i generował przerwania.
    Jeden detektor zera niestety padł i generował na wyjściu cały czas stan niski - czyli wyzwalający przerwanie. W efekcie przerwania wykonywały się cały czas spowalniając pracę normalnego programu.
    Stany na INTach sprawdziłem za pomocą sondy logicznej. A na trop rozwiązania problemu wpadłem wyłączając obsługę przerwań sei() , która czasem może powodować niepożądane resety uP.
    Temat uważam za zamknięty - dziękuję za pomoc.
    A wracając do tematu różnych taktowań Atmeg i AtmegA to miałem na mysli, że oczywiście oba procesory się nie różnią w tym zakresie ale fabryczne ustawienie ich fusbitów daje inne taktowanie.
  • Poziom 42  
    PJimi napisał:

    A wracając do tematu różnych taktowań Atmeg i AtmegA to miałem na mysli, że oczywiście oba procesory się nie różnią w tym zakresie ale fabryczne ustawienie ich fusbitów daje inne taktowanie.


    Nic nie daje inne taktowanie, WSZYSTKO w m16 i m16A jest IDENTYCZNIE (poza kilkoma elektrycznymi różnicami). Toż pokazałem notę ATMELA porównawczą.
  • Moderator Mikrokontrolery Projektowanie
    PJimi napisał:
    Czy gdyby faktycznie się resetował to objawy byłyby właśnie takie? Kiedy procesor może się resetować i jak to wpływa na działanie programu?

    To czy się resetuje i z jakiej przyczyny łatwo stwierdzić, za pomocą rejestru MCUCSR:

    [Atmega16A-AU] Zbyt wolne taktowanie