folgendes problem, steuere den ad 9833 mit einem at mega 8535 an. über spi. im anhang ist ein skop bild, von der signalform. am ausgang des ad kommt kein signal. kann mir jmd sagen wiso? kommen die signale falsch?? prog:
1 | #include <avr/io.h> |
2 | #include <stdlib.h> |
3 | |
4 | |
5 | #include <util/delay_basic.h> |
6 | |
7 | unsigned char x; |
8 | unsigned char y; |
9 | |
10 | void warte(unsigned char zahl) //warteschleife. warte ist XXXµsek. * zahl |
11 | {
|
12 | do
|
13 | {
|
14 | _delay_loop_1(0x0002); |
15 | } while (zahl--); // solange zahl > 0 |
16 | }
|
17 | |
18 | |
19 | int main(void) |
20 | {
|
21 | DDRA = 0x00; |
22 | DDRB = 0xff; |
23 | DDRD = 0xff; |
24 | PORTD |= (1<<PD7) ; // FSYNC HIGH |
25 | while(1) |
26 | {
|
27 | while (PINA & (1<<PA1)) |
28 | {
|
29 | }
|
30 | while (!(PINA &(1<<PA1))) |
31 | {
|
32 | }
|
33 | warte(250); |
34 | SPCR = 0xD7; // Spi Kontrollregister setzen |
35 | |
36 | warte(1); |
37 | PORTD &=~(1<<PD7); // FSYNC LOW |
38 | SPDR = 0x20; // Ausgabe an das Spi interface |
39 | while (!(SPSR &(1<<SPIF))) |
40 | {
|
41 | y++; |
42 | }
|
43 | warte(1); |
44 | PORTD |= (1<<PD7) ; // FSYNC HIGH |
45 | warte(1); |
46 | PORTD &=~(1<<PD7); // FSYNC LOW |
47 | SPDR = 0x00; // Ausgabe an das Spi interface config |
48 | while (!(SPSR &(1<<SPIF))) |
49 | {
|
50 | y++; |
51 | } // |
52 | warte(1); |
53 | PORTD |= (1<<PD7) ; // FSYNC HIGH |
54 | warte(1); |
55 | PORTD &=~(1<<PD7); // FSYNC LOW |
56 | SPDR = 0x7F; // Ausgabe an das Spi interface |
57 | while (!(SPSR &(1<<SPIF))) |
58 | {
|
59 | y++; |
60 | }
|
61 | warte(1); |
62 | PORTD |= (1<<PD7) ; // FSYNC HIGH |
63 | warte(1); |
64 | PORTD &=~(1<<PD7); // FSYNC LOW |
65 | SPDR = 0xFF; // Ausgabe an das Spi interface FREQU-0 |
66 | while (!(SPSR &(1<<SPIF))) |
67 | {
|
68 | y++; |
69 | }
|
70 | warte(1); |
71 | PORTD |= (1<<PD7) ; // FSYNC HIGH |
72 | warte(1); // |
73 | PORTD &=~(1<<PD7); // FSYNC LOW |
74 | SPDR = 0x7F; // Ausgabe an das Spi interface FREQU-0 |
75 | while (!(SPSR &(1<<SPIF))) |
76 | {
|
77 | y++; |
78 | }
|
79 | warte(1); |
80 | PORTD |= (1<<PD7) ; // FSYNC HIGH |
81 | warte(1); |
82 | PORTD &=~(1<<PD7); // FSYNC LOW |
83 | SPDR = 0x87; // Ausgabe an das Spi interface FREQU-1 |
84 | while (!(SPSR &(1<<SPIF))) |
85 | {
|
86 | y++; |
87 | }
|
88 | warte(1); |
89 | PORTD |= (1<<PD7) ; // FSYNC HIGH |