www.mikrocontroller.net

Forum: Compiler & IDEs DAC Steuerung mittels SPI


Autor: Marco Lehmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Marco Lehmann (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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)

Autor: André Biedermann (andrebiedermann)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hat jemand ein Beispielcode zur Ansteuerung des TLC5620 in Codevision
für mich? Bin relativ neu dabei.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.