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

EFM8SB2 - Zablokowany\uszkodzony mikrokontroler po zmianie bitu.

dawid_sw1 28 Wrz 2015 16:44 4323 7
  • #1 15027465
    dawid_sw1
    Poziom 11  
    Witam, dziś po długiej walce z odświeżoną rodzina 8051 udało mi się zaprogramować procesor EFM8SB2. Długo się tym nie nacieszylem bo po zmianie bitu w rejestrze clksel odpowiedzialnego za podział częstotliwości zegara procesor zdechł. Nie wykrywa go już programator a sam układ działa jak bez zaprogramowanego Flasha. Mało jest informacji o tych mikrokontrolerach, ale może miał ktoś z nimi stycznosc
  • #2 15028215
    JarekC
    Poziom 32  
    Witam,

    Rejestr CLKSEL po resecie przyjmuje domyślną wartość więc to nie powinno byc problemem.

    Napisz coś więcej na temat konfiguracji układu:
    - czy masz podłączony zewnętrzy kwarc
    - jaki programator
    - czy to jest Evaluation Board czy coś zmontowanego samodzielnie?

    Pozdrawiam
    JarekC
  • #3 15028322
    dawid_sw1
    Poziom 11  
    Tak przyjmuje wartość 0x3 czyli f/8. Ja ustawiłem f/1. Kwarcu nie ma. Programator
    https://www.silabs.com/Support%20Documents/TechnicalDocs/8-bit-USB-Debug-Adapter.pdf
    Mam kity sleepy be, universal bee i wszystko na nich jest ok. Dwie płytki sobie zmontowałem, bez kwarcu i na początek dałem tylko diode LED, reszty nie lutowałem. Wiem, że to nie powinno być problemem, ale jest, bo po zmianie padły dwie płytki. Myśle że problemem może być kwarc ale nie da rady go dolutować bo obudowa to qfn-24
  • #5 15028805
    dawid_sw1
    Poziom 11  
    CLKSEL = CLKSEL_CLKDIV__SYSCLK_DIV_1;
    Nie mam.
  • #6 15028997
    JarekC
    Poziom 32  
    Spróbuj dodać rezystor rzędu 2.2kOhm - 4.7 kOhm pomiędzy linię C2CK a zasilanie i sprawdź czy programator go zobaczy.

    Czyli masz CLKSEL = 0x00 czyli oscylator HFOSC i dzielnik 1.

    EFM8SB2 domyślnie startuje na oscylatorze LPOSC i dzielniku 8.

    Po zmianie źródła zegara powinieneś odczekać do momentu jego stabilizacji,
    przykładowy fragment kodu od Silicon Labs:

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Pozdrawiam
    JarekC
  • #7 15029125
    dawid_sw1
    Poziom 11  
    Nie no CLKSL nie zmieniałem bo to odpowiada za wybór oscylatora, tylko CLKDIV chyba że jest gdzieś napisane, że jeżeli CLKDIV zmieni się z 0x3 na 0x0 to automatycznie CLKSL=0x0.
    C2CK podciągnąłem do VCC ale to nie pomogło.
  • #8 15029213
    JarekC
    Poziom 32  
    Wpisując nową wartość do CLKSEL zmieniasz cały rejestr jednocześnie a nie tylko bity dzielnika.
    Jeżeli chciałeś pozostawić oscylator LOW POWER to trzeba było wpisać:

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Niemniej nawet zmiana oscylatora nie powinna wpłynąć na dostęp do uP poprzez debugger/programator.

    Więcej chyba nie pomogę.
    Spróbuj napisać na forum technicznym Silicon Labs.

    Pozdrawiam,
    JarekC
REKLAMA