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.

PGA2311 i SPI na Atmega16 w asemblerze.

korrus666 08 Gru 2007 00:48 900 0
  • #1 08 Gru 2007 00:48
    korrus666
    Poziom 40  

    Mam taki kod do wysyłania 2 bajtów do pga2311.

    Code:

    SpiSendVolume:
    cli
    ldi tmp,(1<<SPE)|(1<<MSTR)|(0<<CPHA)|(0<<CPOL)|(1<<SPR1)|(1<<SPR0)
    out SPCR,tmp

    cbi PORTB,4      ;set /CS   
    out SPDR,volA

    Wait_transmit_Right:
      sbis SPSR,SPIF
      rjmp Wait_transmit_Right

    out SPDR,volB

    Wait_transmit_Left:
      sbis SPSR,SPIF
      rjmp Wait_transmit_Left
      sbi PORTB,4      ;disable /CS
    sei
    ret

    Jak widać używam hardware SPI. Niestety coś jest nie tak. Kiedy zmieniam głośność zmienia mi się w jednym kanale a drugi sie wycisza i tak na zmianę. Głośność się zwiększa ale słychać tylko z jednego kanału.
    Procesor działa na wewnętrznym oscylatorze 8MHz. Podłączenie PGA do Atmegi16 standardowe. ( pin CS z PGA do pinu PB4 atmegi reszta jak trzeba). Może jakoś źle ustawiam SPI, ale próbowałem na różne sposoby i nic nie pomogło. Może ktoś wskaże błąd w programie bo już nie mam siły szukać.

    W sofcie jest jeszcze zrobiona obsługa przycisków i impulsatora. (przyciski matryca - przerwania z timera, impulsator przerwanie zewnętrzne)
    POMOCY

    Zmieniłem tytuł - Regulamin. [c_p]

    Już sobie dałem radę. Poza małą zmianą w kodzie musiałem zrobić jeszcze jedną rzecz. Otórz miałem cały czas podpięty interfejs do programowania atmegi przez ISP i on wprowadzał takie zakłócenia że regulacja nie działała poprawnie. Strasznie głupi błąd z mojej strony.

    0 0
  Szukaj w 5mln produktów