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

[BASCOM i AVR] Jak przyspieszyć Set i Reset w ASM dla BASCOM i AVR?

TomekMus 03 Sty 2011 01:06 1640 8
REKLAMA
  • #1 8950259
    TomekMus
    Poziom 17  
    Posty: 329
    Ocena: 7
    Witam,

    Używam Bascoma i potrzebuje go użyć jako zegara dla ukłądu zewnętrznego poprzez zastosowanie prostych komend:


    
    Config PINC.1 = Output
    Clk Alias PORTC.1
    
    DIM X As Word
    
    For X = 1 to ...
      Set CLK
      Reset CLK
    Next X


    Czy idzie maksymalnie przeyspieszyć set i reset poprzez wpisanie tego jako ASM?

    Chodzi mi tu o wyciśnięcie z kodu "siódme poty", nie patrząc na zegar uC
  • REKLAMA
  • Pomocny post
    #2 8950441
    mirekk36
    Poziom 42  
    Posty: 9195
    Pomógł: 964
    Ocena: 2289
    Pewnie, że można toż SET CLK czy Reset CLK można zamienić w Bascomie wprost na pojedyncze rozkazy asm. To jest jedyna i najlepsza droga przyśpieszania ale też zmniejszania objętości kodu Bascoma. Jednak:

    1. sama zamiana tylko tych 2 poleceń za dużo nie da, przydałoby się całą pętlę FOR jako wstawkę asm napisać co nie jest dużym wyzwaniem przecież

    2. jak tylko zaczniesz używać asm w bascomie to szybko zobaczysz, że można z niego dużo wycisnąć jeszcze ale też zobaczysz, że zbliża się koniec możliwości programowania w języku wyższego rzędu a zaczyna się niskopoziomowe pisanie w asm, co znacznie wydłuża sprawdzanie, testowanie i uruchamianie własnych projektów. Od takiego moemntu to każdy już wtedy zaczyna bliżej przyglądać się językowi C.
  • Pomocny post
    #3 8950988
    piotrva
    VIP Zasłużony dla elektroda
    Posty: 6409
    Pomógł: 625
    Ocena: 735
    skoro ma to być zegar, to po co używać pętli for?
    Zastąp ją lepiej pętlą nieskończoną typu do...loop lub jej asemblerowym odpowiednikiem
  • REKLAMA
  • #4 8954816
    TomekMus
    Poziom 17  
    Posty: 329
    Ocena: 7
    Mirekk36

    Czy stosowanie jezyka C daje coś fizycznie - i dlaczego skoro tak i tak rzechodzi to przez kompilator jak i Bascom
  • REKLAMA
  • #5 8955143
    mirekk36
    Poziom 42  
    Posty: 9195
    Pomógł: 964
    Ocena: 2289
    Zastosowanie języka C daje przede wszystkim programiście ogromną wygodę i elastyczność jeśli chodzi o programowanie. To jest gigantyczna różnica a nie kwestia tylko kompilatora.

    Weź pod uwagę chociaż tak prostą rzecz jak to co na pewno i tobie już przeszkodziło nie raz w Bascomie, czyli dokonanie kilku obliczeń w tej samej linii np:

    a = ((b*c)+(d/2))-1

    spróbuj sobie to rozpisać w Bascomie, to co w języku C zapiszesz bez zmrużenia oka w sposób naturalny tak jak powyżej. A przy już choćby takiej okazji daje to fizyczną oszczędność na wielkości wygenerowanego kodu.

    I nie oznacza to, że zaletą C w tym przypadku jest możliwość pisania strasznie długaśnych obliczeń w jednej linii.

    Zresztą takich przykładów, że pisanie programów w C daje coś fizycznie jak piszesz, jest cała masa i ciężko ich choćby 10% wymienić tak jednym tchem w kilku nawet zdaniach.
  • #6 8956914
    asembler
    Poziom 32  
    Posty: 2099
    Pomógł: 123
    Ocena: 11
    mirekk36 napisał:
    2. jak tylko zaczniesz używać asm w bascomie to szybko zobaczysz, że można z niego dużo wycisnąć jeszcze ale też zobaczysz, że zbliża się koniec możliwości programowania w języku wyższego rzędu a zaczyna się niskopoziomowe pisanie w asm, co znacznie wydłuża sprawdzanie, testowanie i uruchamianie własnych projektów. Od takiego moemntu to każdy już wtedy zaczyna bliżej przyglądać się językowi C.

    Przyglądam się i przyglądam i nie widze :)
    Do 16kB w asm czyli ponad 64kB w C nie widzie różnic szcególnie w zastosowaniach komercyjno nisko ekonomicznych/
  • REKLAMA
  • #7 8956940
    mirekk36
    Poziom 42  
    Posty: 9195
    Pomógł: 964
    Ocena: 2289
    asembler napisał:
    Przyglądam się i przyglądam i nie widze :)
    Do 16kB w asm czyli ponad 64kB w C nie widzie różnic szcególnie w zastosowaniach komercyjno nisko ekonomicznych/


    To, że ty ich nie widzisz, nie oznacza, że ich nie ma ;) (a przy okazji co miało znaczyć te 16kB czy 64kB ? bo nie za bardzo rozumiem?)
  • #8 8956987
    asembler
    Poziom 32  
    Posty: 2099
    Pomógł: 123
    Ocena: 11
    Nic nie miało znaczyć. poprostu zainspirował mnie temat postu z grupy retorycznych jak przyspieszyć? Odpowiedź jedyna zwiększyć "oscylator"
    innego sposoby nie widze. Mirek pewnie zobaczy?
    A reszta mojego poprzedniego postu to SPAM
  • #9 8957340
    mirekk36
    Poziom 42  
    Posty: 9195
    Pomógł: 964
    Ocena: 2289
    asembler napisał:
    Nic nie miało znaczyć. poprostu zainspirował mnie temat postu z grupy retorycznych jak przyspieszyć? Odpowiedź jedyna zwiększyć "oscylator"
    innego sposoby nie widze. Mirek pewnie zobaczy?


    Nie no szybszego niż wstawka asm w Bascomie i ew zwiększenie dopalacza w postaci większego kwarca - to nie zobaczę ;)

Podsumowanie tematu

LABEL_AI_GENERATED
Użytkownik poszukuje sposobów na przyspieszenie operacji SET i RESET w BASCOM dla mikrokontrolerów AVR, aby wykorzystać je jako zegar dla zewnętrznego układu. Odpowiedzi sugerują, że można zamienić te polecenia na odpowiednie instrukcje ASM, co przyspieszy działanie i zmniejszy objętość kodu. Zamiast pętli FOR, zaleca się użycie pętli nieskończonej. Dyskusja porusza również zalety programowania w języku C w porównaniu do BASCOM, wskazując na większą elastyczność i oszczędność kodu, mimo że niektórzy uczestnicy nie dostrzegają znaczących różnic w zastosowaniach komercyjnych.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA