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

Rejestr przesuwny na ATmega

fifcio13-13 09 Lis 2014 18:45 1020 6
  • #1 09 Lis 2014 18:45
    fifcio13-13
    Poziom 19  

    Witam,
    Chciałbym wykonać rejestr przesuwny, używając 10 wyjść oraz jednego wejścia do przesuwania bitów switchem. Proszę o podpowiedź co do komendy jakiej użyć oraz proszę o jakiś przykładowy program (kilka linijek, żeby zrozumieć zasadę tworzenia rejestru). Język do programowania Atmegi - Basic.
    Pozdrawiam

    0 6
  • #2 11 Lis 2014 21:00
    bartosz.tarnowski
    Poziom 16  

    Mnożenie przezd dwa przesuwa o jeden bit w lewo
    przykłądowo mając liczbę 16bitową:

    0111011100000011
    po pomnożeniu przez 2 otrzymamy
    1110111000000110
    po kolejnym pomnożeniu przez 2 otrzymamy
    1101110000001100
    Dzielenie przesuwa w drugą stronę czyli w prawo

    Mozesz użyć zmiennej 16bitowej a po przesunięciu wyłuskać interesujące 10bitow i przepisać na PORT wyjściowy

    0
  • #3 12 Lis 2014 20:15
    fifcio13-13
    Poziom 19  

    Na pewno jest to dobry trop, jednak mi bardziej chodziło o to czy ATmega posiada gotową funkcję przypisaną jako rejestr przesuwny, ale widzę, że z tym będzie ciężko. Spróbuję metodą, którą podpowiedziałeś, choć wydaje mi się ona trochę okrężna.

    0
  • #4 12 Lis 2014 20:49
    tmf
    Moderator Mikrokontrolery Projektowanie

    Ma funkcje ROL i ROR, rotujace bity przez flagę przeniesienia. Ale to będzie zawsze na około, bo mikrokontroler nie służy do takich rzeczy - do tego potrzebujesz rejestru przesuwnego, są takowe gotowe.

    0
  • #5 12 Lis 2014 21:04
    fifcio13-13
    Poziom 19  

    Wiem, że są gotowe, ale chciałem zapytać bardziej doświadczonych, żeby wykorzystać możliwości samego procesora. Dziękuję za odpowiedzi.

    0
  • #6 12 Lis 2014 21:32
    BlueDraco
    Specjalista - Mikrokontrolery

    Możliwości procesora nie są szczególnie istotne. W każdym przyzwoitym języku programowania mamy operatory przesuwania w prawo i w lewo. Póki co operujemy w tym wątku na tak wysokim poziomie abstrakcji, że nie bardzo wiadomo, o co Autorowi chodzi. Domyślam się, że chodzi mu o mierne 4 linijki kodu w języku wysokiego poziomu, np. takie:

    Kod: c
    Zaloguj się, aby zobaczyć kod

    Ale tak na pewno, to ie wiadomo...

    0
  • #7 14 Lis 2014 15:24
    fifcio13-13
    Poziom 19  

    Dziękuję, ale jednak zdecydowałem się na rozwiązanie z dodatkowym rejestrem przesuwnym 74HC595. Pozwoli mi to zaoszczędzić ilość wyprowadzeń mikroprocesora.

    0