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

Avr wstawka assemblerowa. Sposób wskazywania właściwej komórki w tablicy.

16 Maj 2011 12:18 1728 5
  • #1 9511565
    Konto nie istnieje
    Konto nie istnieje  
  • #2 9511779
    tadzik85
    Poziom 38  
    Ty z obsługi przerwania wyrzuciłeś POP i PUSH?

    Wiesz w ogóle co robisz?
  • Pomocny post
    #3 9511823
    tmf
    VIP Zasłużony dla elektroda
    Kilka błędów:
    - nie możesz zakładać, że zmienne znajdują się pod stałymi adresami w pamięci, to się będzie zmieniać pomiędzy kompilacjami, w związku z tym istnieje konieczność użycia symboli
    - register to tylko sugestia dla kompilatora i tych rejestrów wcale nie musi rezerwować. Ale jest też poważniejszy błąd - rejestry te są wykorzystywane przez AVR-libc i należałoby ją całą przekompilować z tak zarezerwowanymi rejestrami, dosyćupiorne zadanie. Kolejna sprawa - r26 i r30 wchodzą w skład rejestrów indeksowych X i Z, które są raczej niezbędne kompilatorowi ze względu na strukturę asemblera AVR.
    Także nie tędy droga. Poczytaj jak się pisze wstawki w asemblerze gcc.
  • #4 9512086
    Konto nie istnieje
    Konto nie istnieje  
  • Pomocny post
    #5 9512314
    tmf
    VIP Zasłużony dla elektroda
    Ciągle możesz to zrobić, tylko użyj innych rejestrów, które są wolne. Tu masz o wstawkach: http://www.nongnu.org/avr-libc/user-manual/inline_asm.html
    Inna sprawa, że może źle wybrałeś procesor, lepiej pewnie by poszło z XMega, raz, że działa do 32MHz, a dwa, że ma DMA, które może wyrzucać dane na DAC, bez konieczności robienia tego programowo.
    Co do rejestrów indeksowych - niestety 3, które posiada AVR to nie za wiele, tym bardziej, że jeden jest tracony na wskaźnik stosu - ot twórcy architektury AVR zapomnieli, że oprócz wskaźnika stosu SP, potrzebny jest także rejestr indeksujący dane w obrębie stosu (tak jak BP z architektury x86), w rezultacie kompilator musi poświęcić na to jeden z rejestrów indeksowych (Y). No i zostają tylko dwa...
  • #6 9515414
    Konto nie istnieje
    Konto nie istnieje  
REKLAMA