Hallo an alle,
leider werde ich aus den anderen Forumsbeiträgen auch nciht schlauer :-(
Daher ggf. ein Tipp von euch. Ich bin derzeit wieder am programmieren
und kriege gerade die Krise...
Ich habe bis heute morgen ein lauffähiges Programm(AVR-GCC) gehabt. Dann
nur eben ein Wert geändert und schwups geht nix mehr auf meinem SPI
Port. Ich habe ein Oscar drangehangen und festgestellt, dass der
uC(ATmega) immer nach der SPI-Initialisierung abschmiert.. Habe alles
bis auf die Initialisierung entfernt.
1 | void SPI_MasterInit(void)
|
2 | {
|
3 | DDRB = 0x07;
|
4 | SPCR = (1 << MSTR) | (1 << SPE) |(0 << DORD) | (1 << CPOL) | (1 << CPHA) | (1 << SPR1) | (1 << SPR0);
|
5 | SPDR = 0xFF;
|
6 | PORTC = 0xff;
|
7 | }
|
8 |
|
9 | void main(void)
|
10 | {
|
11 | DDRC = 0xff;
|
12 | PORTC = 0xff;
|
13 | SPI_MasterInit(); //Initialisieren und PORTC Ausgänge auf High setzen
|
14 | //sei(); // Sei() freischalten
|
15 | while(1)
|
16 | {
|
17 | // bis hierhin kommt er erst gar nicht!
|
18 | }
|
19 |
|
20 | }
|
Habe die anderen machenschaften meines Codes erstmal gelöscht bzw.
auskommentiert. Auch mit oder ohne sei(); ändert sich kein Verhalten.
Reset Pegel immer auf HIGH!! Warum macht er dann einen Reset ?
Achso, sehe im Oscar, dass er immer das SPDR zum "starten" rausschickt,
also Reset!!
gruß