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

miganie diodą asembler avr atmega 32

03 Kwi 2017 23:32 1038 5
  • Poziom 11  
    Witam mam problem z działaniem takiego programu
    Kod: avrasm
    Zaloguj się, aby zobaczyć kod

    Program napisałem w Atmel Studio i wgrywam za pomocą mkavrcalculator plik hex do procka atmega32 taktowanie 8mhz
    czy wiecie gdzie lezy problem

    Pozdrawiam
  • Poziom 34  
    squelch napisał:
    ldi R16,200
    ldi R17,1
    start:
    ldi R22,0x00
    out PORTC,R22
    call Czekaj_ms
    ldi R22,0x01
    out PORTC,R22
    call Czekaj_ms
    rjmp start


    Nie wiem którą implementację funkcji Czekaj_ms konkretnie używasz, ale jakąś tu oglądam i widzę że akurat ta nie zachowuje wartości rejestrów R16 i R17.
    Moja sugestia byś R16 i R17 ustawiał przed każdym wywołaniem Czekaj_ms i zobaczył czy pójdzie.

    Przykładowo:

    Kod: avrasm
    Zaloguj się, aby zobaczyć kod
  • Poziom 39  
    squelch napisał:
    czy wiecie gdzie lezy problem

    Nie wiemy. A Ty wiesz gdzie leży problem? W ogóle jest jakiś problem? Jeśli tak, to napisz jakie są jego objawy. Poza tym dołącz funkcję "Czekaj_ms" którą wywołujesz w kodzie. Chyba, że takiej funkcji nie masz to wtedy w tym jest właśnie problem.
  • Poziom 11  
    Funkcja czekajms znajduje sie w osobnym pliku I zachowuje rejestry na stosie, postaram sie znalezc czas I pokombinuje

    Dodano po 23 [minuty]:

    Witam posłuchałem rad jednak nadal coś nie chce działać połączenia mam na pewno dobre, całość w oparciu o zestaw uruchomieniowy.
    przedstawię jeszcze plik dołączany to jest procedura opózniająca
    Kod: avrasm
    Zaloguj się, aby zobaczyć kod


    Dodano po 2 [godziny] 47 [minuty]:

    napisałem program w c w atmel studio i wszysko działa jednak dla asemblera dalej nie chce pójść
    Proszę o pomoc

    Pozdrawiam
  • Pomocny post
    Użytkownik usunął konto  
  • Poziom 11  
    Problem rozwiązany plik czekaj-ms dołączyłem na końcu i zadziałało ponieważ kiedy program zaczynał start to od razu przeszedł do petli opóźniającej dla r16=0 i r17=0 czyli maks.czas

    Dziękuje za pomoc