DAC Steuerung mittels SPI

Gast #5320
Lesenswert?
• ▲
▼
Hallo,

ich habe meinen 8535 mit einem TLC5620 (4x8bit DAC, serieller transfer) 
verbunden und habe folgendes Problem: mit codevision compiler kompiliert 
funktioniert der Transfer, die selbe Routine mit avr-gcc funktioniert 
nicht. codevision hat eine eingebaute spi funktion (hardware), diese 
habe ich dann in avr-gcc nachgebildet. Leider funktionierts aber nicht, 
ich hoffe, irgendjemand findet vielleicht den Fehler.


#define SPI_MASTER_SETUP() 
outp(BV(SPIE)|BV(SPE)|BV(MSTR)|BV(SPR0)),SPCR);

void SPI_send(uint8_t data)  {
      outp(data,SPDR);
      loop_until_bit_is_set(SPSR,7);
      inp(SPDR);
}

void send_dac(uint8_t dac, uint8_t val)
{
      sbi(PORTB,PB4); //load_dac=1;
      if (dac>3) dac=3;
      SPI_send(dac*2); // send first dac selector
      delay_us(4);
      SPI_send(val); // give the dac the needed value;
      cbi(PORTB,PB4); //load_dac=0;
      delay_us(8);
      sbi(PORTB,PB4); //load_dac=1;
}

load_dac ist der PB4, der die Aktualisierung beim DAC erzeugt (LOAD), 
der DAC läuft im Load controlled mode (LDAC=low), LOAD muss nach senden 
der Daten kurz (mind. 250 ns) auf low gehen.

sei() folgt dann im Hauptprogramm


Marco Lehmann
Gast #5321
Lesenswert?
• ▲
▼
Ich hab mal das datasheet des TLC5620 angehängt, falls jemand mal 
reinsehen möchte. Ich werde heute nochmal den codevision avr 
installieren und mir mal den assembler output der funktionierenden 
Version ansehen. Vielleicht habe ich was übersehen.

ach ja, delay_us macht nichts anderes, als nops auszuführen (je 2 pro us 
bei 7,... MHz Takt)
Angehängte Dateien:

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.