Gast
#5320
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