Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

atmega + PGA2310 :( - Za pomoc 200pkt !

gothye 01 Sep 2007 12:11 2756 3
  • #1
    gothye
    Level 33  
    niemogę zmusic atmega16 do współpracy z Pga2310

    kod :
    Code:
    $regfile = "m16def.dat"
    
    $crystal = 8000000

    Config Lcd = 20 * 2
    Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , E = Portb.2 , Rs = Portb.0


    Config Spi = Soft , Dout = Portc.2 , Ss = Portc.3 , Clock = Portc.0       

    "pga podpięte do uC :
    'CS - portc.3
    'SDI - portc.2
    'Sclk - portc.0
    'mute - portc.1

    Dim Address As Byte , Command As Byte                       'definicja zmiennych dla instrukcji Getrc5
    'Config Int0 = Low Level                                     'konfigurowanie przerwania Int0,
    Config Rc5 = Pind.2                                         'konfiguracja linii, do której

    Enable Interrupts   



    Dim L As Byte
    Dim R As Byte

    Dim Vol_l As Integer
    Dim Vol_r As Integer
    cls

    Do
       Getrc5(address , Command)                                'pobranie adresu oraz komendy nadanej z pilota podczerwieni
       Command = Command And &B01111111                         'wyzerowanie najbardziej znaczącego bitu otrzymanej komendy
       En = En1
       If Address <> 255 Then       
     If Command = 16 Then                            'glosniej na komende 16
                      If L = 190 Then
                             L = 189
                      End If
                      If R = 190 Then
                          R = 189
                      End If
                     Gosub Spio
                                 Incr L
                                 Incr R
                End If

                If Command = 17 Then                            'ciszej na komende 17
                   If L = 0 Then
                      L = 1
                   End If
                   If R = 0 Then
                      R = 1
                   End If
                   Gosub Spio
                         Decr L
                         Decr R
                End If

            Locate 1 , 1
            Cls
            Vol_l = 255 - L
            Vol_l = Vol_l / 2
            Vol_l = 31.5 - Vol_l

            Vol_r = 255 - R
            Vol_r = Vol_r / 2
            Vol_r = 31.5 - Vol_r

             Lcd Vol_l ; " dB " ; "         VOLUME          " ; Vol_r ; " dB"
     end if

    Spio:
    Spiinit
    Spiout L , 1
    Spiout R , 1
    Return


    przy uzywaniu Spio : na LCD pokazuja sie dziwne znaczki i nijak niechce to współpracowac z sobą :(
  • Helpful post
    #2
    paluszasty
    Level 25  
    Zobacz na jakim porcie masz ustawione hardwarowo SPI, podejrzewał ze na którys wyprowadzeniach portu B i i to jest powodem błedniej pracy wyświetlacza.Sam napisałem (własciwie to pisze bo ciągle coś zmieniam) podobny program tylko na 51 równeirz w BAscomei dodał bym tu jeszcze zapis na EEPROM aktualnej wartości wzmocniania zeby po wyłaczeniu zasilania nie ustawiac tego od początku i regulacje kanałow prawo lewo.
    Pozdrawiam
  • #4
    gothye
    Level 33  
    ogromne podziękowania dla paluszasty za pomoc

    oczywiscie przesyłam punkciki :)

    wystarczyło wyłaczyc spi hard w uC