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

[Attiny2313] [USBasp] Brak komunikacji po zmianie CKDIV8

01 Paź 2009 14:22 4925 10
  • #1 7078651
    Konto nie istnieje
    Konto nie istnieje  
  • #3 7078888
    Konto nie istnieje
    Konto nie istnieje  
  • Pomocny post
    #4 7079019
    mirekk36
    Poziom 42  
    hmmm w zasadzie to ja tę zworkę zakładam tylko na czas przeprogramowania procka na większą częstotliwość taktowania - nigdy na programowanie (bo nie korzystam nigdy z taktowania mniejszego niż 8MHz)

    ale ok .... skoro zakładasz SLOW_SCK - i nie widzi ci tego attiny2313 to jakaś dziwna sprawa - hmmm a jaką masz wersję wsadu do usbasp? może jakąś bardzo stareńką? czy najaktualniejszą?

    poza tym próbowałeś "namacać" procka za pomocą AVRDUDE albo za pomocą tego programu?

    https://www.elektroda.pl/rtvforum/topic1354542.html

    Dodano po 6 [minuty]:

    tzn widzę że używałeś avrdude ale w połączeniu z bascomem - a próbowałeś tak z ręki wydać polecenie - w konsoli , żeby zobaczyć wyraźnie jaka będzie odpowiedź z avrdude ????

    bo dopiero teraz widzę, że piszesz iż problem jest nie wtedy gdy masz włączony podział tylko gdy jest wyłączony - czyli procek śmiga sobie na 8MHz

    dziwne - ale może coś z samym programatorem jest nie tak. Ja zrobiłem sobie i nie tylko sobie już sporo takich programatorków i jeszcze nigdy problemów nie miałem a nie raz działałem z attiny2313
  • Pomocny post
    #5 7079143
    Nawigator
    Poziom 33  
    Ja zostawiam CKDIV8 zawsze załączony i w programie zmieniam po inicjalizacji dzielnik CLK na 1/1.

    N.
  • #6 7080890
    Konto nie istnieje
    Konto nie istnieje  
  • #7 7081012
    mirekk36
    Poziom 42  
    Taz40 --> w Bascomie możesz także spokojnie przestawić programowo podział taktowania przez 8.

    Służy to tego:

    CLKPR – Clock Prescale Register

    zajrzyj do noty PDF. Domyślnie wartość podziału jest właśnie w nim ustawiona na 8 - gdy załączony jest CKDIV8.

    ale spokojnie w trakcie działania programu można to także przestawić - zapisując odpowiednią wartość do tego rejestru.

    i dokładnie wprost można to zrobić także w Bascomie - tak jak zapis do każdego innego rejestru (powinno dać tak się zrobić - akurat do CLKPR nigdy w Bascomie nic nie zapisywałem ale do OSCCAL już tak . Więc pisałem sobie wprost:

    OSCCAL = jakaś_wartość


    podobnie będzie z CLKPR
  • #8 7082853
    Nawigator
    Poziom 33  
    Nie wiem jak w Bascomie bo nie używam, to by trzeba sprawdzić w opisie komend ale jak takiej nie ma to być może da się wstawić fragment asemblerowy, coś w tym stylu:

    reset:
    cli ; istotne z uwagi na możliwe zezwolenie od watchdoga
    ldi temp, 0b10000000 ; zezwolenie na zmiane clk
    out CLKPR, temp
    ldi temp, 0b00000000 ; zmiana clk
    out CLKPR, temp
    ; .
    ; tu dalsza inicjalizacja
    ; .
    sei ; dalej w kodzie

    Istotne jest opisane w datasheet aby zmieścić się w 4 clk.
    Z kwarcami np. 20MHz trudno jest nawiązać komunikację po isp z procesorem i ten sposób jest poprawnym rozwiązaniem.

    N.
  • #9 7099804
    Konto nie istnieje
    Konto nie istnieje  
  • #10 8781775
    ginar
    Poziom 21  
    Spotkałem się z bardzo podobnym problemem co autor tematu.
    Po zaprogramowaniu fusów jak na rys.
    [Attiny2313] [USBasp] Brak komunikacji po zmianie CKDIV8
    wszelkie próby nawiązania kontaktu z uk kończą się komunikatem o niezgodności sygnatury. Jako zewnętrzny kwarc miał być użyty kwarc zegarkowy 32kHz(co w tym przypadku jest jeszcze dzielone przez 8). Zawsze programowałem jak na rys. z tym, że tym razem eclipse bit CKDIV8 ustawił domyślnie na co nie zwróciłem uwagi. Próbowałem użyć zewnętrznego generatora RC, generatora przebiegów prostokątnych (z reg. częstotl.) ale bez dobrego rezultatu.

    Ktoś może podsunie jeszcze jakiś nietypowy sposób ożywienia uk przed tym najbardziej radykalnym.
  • #11 9911483
    Szycha082
    Poziom 11  
    Witam, temat stary ale z uwagi na to iż sam miałem z nim do czynienia a co ważniejsze udało mi się jakoś go rozwiązać to żebym sam np. za rok nie musiał od nowa sobie przypominać jak to zrobiłem to napiszę tu :)

    1. Wgrywamy do procka następujący program:

    cli ; istotne z uwagi na możliwe zezwolenie od watchdoga
    ldi temp, 0b10000000 ; zezwolenie na zmiane clk
    out CLKPR, temp
    ldi temp, 0b00000000 ; zmiana clk
    out CLKPR, temp
    sei ; dalej w kodzie

    2. Teraz możemy odznaczyć CKDIV8
    3. Kasujemy kod z pkt.1

    Koniec... :)

    Generalnie chodzi o to aby pierw zmienić taktowanie programowo a następnie sprzętowo.
REKLAMA