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.

PIC12C508 - PIC12F508 - Jak dostosować hex z PIC12C508 do pracy w PIC12F508?

cyruss 24 Maj 2016 10:08 4323 16
  • #1 24 Maj 2016 10:08
    cyruss
    Poziom 30  

    Mam do PIC12C508A wsad *.hex i *.asm.
    Jako że PICki OTP są kapryśne przy wgrywaniu wsadu w prostych programatorach, jak i o wiele droższe od PICków FLASH, mam problem jak w tytule.
    Bezpośrednie wgranie hexa do innego rodzaju PICka nie przynosi efektu.
    Szukając na forum znalazłem ze kolega adamwesola potrafi to zrobić poprzez deasemblację hexa, przerobienie wpisów, sprawdzenie w symulatorze, wygenerowanie hexa.
    Jako że nie lubię nadużywać czyjejś pomocy, bardziej by mnie interesowało jak to zrobić samemu, czyli:
    - jakich programów (najlepiej free) użyć
    - co - krok po kroku - w nich zrobić
    Moja wiedza z dziedziny pisania programów jest niewielka, na zajęciach z ETO w latach 80. XX w pisało się programy w BASICu które w nagrodę można było uruchomić na minikomputerze PDP11...
    Czyli jakieś tam podstawy mam, z grubsza się orientuję co komendy w tekście programu znaczą.

    0 16
  • #3 26 Maj 2016 19:07
    cyruss
    Poziom 30  

    Pinowo to one są zgodne, ale programowo i funkcjonalnie nie.
    Próbowałem wsadu z 12C508A w 12F629 i 12F675 - nie działa.
    Ba, twórca urządzenia podaje wsad także i do 12F629, ale po wgraniu go do takiego PICka też nie działa.

    Używam:
    Programator JDM wersja z AVT - kit 1354.
    Program Icprog 1.06.

    Poczytałem co nieco na elektrodzie. Uratowałem dzięki temu zepsute wcześniej 12C508A (błąd weryfikacji po próbie wgrywania wsadu przy użyciu Willema). Przy użyciu edytora z Icprog-a wypełniłem obszar z błędnym kodem zerami, kod wpisałem w następne komórki. Niestety, nie wpadłem jak to zrobić inaczej niż ręcznie wklepując kod (na szczęście bardzo krótki) - kopiuj / wklej źle działa. Po wgraniu tak spreparowanego wsadu do 12C508A - działa.

    "co z wartością 'osccal' pod adresem '01FF', odczytujesz ją przed załadowaniem hex'a? " - nie za bardzo wiem o co chodzi. Program pyta czy zostawić stare dane czy też wpisać te z pliku, na wszelki wypadek zostawiam stare.

    Czekam dalej na pomysły / recepty.

    0
  • #4 26 Maj 2016 21:08
    94075
    Użytkownik usunął konto  
  • #5 27 Maj 2016 21:52
    piwkooo
    Poziom 23  

    cyruss napisał:
    Ba, twórca urządzenia podaje wsad także i do 12F629, ale po wgraniu go do takiego PICka też nie działa.

    I to nie daje ci do myślenia, że to po twojej stronie jest błąd?
    cyruss napisał:
    "co z wartością 'osccal' pod adresem '01FF', odczytujesz ją przed załadowaniem hex'a? " - nie za bardzo wiem o co chodzi. Program pyta czy zostawić stare dane czy też wpisać te z pliku, na wszelki wypadek zostawiam stare.

    Podłączasz pustego pic'a do komputera przez programator, odczytujesz go "read" pod adresem '01FF' masz wpisaną wartość kalibracyjną oscylatora (wpisaną w fabryce).
    Teraz ładujesz swój plik 'hex' jeśli jest dobrze skompilowany to program w którym programujesz powinien załadować się z wpisaną tą wartością w tej komórce, ale nie wiem jak u ciebie robiłem to przez pikit2 i pickit3 i działało.
    cyruss napisał:
    Czekam dalej na pomysły / recepty.

    Jak pochwalisz się linkiem do 'tego czegoś'(nawet na PW) mogę sprawdzić u siebie pickit'em.

    0
  • #6 27 Maj 2016 22:49
    cyruss
    Poziom 30  

    Urządzenie A - *.asm i *.hex pod 12C508. Tu interesuje mnie przerobienie tego *.hex na wersję do 12F508 lub innego 8-pinowego PICka z flashem. Nazwy zmienione na *.txt - dla umożliwienia wrzucenia jako załącznik.

    Urządzenie B - IC4-*.hex pod 12C508A i 12F629. Pierwszy po wgraniu działa, drugi nie. Oczywiście wgrane do właściwych kości. Tu niestety nie mam *.asm. Mnie interesuje dlaczego nie działa, jak to poprawić.

    Urządzenia A i B to dwa różne urządzenia.

    0
  • #7 27 Maj 2016 23:07
    piwkooo
    Poziom 23  

    cyruss napisał:
    Tu interesuje mnie przerobienie tego *.hex na wersję do 12F508 lub innego 8-pinowego PICka z flashem

    Kolego chodzi mi o linka na stronę projektu.
    Z tego co widzę jest to DCC, więc temat mi BARDZO bliski, ale muszę wiedzieć 'co to robi'?
    Jak go dostosuję to sprawdzę działanie, też mam cyfrowe DCC u siebie.

    0
  • #8 29 Maj 2016 15:48
    cyruss
    Poziom 30  

    Bywam DCC-manem na imprezach modelarskich. I trafia do mnie coraz więcej zepsutych wynalazków z tej dziedziny. Stąd ten temat.

    Pliki "shmd..." to popularny wśród FREMO-ludków booster SPAX. Istnieje wiele wersji, na PIC16F628, 16F84, 16C84, 12C508... - jak na razie najwięcej do naprawy trafiło tych z 12C508 z błędami we wsadzie. A że C dwukrotnie droższy od F a do tego kapryśny przy wgrywaniu i do tego OTP, stąd temat. Wrzucam schemat - Google po wpisaniu "booster spax" też jakieś wersje pokaże.

    Pliki na 12C508A i 12F629 to generator DCC w MiniBox-ie. Google po wpisaniu "minibox dcc" pokaże kilka wersji. Wszystkie z tym samym wsadem w 12C508A. Mnie udało się znaleźć jakąś skandynawską wersję, z tymi dwoma wsadami przy jednym schemacie. Niestety, podmiana 12C508A na 12F629 nieudana. A że dodatkowo kilka sztuk już uzdrawiałem, stąd i temat.

    0
  • #10 29 Maj 2016 21:20
    cyruss
    Poziom 30  

    @ zmyslonyy:
    Dla mnie DCC to hobby i koleżeńskie przysługi, nie zawód ani źródło dochodów, więc próg opłacalności jest bardzo niski. SPAXa można kupić za mniej niż 100 zł więc i jego naprawy są na pograniczu opłacalności, tym bardziej że ten temat dotyczy najstarszej wersji.
    Niemniej proszę o podanie na PW ceny oraz jak widzisz kwestię praw do wsadu. Zapłacę - jest mój i mogę go np opublikować za free na specjalistycznym forum, użyć w budowanym czy serwisowanym urządzeniu itp?

    0
  • Pomocny post
    #12 30 Maj 2016 20:25
    darek_l
    Poziom 12  

    Witam,
    oczywiście pliki HEX dla PIC12C508(A) i PIC12F508 są identyczne.
    Załączam projekt tak naprędce sklecony na te potrzeby.
    To są procki o słowie '12-bit'. Dla nowszych (14-bit) 12f629,..itp trzeba wyłączyć komparatory i inne ustrojstwa aby linie pracowały jako i/o i przekompilować.
    Pozdrawiam

    ps.
    do programowania (12Cxxx) używać coś porządnego i nie ma żadnych problemów z OTP czy EPROM z okienkiem, np PicStart Plus.
    Nowsze to Pickit2 lub 3 lub MPLAB'em potraktować.

    0
  • #15 01 Cze 2016 22:15
    cyruss
    Poziom 30  

    Dzięki darku.
    "używać coś porządnego" - JDM już opanowałem na tyle że mam 100% 12CXX poprawnie wgranych. A Pickit się robi.
    "wyłączyć komparatory i inne ustrojstwa" - właśnie o tym doczytałem.
    O różnicy OSCCAL PIC12C508(A) a PIC12C508 też już doczytałem, czy dobrze myślę że jest to ważne przy wykorzystaniu wewnętrznego RC, a przy XT nie ma znaczenia?
    W tej chwili nie mam na warsztacie żadnego Miniboxa ani SPAXa, kiedy tylko coś do mnie zabłądzi - wypróbuję pliki. Będzie ciąg dalszy tematu.
    Co nie znaczy że mający coś na ten temat do powiedzenia nie są mile widziani.

    0
  • #16 01 Cze 2016 23:33
    darek_l
    Poziom 12  

    OSCCAL dla użytkownika nie ma kompletnie żadnego znaczenia bo w tej 12-bitowej rodzinie czyta się z automatu bajt do aku (Working Register) po resecie a Ty cały bajt wpisujesz w rejestr. Co tam jest i jakie bity są aktywne nie ma dla Ciebie kompletnie żadnego znaczenia. 12C508 ma 4 bity, C508A ma 6, F508 ma 7 bitów. To tylko skutkuje dokładniejszą kalibracją przez producenta i bliżej tych 4 MHz.
    W rodzinie 14-bit jest to zrealizowane inaczej (skocz pod ostatni adres i wraca z wartością w aku). Jaką dają liczbę aktywnych bitów i które to są nie ma znaczenia.
    (oczywiście jeżeli nie chcesz pisać własnych funkcji do kalibracji internal RC)
    Piszę w C (Knudsen CC5X, CC8E) na cokolwiek ale akurat przy 12x508x nie stwierdziłem żadnych problemów. Uruchamiam zawsze na 'F' bo mam ich kilka (i więcej nie potrzebuję) a po 2...3 tyg prawidłowej pracy wpisuję hex'a w 'C' bo mam ich dużo. Nigdy nie było jakichkolwiek problemów. Różnią się oczywiście algorytmami programowania i te 'C' tylko programuję przez PSP.
    Pozdrawiam

    0
  • #17 05 Maj 2017 17:39
    cyruss
    Poziom 30  

    Na razie udaje mi się skutecznie wpisywać kod w 12c508 i odpuściłem sobie eksperymenty. Opanowałem też ratowanie zapisanego z błędami 12C508 przez wpisanie kodu do kolejnego czystego obszaru pamięci.
    Jeśli będą jakieś nowe informacje, temat otworzę.
    Wszystkim pomagającym wielkie dzięki.

    0