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

ATmega64L poprawnie się programuje ale nie idzie program!!??

elvis_zyje 31 Paź 2006 23:10 1940 12
REKLAMA
  • #1 3174504
    elvis_zyje
    Poziom 14  
    Posty: 169
    Pomógł: 1
    Ocena: 3
    Witam!

    Procek jak w tytule. Programuej się wszystko cacy, kompilator (BASCOM AVR) nie wyrzuca żadnych błędów ani innych niezgodności. Jednak procesr daje się tylko programować i nic poza tym.
    Sprawdziłem wszystki: kwarc itd... nic, wszystko gra.
    moje pytanie brzmi:
    Czy może być uszkodzony procek mino że dobrze się programuje (kompilator nie zgłasza żadnych błędów).

    Dodam że piny SPI do programatora są inne niż standardowo ale wszystko jest poprawnie skonfigurowane w opcjach kompilatora (MOSI, MISO, SCK,SS). Czy to że piny nie są standardowe może być przyczyną?

    Procek sprawdzałem na prościutkim programiku żeby mrygał diodą LED co 1sek. Dioda cały czas się świeci. Nic nie dało wpisanie na samym początku resetu diody )żeby zgasła), dioda cały czas się świeci. Tylko mrygnie, raz lub dwa podczas programowania mikrokontrolera.

    Czy stoją za tym fuse bity???

    Proszę o odpowiedźSzanownych Kolegów

    Dodano po 1 [godziny] 55 [minuty]:

    TERMINAL

    $regfile = "m64def.DAT"
    $crystal = 7372800

    Config Pind.0 = Output

    Led_test Alias Pind.0

    Reset Led_test

    Do
    Set Led_test
    Waitms 500
    Reset Led_test
    Waitms 500
    Loop

    'to jest ten program i załączam też printscrina
    Załączniki:
    • ATmega64L poprawnie się programuje ale nie idzie program!!?? lock and fuse bits.jpg (129.55 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • REKLAMA
  • #2 3174902
    M. S.
    Poziom 34  
    Posty: 2107
    Pomógł: 259
    Ocena: 680
    Nie miałem do czynienia z M64 ale zauważyłem co następuje:
    uC chodzi na wewnętrznym zegarze 8MHz, ale to szczegół. M64 ma włączony JTAG. Sprawdź czy nie zajmuje on właśnie koncówki, której używasz do sterowania diodą (lub czy końcówka nie ma innej uprzywilejowanej funkcji). Jeśli tak to zmień końcówkę lub wyłącz JTAG. Sprawdź też czy programator nie wymusza stanu niskiego na końcówce reset po zakończeniu programowania - odłącz programator.
  • #3 3175027
    maciek_slon
    Poziom 29  
    Posty: 942
    Pomógł: 143
    Ocena: 27
    Jedyne co mi przychodzi do głowy to właśnie ten reset - podciągnij go do 5V...
  • REKLAMA
  • #4 3175218
    elvis_zyje
    Poziom 14  
    Posty: 169
    Pomógł: 1
    Ocena: 3
    Nie wiem co z tym JTAGiem... Korzystam z prostego programatorka ISP.
    Po odpięciu to samo (co do wymuszania stanu niskiego).

    Mam podpięty kwarc 7,372800MHz z dwoma kondensatorkami 33pF.
    co do tego fusebit DCBA to która funkcje mam wybrać (wydaje mi się że własnie 0100 internal RC oscillator ~8Mhz jest najbardziej odpowiedni).:

    -0111 external RC oscillator ~8MHz?
    -czy jakiś external crystal.resonator ...?

    Proszę o wskazówke :p

    Pozdrawiam.

    Dodano po 3 [minuty]:

    Mam wyłączyć JTAG?

    Dodano po 26 [minuty]:

    Wyłączenie JTAGA nie pomogło :/

    Dodano po 1 [minuty]:

    maciek_slom, mam podpiąć pin RESET procka do Vcc? :)
  • REKLAMA
  • Pomocny post
    #5 3175307
    zumek
    Poziom 39  
    Posty: 3352
    Pomógł: 695
    Ocena: 52
    elvis_zyje napisał:
    ... Mam wyłączyć JTAG?

    Możesz , ale nie musisz , natomiast kompatybilność z MEGA103 wyłącz(FusebitP/1)

    Piotrek
  • #6 3175313
    elvis_zyje
    Poziom 14  
    Posty: 169
    Pomógł: 1
    Ocena: 3
    Proszę Państwa, brawa dla Piotrka!!! :) :) :) działa, mruga, jeeest :) :)

    a czy mogo ustawić External RC oscillator ~8Mhz.?
    Chciałbym aby procek jak najdokłaniej i pewnie chodził.
  • #7 3175368
    zumek
    Poziom 39  
    Posty: 3352
    Pomógł: 695
    Ocena: 52
    elvis_zyje napisał:
    ...a czy mogo ustawić External RC oscillator ~8Mhz.?
    Chciałbym aby procesor jak najdokłaniej i pewnie chodził.

    Nieee rób tego :!:
    FusebitDCBA ustaw na External XTAL alias Ext. Crystal/Resonator(:1110 lub :1111)

    Piotrek
  • REKLAMA
  • #8 3175386
    elvis_zyje
    Poziom 14  
    Posty: 169
    Pomógł: 1
    Ocena: 3
    Nie ma External XTAL, za to jest:

    1010 External crystal/resonator low freq
    1100 External crystal/resonator medium freq
    1101 External crystal/resonator medium freq
    1111 External crystal/resonator high freq

    Rozumiem że mam wybrać to ostatnie.
    Dla jakiś wartości częstotliwości kwarcu przypadają pozostałe wymienione przeze mnie fuse bity?

    Dodano po 52 [sekundy]:

    zdążyłeś w ostatniej chwili :)
  • Pomocny post
    #9 3175462
    maciek_slon
    Poziom 29  
    Posty: 942
    Pomógł: 143
    Ocena: 27
    elvis_zyje napisał:

    Dla jakiś wartości częstotliwości kwarcu przypadają pozostałe wymienione przeze mnie fuse bity?


    Wystarczy zajrzeć do dokumentacji procka, strona 39/40. :-)
  • #10 3175485
    elvis_zyje
    Poziom 14  
    Posty: 169
    Pomógł: 1
    Ocena: 3
    dzięki maciek :)

    Dodano po 51 [sekundy]:

    Teraz zmieniamy procka na ATmega8535. Obydwa procki będą ze soba współpracowały przez modemy radiowe Radiometrix'a BiM2-433-64-5V. Zamierzam użyć poleceń printbin #, inputbin # ale wcześniej oczywiscie otworzyckanały procedurą open.

    Ale pytanie jest o kwarc. Otóż do tego ATmega8535 też mam podpięty kwarc 7,273800Mhz z dwoma lizakami 33p (XTAL1, XTAL2). obecnie chodzi mi procek na Internar oscullator ~8Mhz. Jednak nie jest to zbyt dokładna praca.
    Problem w tym że fusebity dla ATmega64 i ATmega8535 są inne...
    Którą opcje mam wybrać dla fusebitu A987?
    Załączam liste opcji:

    -ext. clock fast rising power
    -int. RC oscillatory...
    -ext. low freq XTAL
    -crystal oscillator, slowly rising power
    -crystal oscillator, fast rising power
    -crystal oscillator, BOD enabled ' co to jest BOD???
    -ceramic resonator/ext clock, slowly rising power
    -ceramic resonator, fast rising power
    -ceramic resonator, BOD enabled

    OK to prawie wszystkie (nie wymieniałem ext. RC oscilatorów)
    Który m,am wybrać dla opisanoego powyżej środowiska?

    Dodano po 7 [minuty]:

    intuicja mi podpowiada że to bedzie:
    111X ceramic resonator, fast rising power

    :)

    przynajmniej ta kwynika z noty katalogowej dla ATmega8535

    Dodano po 7 [minuty]:

    ale jest też ceramic oscillator, chodź dla tej opcji nie zgadza się kod binarny z tym co jest w nocie. w nocie jest mowa tylko o crystal oscillator, nie ma wspomnianego ceramic oscillator...

    Dodano po 39 [sekundy]:

    tzn crystal oscillator jest też
  • #11 3175622
    M. S.
    Poziom 34  
    Posty: 2107
    Pomógł: 259
    Ocena: 680
    Cytat:
    Zamierzam użyć poleceń printbin #, inputbin # ale wcześniej oczywiscie otworzyckanały procedurą open.


    Brzmi to dość dwuznacznie i kojarzy się z programowym UART. Jeśli tak to proponuję użyć sprzętowego UART, gdyż dysponujesz wtedy instrukcją
    Bufor = Ischarwaiting()

    pozwalającą ustalić czy w buforze jest znak (również 0). Inaczej trudno rozróżnić czy w buforze znajduje się 0 czy bufor jest pusty.
    Co do kwarców to powiem, że u mnie ATMEGA8 komunikuje się bezbłędnie na różnych szybkościach z telefonem komórkowym przez sprzętowy UART, a z odbiornikiem GPS przez programowy - odbierając długie łańcuchy tekstowe na wewnętrznym oscylatorze 8MHz!
    Zanim podejmiesz decyzję sprawdź warunki stosowania instrukcji obsługujących UART (w zależności od rodzaju sprzęt - program) bo inaczej mogą się zdarzyć różne niespodzianki przy uruchamianiu programu. Ćwiczyłem to niedawno na własnym przykładzie.
  • #12 3175644
    elvis_zyje
    Poziom 14  
    Posty: 169
    Pomógł: 1
    Ocena: 3
    Nadajnik może pracować na spzętowym UARcie bo modem radiowy jest do niego podpięty.
    Jednak w odbiorniku modem radiowy nie jest podpięty do końcówki sprzętowego UARTU wiec muszę t ustosować programowy UART. Dlatego zdecydowałem sie ze bede stosował i ti i tu ten sam UART (programowy). A moze warto poprzecinać ścieżki i jednak sprzętowy.

    Możesz mi przesłać listing jakiegoś swojego programu do komunikacji przez UART???? Byłbym wdzięczny i byłą by to dla mnie wielka pomoc.

    pozdrawiam, Łukasz.

    Dodano po 12 [minuty]:

    chwila... w odbiorniku mam podączony modem do końcówek TXD1, RXD1 (ATmega64L). Oznaca to że ten procek ma dwa sprzętowe UARTy?

    Dodano po 1 [minuty]:

    taaak :) to robimy na sprzętowym. tylko jak go wybrać teraz...

Podsumowanie tematu

✨ Problem dotyczył programowania mikrokontrolera ATmega64L za pomocą BASCOM AVR, gdzie programowanie przebiegało bez błędów, lecz mikrokontroler nie wykonywał programu poprawnie – dioda LED miała świecić i migać co sekundę, jednak świeciła ciągle. Sprawdzono kwarc 7,3728 MHz z kondensatorami 33 pF oraz konfigurację pinów SPI, które były niestandardowe, ale poprawnie ustawione w kompilatorze. Podejrzewano uszkodzenie procesora lub błędną konfigurację fuse bitów. Wskazano, że aktywny JTAG może blokować piny używane do sterowania diodą, dlatego zasugerowano wyłączenie JTAG, co jednak nie rozwiązało problemu. Kluczowym rozwiązaniem okazało się poprawne ustawienie fuse bitów, zwłaszcza konfiguracja oscylatora na zewnętrzny kwarc (External crystal/resonator high freq) zamiast wewnętrznego oscylatora RC. Dodatkowo zasugerowano podciągnięcie pinu RESET do Vcc i wyłączenie kompatybilności z MEGA103 (FusebitP/1). Dyskusja rozszerzyła się o konfigurację fuse bitów dla ATmega8535 oraz kwestie wyboru sprzętowego lub programowego UART do komunikacji z modemami radiowymi Radiometrix BiM2-433-64-5V. Poruszono też temat dokładności oscylatora i wpływu fuse bitów na stabilność pracy mikrokontrolera.
Wygenerowane przez model językowy.
REKLAMA