Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Bascom AVR
#3
Disassembler
Pisząc oprogramowanie w językach wysokopoziomowych (Bascom, C, Pascal) warto rzucić okiem na kod generowany przez kompilator. Jeśli środowisko kompilatora nie generuje pliku z kodem assemblera lub autor projektu udostępnia tylko pliki hex-a możemy zrobić to sami zewnętrznym disassemblerem. Wadą tej metody jest brak powiązania z instrukcjami wysokopoziomowymi, brak komentarzy, brak nazw zmiennych, instrukcji, funkcji, procedur tablic itd. , jednym słowem sam na sam z "gołym kodem".
Proste disassemblery nie radzą sobie z danymi umieszczanymi w kodzie programu (stałe, tablice, łańcuchy), zamieniając je bez sensu na stosowny kod programu dlatego musimy robić to rozważnie. Jeśli znamy dobrze procesor, posiadamy schemat urządzenia oraz pewne doświadczenie w assemblerze rozpracowanie takiego kodu to tylko kwestia czasu. Jako przykład kilka prostych instrukcji Bascoma oraz odpowiedni kod assemblera.

Kod:
;If Pind.2 = 0 Then
          sbic   PIND, 2      ; 008C 9982
          rjmp   avr00AF      ; 008D C021
;Waitms 25
          ldi    r24, 0x19    ; 008E E189
          ldi    r25, 0x00    ; 008F E090
          rcall  avr0153      ; 0090 D0C2
;If Pind.2 = 0 Then
          sbic   PIND, 2      ; 0091 9982
          rjmp   avr00AF      ; 0092 C01C
;Portd.3 = 0  
          cbi    PORTD, 3     ; 0093 9893
;Wait 3  
          ldi    ZL, 0x03     ; 0094 E0E3
          ldi    ZH, 0x00     ; 0095 E0F0
          rcall  avr011B      ; 0096 D084

Wirtualny kanał szeregowy
Rafał, jeśli strumień danych do odbioru jest mały a stopień obciążenie procesora niewielki to może pracować to poprawnie nawet bez przerwań. W prostych aplikacjach możemy często sprawdzać czy jest nowy znak w buforze aby go odczytać. Pamiętajmy jednak, że dane docierają do procesora asynchronicznie w stosunku do jego algorytmu pracy. Jeśli trafimy na moment w którym procesor jest zajęty dłużej obsługą innego zadania to tylko przerwanie daje mam gwarancję pełnej obsługi odbioru. System przerwań w mikroprocesorach to jedno z najmocniejszych narzędzi budowania aplikacji dlatego warto go lepiej poznać.
73 Adam
Odpowiedz


Wiadomości w tym wątku
Bascom AVR - przez SP5FCS - 15-08-2010, 21:43

Skocz do:


Użytkownicy przeglądający ten wątek: 1 gości