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

Dyrektywa $PROG &00,&00,&00,&00

michal5123 07 Cze 2010 22:24 1976 26
REKLAMA
  • #1 8166901
    michal5123
    Poziom 10  
    Czy dyrektywa $PROG &00,&00,&00,&00 wpisana na początku programy i po wgraniu na mikrokontroler AtMega8 mogła go uszkodzić? Program się skompilował bez problemu i symulacja była bez zarzutu, lecz po wgraniu na mikrokontroler program nie działał i prz próbie wgrania nowego programu wyskakuje komunikat "Could not identify chip with ID:FFFFFF"
  • REKLAMA
  • #2 8166952
    Konto nie istnieje
    Poziom 1  
  • #3 8167055
    michal5123
    Poziom 10  
    Z tego wszystkiego zapomniałem napisać że program był napisany w Bascomie, z tego co wyczytałem to ta dyrektywa określa stan bitów zabezpieczeń i FuseBits. A czy jest jakiś sposób zresetowania mikrokontrolera aby powrócił do ustawień fabrycznych?
  • REKLAMA
  • #4 8167070
    Konto nie istnieje
    Poziom 1  
  • #5 8167827
    michal5123
    Poziom 10  
    A jaki koszt jest mniej więcej takiego programatora zrobionego samemu lub kupionego gotowego w sklepie?
  • #6 8168428
    Konto nie istnieje
    Poziom 1  
  • #7 8168598
    tmf
    VIP Zasłużony dla elektroda
    Ta konfiguracja fusebitów przełącza procesor na external clock, co nie jest takie złe, bo możesz podać przebieg na XTAL1. Gorzej, że blokuje też reset i robi z niego PC6 - zostaje więc tylko programator HV. Sprawa jest prosta, możesz do tego celu wykorzystać port lpt (bezpieczniej byłoby jednak dać bufor, np. 74xxx244/245), pod reset dajesz +12V ręcznie i jedziesz. Od strony 226 DS masz opis jak się programuje procesor w tym trybie, na stronie 228 masz algorytm. Na PC w pare minut stworzysz aplikację, która ci przywróci fusebity. Koszt operacji - trochę straconego czasu :)
  • #8 8168620
    Konto nie istnieje
    Poziom 1  
  • #9 8168721
    tmf
    VIP Zasłużony dla elektroda
    Dlatego napisałem, że na RESET dajesz ręcznie 12V. Do przestawienia samych fusebitów bardziej zaawansowane sterowanie resetem nie jest wymagane.
  • #10 8168861
    PO.
    Poziom 20  
    Jak nie masz lpt to możesz użyć drugiego działającego procka, wszystkiego trzy bajty wysłać :) i machnąć odpowiednio +12V w międzyczasie tranzystorem.
    Sprawdzone w praktyce, działa.
  • #11 8169062
    michal5123
    Poziom 10  
    Jestem początkujący więc troszkę się gubię
    tmf napisał:
    Od strony 226 DS masz opis jak się programuje procesor w tym trybie, na stronie 228 masz algorytm

    Co oznacza DS?
    Gdzie wpisuje później ten algorytm w jakiś program?
    To zadziała jeśli przy próbie programowania wyskakuje błąd "Could not identify chip with ID:FFFFFF"?
    Jest może gdzieś opis krok po kroku jak to się robi?
  • #12 8169115
    Konto nie istnieje
    Poziom 1  
  • REKLAMA
  • #13 8169120
    tmf
    VIP Zasłużony dla elektroda
    DS - datasheet - nota katalogowa. Masz tam algorytm programowania, na podstawie, którego możesz napisać własny program, który ten procesor ożywi. Błąd, który ci wyskakuje jest związany z tym, że procesor nie ma zegara i w związku z tym nie działa. Ponadto nie działa reset, który jest niezbędny aby wejść w tryb programowania.
  • #14 8169123
    gaskoin
    Poziom 38  
    DS to podstawa do zaprogramowania procesora, skrót od DataSheet
  • #15 8169138
    PO.
    Poziom 20  
    DS to datasheet.
    Sam piszesz program, sam wysyłasz gołe bajty na fizyczne piny, pilnując co kiedy wysyłasz.
    Krok po kroku to jest właśnie w datasheecie.
  • REKLAMA
  • #16 8169225
    manekinen
    Poziom 29  
    Jeśli masz drugą atmega8 to możesz zrobić sobie w pająku lub po prostu wykonaj płytkę to Ci się przyda na przyszłosć :) - LINK
  • #17 8170372
    michal5123
    Poziom 10  
    Widzę że opcji jest wiele:)
    Więc tak port LPT posiadam. Chcąc robić na podstawie DS to muszę mieć programator HV. Następnie tworzę aplikację w Delphi w wyniku czego otrzymam plik. Wgrywam ten plik na atmege za pomocą programatora i jakiegoś programu do programowania. Tak to mniej więcej by miało wyglądać?
    Tylko że o Delphi nie mam pojęcia. Jakim programem się to programuje? Można tym samym co podczas normalnego programowania? Może ktoś posiada gotową aplikacje którą bym mógł wgrać?
    manekinen napisał:
    Jeśli masz drugą atmega8 to możesz zrobić sobie w pająku
    na czym ten sposób polega dokładniej? W tym przypadku po prostu wgrywam program napisany na podstawie DS przez drugą atmega8? Jest tu potrzebny jakiś programator? Ma ktoś może jakiś schemat jak to wygląda mniej więcej?
    Na chwile obecną nie mam pojęcia który sposób wybrać i którym będzie prościej.
  • #18 8170406
    PO.
    Poziom 20  
    Masz mizerne pojęcie co chcesz zrobić...
    Programatorem będzie albo program który wyśle na lpt co trzeba albo inna atmega z programem który to zrobi.
    Trzeba fizycznie machnąć kilkunastoma nóżkami w odpowiednich czasach i wzorach, raptem kilka razy. Jak to zrobisz Twoja decyzja. Szczegółowy opis algorytmu jest w datasheecie, tylko zastosować.
  • #19 8170463
    Konto nie istnieje
    Poziom 1  
  • #20 8171428
    michal5123
    Poziom 10  
    Tym że czarno to widzicie to się akurat nie martwię, gorzej jest z tym że sam to czarno widzę, ale jest światełko w tunelu :D ponieważ z AVR atmega doctor powinienem sobie poradzić.
    manekinen napisał:
    po prostu wykonaj płytkę to Ci się przyda na przyszłosć :) - LINK

    W tym przypadku wykonuje płytkę, montuje elementy, programuje atmege np w bascomem dołączonym plikiem hex lub bin (które zapewne są wykonane na podstawie DS), wkładam zablokowaną atmege i powinno ją odblokować.
    Jak to prosto brzmi :D, zapewne 1000 pytań się pojawi gdy będę to robił :|.
    Dyrektywa $PROG to chyba nie jest same zło i nie trzeba się jej bać. Jak się jej używa? Z Help w bascom wyczytałem tyle że ma składnię
    $PROG LB , FB , FBH , FBX
    gdzie:
    LB bity zabezpieczające, Lockbits,
    FB Fusebit,
    FBH Fusebit High,
    FBX Extended Fusebit.
    Domyślam się że &00 blokuje. W praktyce do czego się jej używa? Co można ustawić poszczególnymi bitami. Zapewne wszystko jest zawarte w DS, ale z angielskim u mnie mizernie :cry:
  • #21 8171488
    tmf
    VIP Zasłużony dla elektroda
    Wypadałoby cię znowu odesłać do DS - sekcje fusebits i lockbits. Naprawdę tam jest wszystko napisane. Zobacz też sekcje clock i clock sources.

    Dodano po 43 [sekundy]:

    PS. Do ATMegi8 chyba ktoś przetłumaczył instrukcję, a jak nie do tego to do innego, w tym zakresie AVRy są dosyć podobne.
  • #22 8171722
    PO.
    Poziom 20  
    michal5123 napisał:
    Tym że czarno to widzicie to się akurat nie martwię, gorzej jest z tym że sam to czarno widzę, ale jest światełko w tunelu :D


    To pędzący elektrowóz :E ...


    Odpuść sobie na początek dyrektywę jak robisz dla siebie - lockbity Ci nie potrzebne, a jedyny fusebit do przestawienia to źródło zegara jak będziesz potrzebował więcej niż 1MHz. Przepraszam, jeszcze JTAGEN w a16, ale nie używasz a16.
  • #23 8171900
    gaskoin
    Poziom 38  
    tmf napisał:
    PS. Do ATMegi8 chyba ktoś przetłumaczył instrukcję, a jak nie do tego to do innego, w tym zakresie AVRy są dosyć podobne.


    do 8 też widziałem ale po 32us na googlach znalazłem to:

    http://www.dioda.com.pl/forum/topics23/mikrokontrolery-linki-vt935.htm

    w pierwszym poście tego wątku 2 link masz przetłumaczoną instrukcję do Atmegi16 (trochę okrojoną ale JEST :P )

    opis fusebitów parę miesięcy temu widziałem na stronie www.edw.com.pl wytłumaczenie było bardzo łopatologiczne.

    Mimo wszystko warto zaglądać do DS, język angielski jakim się tam posługują nie jest językiem którym posługują się na 13 roku studiów filologii angielskiej
  • #24 8174816
    michal5123
    Poziom 10  
    PO. napisał:

    To pędzący elektrowóz :E ...

    No właśnie albo się uda do niego wsiąść, albo mnie minie :D

    A idzie ta dyrektywą przestawić atmege z 1MHz na 8MHz? Jeśli tak to jak ona by musiała wyglądać?

    gaskoin napisał:

    Mimo wszystko warto zaglądać do DS, język angielski jakim się tam posługują nie jest językiem którym posługują się na 13 roku studiów filologii angielskiej

    Wiem to, w szkole miałem angielski ale nigdy mi nie był potrzebny to się do niego specjalnie nie przykładałem. Teraz chyba będę musiał się za niego zabrać, bo odkąd zacząłem zabawę z mikrokontrolerami to coraz częściej się na niego napotykam.
  • #25 8174913
    Konto nie istnieje
    Poziom 1  
  • #26 8175487
    michal5123
    Poziom 10  
    Są już zamówione :) ale jeszcze nie doszły, wziąłem 3 na pewno się przydadzą :)
  • #27 8175574
    utak3r
    Poziom 25  
    atom1477 napisał:
    A z tą dyrektywą to raczej daj sobie spokój. Jeszcze nie widziałem żeby ktoś tym zmieniał FuseBity.


    Hmmm....
    Ujmę to tak - na PICach to norma - zawierać wymagane do projektu fusy w kodzie programu, pomimo, iż przecież można sobie przestawić w programie flashującym. Wiesz, jaki jest efekt? Taki, że brak na forach postów o blokadzie procka, brak projektów "rezurektorów" itp.itd., co w przypadku AVR to codzienność for. Do tej pory myślałem, że to dlatego, iż nie mają takiej możliwości - a tu widzę, że jednak jest... Jeśli można coś zautomatyzować - lepiej to zrobić, każda akcja przeprowadzana ręcznie to potencjalne źródło problemów i błędów użytkownika.
REKLAMA