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

[ATmega8] Jak napisać program w asm na ATmega8 zapalający 8 diod po kolei?

radek0593 13 Sty 2016 15:53 2781 13
  • #1 15329745
    radek0593
    Poziom 8  
    Witam. Od niedawna zacząłem uczyć się asemblera. Chciałem napisać program, który zapala 8 diod po kolei i na razie nic mi nie wychodzi. Może mi ktoś wytłumaczyć po kolei co muszę zrobić? Programuję ATmegę 8. Z góry dziękuje.
  • #3 15330126
    radek0593
    Poziom 8  
    Dzięki :):)
  • #4 15330592
    excray
    Poziom 41  
    Gdzie jest Twój kod? Napisałeś że coś próbowałeś zrobić ale Ci nie wychodzi więc załącz ten swój kod który nie działa. Po kolei musisz: skoczyć z adresu 0 pod adres początku programu, zainicjować stos, ustawić kierunek portu na wyjściowy, ustawić stan na portach, zapętlić.
  • #5 15330883
    ASMnauka_
    Poziom 15  
    namok napisał:
    Czemu asembler a nie C?
    Nie chcę być nie miły, ale skomentuję to tak: śmiechu warte.
    Nie wiem, i nie chce wiedzieć czy i w tym przypadku kolega nie potrafi czytać ze zrozumieniem, czy też nie chce (ATmega8][asm] - program zapalający diody).
    excray dobrze prawi, lecz zapomniał o czasie trwania świecenia każdej z diod na danym pinie portu.
    Radek, jeśli faktycznie chcesz zaczynać uczyć się programowania ASM to niezbędne jest poznanie rozkazów danego modelu mikro kontrolera,. W Twoim przypadku jest to ATMEGA8.
    Strona 284-286.
    radek0593 napisał:
    Od niedawna zacząłem uczyć się asemblera.
    W jakim kompilatorze ?
  • #6 15330907
    dondu
    Moderator na urlopie...
    ASMnauka_ napisał:
    Radek, jeśli faktycznie chcesz zaczynać uczyć się programowania ASM to niezbędne jest poznanie rozkazów danego modelu mikro kontrolera,. W Twoim przypadku jest to ATMEGA8. Strona 284-286.

    Jeśli już, to nie trzy stronicowa tabelka zbiorcza, tylko pełna dokumentacja: Atmel AVR 8-bit Instruction Set
  • #7 15330908
    excray
    Poziom 41  
    ASMnauka_ napisał:
    excray dobrze prawi, lecz zapomniał o czasie trwania świecenia każdej z diod na danym pinie portu.

    Wcale nie zapomniałem. Przeczytaj uważnie czy w pierwszym poście jest mowa o jakimś opóźnieniu. Nie ma? Więc jak widzisz zastosowałem się dokładnie do prośby :-P
  • #8 15331015
    ASMnauka_
    Poziom 15  
    dondu napisał:
    Jeśli już, to nie trzy stronicowa tabelka zbiorcza, tylko pełna dokumentacja: Atmel AVR 8-bit Instruction Set
    Przepraszam, nie wszystkie mikro konrolery posiadają takie rejestry jak RAMPZ, RAMPY itd.
    W temacie jest mowa o ATmega8, więc piszę jedynie o tym typie MK.
    excray napisał:
    Wcale nie zapomniałem.
    Czy Twoje oko spotrzeże zmianę świecenia diody na pinie na przykład w przypadku 1 Mh ?
    Autor tematu napisał po kolei, fakt, nie sprecyzował z jaką częstotliwością, jednak dla nas powinno to być oczywiste.
  • #9 15331089
    excray
    Poziom 41  
    ASMnauka_ napisał:
    Czy Twoje oko spotrzeże zmianę świecenia diody na pinie na przykład w przypadku 1 Mh ?
    Autor tematu napisał po kolei, fakt, nie sprecyzował z jaką częstotliwością, jednak dla nas powinno to być oczywiste.

    To jest Twoja nadinterpretacja. Nigdzie nie ma mowy o zmianie świecenia poza jednorazowym zapaleniem po kolei.
  • #10 15331090
    dondu
    Moderator na urlopie...
    ASMnauka_ napisał:
    dondu napisał:
    Jeśli już, to nie trzy stronicowa tabelka zbiorcza, tylko pełna dokumentacja: Atmel AVR 8-bit Instruction Set
    Przepraszam, nie wszystkie mikro konrolery posiadają takie rejestry jak RAMPZ, RAMPY itd.
    W temacie jest mowa o ATmega8, więc piszę jedynie o tym typie MK.

    Sugerujesz uczyć się assemblera bez szczegółowej dokumentacji, dając jedynie 3 strony tabelki zbiorczej rozkazów - zastanów się nad tym co robisz.


    @radek0593
    Assembler to wymóg lub cel, czy może jednak być inny język?
  • #11 15331182
    ASMnauka_
    Poziom 15  
    excray napisał:
    To jest Twoja nadinterpretacja. Nigdzie nie ma mowy o zmianie świecenia poza jednorazowym zapaleniem po kolei.
    Dobrze dajmy już spokój.
    dondu napisał:
    Sugerujesz uczyć się assemblera bez szczegółowej dokumentacji, dając jedynie 3 strony tabelki zbiorczej rozkazów - zastanów się nad tym co robisz.

    Uczenie się programowania ASM nie polega na wciskaniu w umysł wszystkich komend, jakie są dostępne, lecz stopniowego przyswajania tychże komend.
    Jeśli zaczyna się od np. M8 nie ma sensu uczyć się RAMPZ itd. I tak ich nie wykorzystamy w tym mikro kontrolerze. Na ten temat już nie będę nic pisał.
    dondu napisał:
    Assembler to wymóg lub cel, czy może jednak być inny język?
    Jestem szczęśliwy, że nie napisałeś: czy to religia ?
    Jak to rzekł TMF
  • #12 15331256
    namok
    Poziom 25  
    ASMnauka_ napisał:
    namok napisał:
    Czemu asembler a nie C?
    Nie chcę być nie miły, ale skomentuję to tak: śmiechu warte.
    Nie wiem, i nie chce wiedzieć czy i w tym przypadku kolega nie potrafi czytać ze zrozumieniem, czy też nie chce (ATmega8][asm] - program zapalający diody).

    Gdy po 20 latach wróciłem do mikroprocesorów to chciałem je programować w asemblerze. Na C miałem awersję. Na szczęście szybko zauważyłem że większość programuje w C i nie jest to takie straszne.

    Nie wiem czy zauważyłeś ale jest to pierwszy post kolegi odnośnie mikrokontrolerów. Dlatego zapytałem dlaczego asembler i na razie brak odpowiedzi.
  • #13 15332353
    dondu
    Moderator na urlopie...
    @ASMnauka_

    Zastanów się jeszcze raz nad tym co piszesz. :)

    Zobaczmy więc co w przypadku rozkazu LDI proponujesz początkującemu w assemblerze autorowi tematu:

    [ATmega8] Jak napisać program w asm na ATmega8 zapalający 8 diod po kolei?

    a co proponuje wskazana przeze mnie dedykowana temu celowi dokumentacja:

    [ATmega8] Jak napisać program w asm na ATmega8 zapalający 8 diod po kolei? [ATmega8] Jak napisać program w asm na ATmega8 zapalający 8 diod po kolei? [ATmega8] Jak napisać program w asm na ATmega8 zapalający 8 diod po kolei?

    a zobaczmy jeszcze rozkaz LD:

    [ATmega8] Jak napisać program w asm na ATmega8 zapalający 8 diod po kolei? [ATmega8] Jak napisać program w asm na ATmega8 zapalający 8 diod po kolei?

    Pomijam już wiele informacji znajdujących się na stronach 2-9, których nie zamieszczam, a które nie znajdują się w dokumentacji mikrokontrolera, którą wskazujesz.

    Reasumując.
    Jeżeli już komuś podpowiadasz to podpowiadaj proszę z sensem wskazując właściwą dokumentację producenta. Powinieneś oczywiście dodać, że nie wszystkie rozkazy dany mikrokontroler ma zaimplementowane i że tę wiedzę znajdzie zbiorczo w dokumentacji mikrokontrolera. Taki komplet informacji ma sens edukacyjny, a nie wskazanie tylko zbiorczej tabelki.
  • #14 15358881
    kamyczek
    Poziom 38  
    Są programiści i programiści 0f ef 07 bb 03 95 08 bb fd cf ff wgrywamy to w dowolnego AVR i na porcie B migają sobie diody każda dwa razy wolniej od poprzedniej jak ktoś wątpi niech sprawdzi ... dla niektórych programatorów trzeba zrobić zamianę parami (ef 0f bb 07 95 03 bb 08 cf fd ) Moża też migać na wiele innych sposobów

    Kod: text
    Zaloguj się, aby zobaczyć kod



    tyle że to się dzieje bardzo szybko , ale jak ktoś sobie taktuje mikrokontroler przebiegiem kilku Hz zobaczy miganie można też wpiąć częstościomierz i zmierzyć . Albo napisać niewiele więcej i odpalić miganie na dowolnym liczniku . Zastanawiam się jednak co zrobicie z c i waszą wiedzą żeby wytłumaczyć co się ukrywa pod kawałkiem kodu .hex na początku postu więc przy inżynierii odwrotnej koledzy wasze C jest bezwartościowe .
REKLAMA