Hallo Allerseits!
Ich versuche verzweifelt einen MAX5309
http://datasheets.maximintegrated.com/en/ds/MAX5308-MAX5309.pdf zum
Funktionieren zu bringen.
Dazu habe ich zur Inbetriebnahme folgenden Code geschrieben:
1 | /*
|
2 | * PB1: SCK
|
3 | * PB2: MOSI
|
4 | * PB3: MISO
|
5 | * PB4: CS
|
6 | * PB5: CLR
|
7 | * PB6: LDAC
|
8 | */
|
9 |
|
10 | PORTB |= (1<<PB1) | (1<<PB2) | (1<<PB4) | (1<<PB5) | (1<<PB6);
|
11 | DDRB |= (1<<PB1) | (1<<PB2) | (1<<PB4) | (1<<PB5) | (1<<PB6);
|
12 | SPCR |= (1<<SPE) | (1<<MSTR) | (1<<CPHA) | (1<<SPR1) | (1<<SPR0);
|
13 |
|
14 | uint8_t byte1 = 0b11001111;
|
15 | uint8_t byte2 = 0b11111100;
|
16 |
|
17 | _delay_us(1);
|
18 | PORTB &= ~(1<<PB4);
|
19 | _delay_us(1);
|
20 |
|
21 | SPDR = byte1;
|
22 | while(!(SPSR & (1<<SPIF)));
|
23 | SPDR = byte2;
|
24 | while(!(SPSR & (1<<SPIF)));
|
25 |
|
26 | _delay_us(1);
|
27 | PORTB |= (1<<PB4);
|
28 |
|
29 | _delay_us(1);
|
30 | PORTB &= ~(1<<PB6);
|
31 | _delay_us(1);
|
32 | PORTB |= (1<<PB6);
|
Dummerweise macht der DAC-Wandler darauf hin gar nichts. Die Spannungen
habe ich bereits mit einem Oszilloskop gemessen und die Timings mittels
Logic Analyzer aufgezeichnet. Den DAC-Wandler habe ich vorsorglich auch
schon einmal getauscht. Sieht jemand, was ich falsch mache??
Ein Screenshot der Logic-Analyzer-Aufzeichnung ist angehängt.
Viele Grüße
Stefan