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

Dzielnik częstotliwości ATmega32 język C

22 Lip 2011 10:18 2726 20
REKLAMA
  • #1 9745155
    Konto nie istnieje
    Poziom 1  
  • REKLAMA
  • #2 9745266
    tmf
    VIP Zasłużony dla elektroda
    Jeśli na kolejnych pinach ma być częstotliwość podzielona przez kolejne potęgi 2, to najprościej zrobić licznik i jego wartość bezpośrednio wywalać na port. Stan kolejnych bitów zmienia się dwukrotnie rzadziej, niż bitów młodszych.
    Swoją drogą, nie zauważyłem, żeby ktoś się tu za bardzo wymądrzał. Natomiast często widuję zupełnie poronione pomysły niektórych osób, w dodatku nie przyjmujących do wiadomości, że to co chcą zrobić to samobójstwo.
    Jeśli ktoś chce zrobić skok bungee na zwykłej linie, to jak cię poprosi to dasz mu taką linę, czy najpierw wytłumaczysz, że musi być specjalna, bo się zabije?
  • #3 9745773
    Konto nie istnieje
    Poziom 1  
  • #4 9745848
    Konto nie istnieje
    Poziom 1  
  • #5 9745873
    snnaap
    Poziom 25  
    W najprostszym przypadku zaproponowanym przez tmf zwiększają licznik z taką częstotliwością aby najmniejsza była proponowany przez Ciebie 1Hz na kolejnych pinach będziesz miał częstotliwości 2, 4, 8, 16, 32, 64, 128 Hz
  • REKLAMA
  • #6 9747488
    Konto nie istnieje
    Poziom 1  
  • #7 9747643
    Samuraj
    Poziom 35  
    Jeśli będziesz zwiększał zmienną co 1Hz a następnie ją wpisywał np. na port D to na PortD.0 będzie 1Hz a na PortD.1 będzie już 2Hz i kolejno jak pisał snnaap.
  • REKLAMA
  • Pomocny post
    #8 9747649
    zumek
    Poziom 39  
    doles napisał:
    ...W masce instrukcji if w sposobie drugim zastosowałem również zapis PC0, ale to też nic nie daje.

    Piszesz o PC0, a w kodzie maskujesz PC7.
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Jeślichciałbyś w masce użyć definicji numeru pinu, to powinieneś to uczynić w "komplecie" z przesunięciem.
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod



    Samuraj napisał:
    Jeśli będziesz zwiększał zmienną co 1Hz a następnie ją wpisywał np. na port D to na PortD.0 będzie 1Hz a na PortD.1 będzie już 2Hz i kolejno jak pisał snnaap.


    Na PortD.1 będzie raczej 0.5 Hz
  • #9 9748811
    Konto nie istnieje
    Poziom 1  
  • #10 9748842
    Konto nie istnieje
    Poziom 1  
  • #11 9748859
    Konto nie istnieje
    Poziom 1  
  • #12 9748877
    Konto nie istnieje
    Poziom 1  
  • #13 9748940
    Konto nie istnieje
    Poziom 1  
  • #15 9749007
    xamrex
    Poziom 28  
    A ja bym zrobił to tak:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Dzięki czemu na pinie D1, będziesz miał 2x szybszą częstotliwość niż na pine D0

    Chociaż rs07, zrobił to bardziej sprytnie :D
  • REKLAMA
  • #16 9749011
    Konto nie istnieje
    Poziom 1  
  • Pomocny post
    #17 9749020
    xamrex
    Poziom 28  
    Jeśli zwierasz przycisk do masy, to dodaj jeszcze na górze:

    PORTA=0xff;
    Aby wymusić na nim stan wysoki, gdy nie jest wciśnięty switch
  • Pomocny post
    #18 9749023
    tmf
    VIP Zasłużony dla elektroda
    No brawo, po 16 postach zrobiłeś w końcu to co napisałem ci w poście nr 2 :)
    Natomiast na przyszłość - zainteresuj się operacjami bitowymi, pozwoli ci to w sposób dowolny modyfikować stan poszczególnych pinów IO.
  • #19 9749040
    Konto nie istnieje
    Poziom 1  
  • #20 9749054
    xamrex
    Poziom 28  
    Pomysł zły.
    Mikrofon nie naładuje ci się do takiego napięcia aby uzyskać logiczne 1,
    Musiał byś użyć wzmacniacza.
  • #21 9749059
    Konto nie istnieje
    Poziom 1  
REKLAMA