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

[ATmega][MCP4822][C] Brak napięcia wyjściowego.

Myrek1 12 Sie 2008 20:52 1527 0
REKLAMA
  • #1 5433295
    Myrek1
    Poziom 23  
    Witam.
    Mam podłączony ten DAC do Atmegi 128. SPI dobrze skonfigurowane, chodzi na nim ADC MCP3208.

    Komunikacja z przetwornikiem odbywa się w ten sposób, że wysyła się 2 bajty. Połowa bajtu MSB to ustawienia, 2 połowa oraz bajt LSB to 12-bitowa wartość do przetwornika.

    [ATmega][MCP4822][C] Brak napięcia wyjściowego.

    [ATmega][MCP4822][C] Brak napięcia wyjściowego.

    Pin /LDAC jest na chwilę ściągany do 0, żeby przepisać rejestry wejściowe do wyjściowych.
    Kod mam taki:

    	LDAC_WYSOKI();
    		SS_NISKI();
    		SPDR = 0x2F;
    		while(!(SPSR & (1<<SPIF)));
    		SPDR = 0xFF; 
    		while(!(SPSR & (1<<SPIF)));
    		SS_WYSOKI();
    		LATCH_NISKI();
    		czekaj_us(1);
    		LDAC_WYSOKI();


    definicja LDAC oraz init:

    
    #define LDAC_NISKI() (PORTG &= ~0x08); //stan niski na SS
    #define LDAC_WYSOKI() (PORTG |= 0x08); //stan wysoki na SS
    #define SS_NISKI() (PORTB &= ~0x01); //stan niski na SS
    #define SS_WYSOKI() (PORTB |= 0x01); //stan wysoki na SS
    void spi_init(void)
    {
    	DDRB |= 0b00000111; //ustawienie kierunku bitow portu
    	SPCR = _BV(SPE) | _BV(MSTR); //tryb nadrzedny, predkosc 4MHz, wlaczenie SPI, big endian, wlaczenie przerwania
    	SS_WYSOKI(); //stan wysoki na SS
    }
    


    Za nic nie mogę tego uruchomić, cały czas na wyjściach jest 0V. Męczę się z tym cały dzień, połączenia sprawdzane kilka razy i wszystko wydaje się ok. W czym może być problem?
    Sprawdzałem dwa przetworniki.

    Jak coś to tu jest data: http://ww1.microchip.com/downloads/en/DeviceDoc/21953a.pdf
  • REKLAMA
REKLAMA