logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Jak rozpoznać szybkość zegara w AVR (16MHz, 12MHz, 8MHz)?

JacekCz 29 Mar 2016 13:22 1014 3
REKLAMA
  • #1 15563687
    JacekCz
    Poziom 42  
    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
  • REKLAMA
  • #2 15563779
    tmf
    VIP Zasłużony dla elektroda
    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.
  • REKLAMA
  • #3 15563812
    Konto nie istnieje
    Konto nie istnieje  
  • #4 15566899
    JacekCz
    Poziom 42  
    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/topic3185682.html#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
REKLAMA