Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Wyszukaj w ofercie 200 tys. produktów TME
Europejski lider sprzedaży techniki i elektroniki.
Proszę, dodaj wyjątek elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

AVR automatycznie rozpoznanie zegara

JacekCz 29 Mar 2016 13:22 693 3
  • #1 29 Mar 2016 13:22
    JacekCz
    Poziom 33  

    1. Czy są środki aby program (zaflashowany HEX) sam rozpoznał szybkość głównego zegara, np 16MHz, 12MHz albo 8MHz

    Nie jest wymagana dokładność typowa dla zegara czasu rzeczywistego.
    Nie ma interfejsów do internetu ani żadnych wzorców czasowych.

    2. wiem że są bity/słowa charakteryzujące model procesora, programatory to odczytują - jak własny program może je odczytać.
    Jakie fragmenty specyfikacji muszę przestudiować?

    Moją wizją jest takie zrobienie programu aby rozpoznanie zachodziło samo, np na konkretnej gotowej płytce, a program by miał być kompatybilny z 3-4 modelami procesorów

  • #2 29 Mar 2016 13:58
    tmf
    Moderator Mikrokontrolery Projektowanie

    Jeśli nie masz żadnego punktu odniesienia to nie ma możliwości sprawdzenia z jakim zegarem działa MCU. Przynajmniej w ATMega, w XMEGA masz zegary referencyjne i możesz przestawiać programowo źródło zegara, więc w tym typie AVR da się to zrobić. Można odczytać fusebity, ale to da ci tylko wgląd w konfigurację, ale np. jaki kwarc jest podłączony to się nie dowiesz.
    Generalnie wizja programu kompatybilnego z kilkoma modelami procesorów jest trudna do zrealizowania. ATTiny i ATMega mają różnie porozrzucane rejestry IO, a często ich konfiguracja również jest zmienna. Nawet napisanie kodu źródłowego, tak aby działał bez przeróbek na kilku modelach AVR jest trudne, a przy kodzie wynikowym bardzo trudne i IMHO bezsensowne. Znowu, łatwiej byłoby to osiągnąć dla rodziny AVR XMEGA, która ma ustandaryzowane peryfeia. I tak 100% kompatybilności nie będzie, ale przenoszenie kodu i tak jest znacznie łatwiejsze.

  • #3 29 Mar 2016 14:09
    Piotrus_999
    Poziom 40  

    Kolega TMF ma 100% racja.
    1. Zegar masz z reguły przylutowany do płytki więc jego detekcja jest mało potrzebna.
    2. AVR-y maja zbyt proste peryferia (oraz bardzo ograniczone zasoby) aby meczyc sie pisaniem przenośnego kodu. Latwiej i szybciej przerobic z jednego modelu na drugi. Zresztą próby zaimplementowania warstwy abstrakcyjnej nad sprzetem na duzo b. wyrafinowanych platformach (Cotexy np) skutkuja powstaniem potworow typu HAL i SPL.

  • #4 30 Mar 2016 16:51
    JacekCz
    Poziom 33  

    Piotrus_999 napisał:
    Kolega TMF ma 100% racja.
    1. Zegar masz z reguły przylutowany do płytki więc jego detekcja jest mało potrzebna.


    O tyle, że chciałbym dać "przenośne" współczynniki do timerów, gdy jedna płytka jest "konfekcjonowana" z 16MHz a druga 12MHz, a obie są w zasadzie takie same i obecnie kupiliśmy te drugie.

    Ten wątek zamykam, pozwalam sobie założyć pokrewny ale nie identyczny

    https://www.elektroda.pl/rtvforum/viewtopic.php?p=15566895#15566895

    2. Co do detekcji procesora przekonaliście mnie że nie warto pisać totalnie uniwersalnego kodu wynikowego, kod źródłowy z #ifdefami jest w pełni wystarczający

TME logo Szukaj w ofercie
Zamknij 
Wyszukaj w ofercie 200 tys. produktów TME
TME Logo