Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

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

michal5123 07 Cze 2010 22:24 1769 26
  • #1 07 Cze 2010 22:24
    michal5123
    Poziom 9  

    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"

    0 26
  • #2 07 Cze 2010 22:34
    atom1477
    Poziom 43  

    Dyrektywa? Na początku programu? A co to? Ale raczej nie.
    Co innego jak to są FuseBity. No to tak.
    A niestety właśnie na FuseBity to wygląda.

    0
  • #3 07 Cze 2010 22:51
    michal5123
    Poziom 9  

    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?

    0
  • #4 07 Cze 2010 22:52
    atom1477
    Poziom 43  

    Jest, ale programatorem równoległym.
    Do odblokowania jednego procesora nie opłaca się go raczej budować.

    0
  • #5 08 Cze 2010 09:29
    michal5123
    Poziom 9  

    A jaki koszt jest mniej więcej takiego programatora zrobionego samemu lub kupionego gotowego w sklepie?

    0
  • #6 08 Cze 2010 13:19
    atom1477
    Poziom 43  

    No nie wiem. Zrobionego samemu to z 10...20zł.
    Kupionego pewnie z 50zł.

    0
  • #7 08 Cze 2010 14:30
    tmf
    Moderator Mikrokontrolery Projektowanie

    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 :)

    0
  • #8 08 Cze 2010 14:37
    atom1477
    Poziom 43  

    Niestety taka konfiguracja wyłącza też programowanie po SPI.
    Ale pomysł z LPT dobry. Niby do jednorazowego utatuowania procesora się nada. Ale zabawy trochę będzie.

    0
  • #9 08 Cze 2010 15:16
    tmf
    Moderator Mikrokontrolery Projektowanie

    Dlatego napisałem, że na RESET dajesz ręcznie 12V. Do przestawienia samych fusebitów bardziej zaawansowane sterowanie resetem nie jest wymagane.

    0
  • #10 08 Cze 2010 15:58
    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.

    0
  • #11 08 Cze 2010 16:57
    michal5123
    Poziom 9  

    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?

    0
  • #12 08 Cze 2010 17:11
    atom1477
    Poziom 43  

    DS to datasheet.
    Algorytmu nigdzie nie wpisujesz tylko implementujesz go w czymś. Np. w Delphi albo w C# (jeżeli to na PC) albo nawet w BASCOMie (jeżeli to na drugiego uC).

    0
  • #13 08 Cze 2010 17:12
    tmf
    Moderator Mikrokontrolery Projektowanie

    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.

    0
  • #14 08 Cze 2010 17:13
    gaskoin
    Poziom 38  

    DS to podstawa do zaprogramowania procesora, skrót od DataSheet

    0
  • #15 08 Cze 2010 17:18
    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.

    0
  • #16 08 Cze 2010 17:41
    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

    0
  • #17 08 Cze 2010 22:11
    michal5123
    Poziom 9  

    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.

    0
  • #18 08 Cze 2010 22:17
    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ć.

    0
  • #19 08 Cze 2010 22:28
    atom1477
    Poziom 43  

    michal5123: nie no rozbawiłeś mnie swoją wypowiedzią :D
    Z DS czy bez niego, postąpić trzeba tak samo. DS jedynie ułatwi zadanie bo w nim pisze jak trzeba postąpić.
    A jak już, to trzeba programator równoległy a nie HV.
    Po trzecie programu do ATMegi żadnego nie wgrasz bo właśnie wgrywanie sobie teraz zablokowałeś.
    Delphi się nie programuje. To Delphi służy do programowania.
    Ten program napisany w Delphi musiał by pomachać pinami portu LPT.
    Albo musiał byś napisać program na uC. Wtedy to nie komp machał by pinami portu LPT, ale na przykład jakaś druga ATMega machała by swoimi pinami.
    Ostatecznie nie ważne co, ale coś musi machać pinami. I to coś machające pinami będzie właśnie tym programatorem równoległym. A żadnego programu do wgrania na ten zablokowany uC nie potrzebujesz. Do wgrania potrzebujesz tylko 4B nowych, tym razem poprawnych, FuseBitów.
    Jak by nie było, czarno to widzę w Twoim wykonaniu. Sorki.
    Choć zawsze czegoś byś się nauczył. Więc nie zniechęcam jak by co.

    0
  • #20 09 Cze 2010 09:48
    michal5123
    Poziom 9  

    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:

    0
  • #21 09 Cze 2010 10:10
    tmf
    Moderator Mikrokontrolery Projektowanie

    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.

    0
  • #22 09 Cze 2010 11:43
    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.

    0
  • #23 09 Cze 2010 12:42
    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

    0
  • #24 10 Cze 2010 10:51
    michal5123
    Poziom 9  

    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.

    0
  • #25 10 Cze 2010 11:23
    atom1477
    Poziom 43  

    michal5123 napisał:
    PO. napisał:

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

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


    Raczej chodziło o co innego. O to że Cię rozjedzie bo nie będziesz miał gdzie uciec.

    A z tą dyrektywą to raczej daj sobie spokój. Jeszcze nie widziałem żeby ktoś tym zmieniał FuseBity. Zmień normalnie w zakładce od FuseBitów. Bo rozumiem że już działasz na drugim procesorze.

    0
  • #26 10 Cze 2010 14:22
    michal5123
    Poziom 9  

    Są już zamówione :) ale jeszcze nie doszły, wziąłem 3 na pewno się przydadzą :)

    0
  • #27 10 Cze 2010 14:49
    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.

    0