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

[attiny2313][bascom]Sinosuida jak wygenerowac

sq3fyk 13 Lut 2010 18:06 2527 8
  • #1 7689000
    sq3fyk
    Poziom 11  
    Witam
    W jaki sposób można wykonać generowanie sinusoidy na 4 lub 8 bitach w bascomie ?.
    Szukałem lecz nigdzie nie ma konkretnych listingów przedstawiających zasadę generowania w bascomie.Chciałbym wykonać generator tonu 1200Hz o przebiegu sinosuidy.

    [attiny2313][bascom]Sinosuida jak wygenerowac
    w załaczniku schemat wyjścia sygnału z procesorka at89c2051 jako podgląd , mnie interesuje oczywiście attiny2313.
    Dziękuje za pomoc
  • #2 7689458
    am248236
    Poziom 12  
    Chyba najprościej wysyłać na port stablicowane wcześniej wartości. Tylko jeśli to ma być na prawdę 8 bitów to opory nie powinny być takie same tylko mieć się do siebie mniej więcej jak kolejne potęgi 2
  • #4 7689502
    sq3fyk
    Poziom 11  
    Wystarczyły by nawet 4 bity byle dzwięk był sinusoidą.Jak umieścić wartości w tablicy , jak wyliczyć to dla 1200Hz ?
    Dziękuje.
  • #5 7689532
    janbernat
    Poziom 38  
    Może tak nieśmiało przypomnę że taki generator można zrobić na tranzystorach lub wzmacniaczu operacyjnym.
    I raczej będzie miał lepsze parametry.
  • #6 7722514
    sq3fyk
    Poziom 11  
    Gdybym chciał to zrobić na tranzystorach nie rozpisywałbym się na forum w zakładce mikrokontrolery avr :).Wiec pozostaje przy temacie attiny2313
  • #7 7722515
    sp3ots
    Poziom 38  
    Witam !
    Jakiś czas temu chciałem wykonać projekt programu do generowania sinusoidy,
    otrzymałem taki kod od kolegi Michała SQ3LVJ.
    Program generuje częstotliwość słyszalną dla ucha, nie sprawdzałem czy to sinusoida.
    W kodzie nie ma żadnych komentarzy, szkoda !
    Może ktoś pomoże mi i zakładającemu post Krzysztofowi SQ3FYK w poznaniu zasady pisania kodu, prostego jednotonowego generatora ?
    Poniżej kod programu.

    
    'sinusoida
    'PRUBY od SQ3LVJ
    $regfile = "attiny2313.dat"
    $crystal = 8000000
    Dim Licznik As Byte
    Config Timer1 = Timer , Prescale = 8
    
    Enable Timer1
    Enable Interrupts
    On Timer1 Aaaa
    Start Timer1
    Timer1 = 0
    
    Config Portb = Output
    Config Portd = Output
    
    Anoda1 Alias Portd.1
    Anoda1 = 1
    
    Do
    Portb.4 = 1
    Portb.5 = 1
    Portb.6 = 1
    Portb.7 = 1
    
    Loop
    Aaaa:
    Incr Licznik
    If Licznik >= 63 Then Licznik = 0
    Portb = Lookup(licznik , Tablica)
    Timer1 = 65536 - 5000
    Return
    Tablica:
    Data 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15
    Data 15 , 14 , 13 , 12 , 11 , 10 , 9 , 8 , 7 , 6 , 5 , 4 , 3 , 2 , 1 , 0
    Data 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15
    Data 15 , 14 , 13 , 12 , 11 , 10 , 9 , 8 , 7 , 6 , 5 , 4 , 3 , 2 , 1 , 0
    
    

    Częstotliwość generowana jest na czterech ostatnich bitach portu B
    Za pomoc z góry dziękuję.
    Pozdrawiam. Stefan amator gg6293398
  • #8 7723918
    Konto nie istnieje
    Poziom 1  
  • #9 7725384
    sp3ots
    Poziom 38  
    Witam !
    Chciałem tą drogą podziękować za koledze atom1477 za udzieloną bezinteresowną pomoc i udzielone wskazówki dotyczące zmiany generowanej częstotliwości. Powyższy program generuje ton na czterech bitach portu B, - B0, B1, B2, B3
    Bardzo dziękuję. Stefan
REKLAMA