Einen schönen Sonntag euch zusammen,
Ich habe da mal ein problem,
habe mir ein kleines programm geschrieben das werte an spi-master
schickt, laut AVR Simulator funktioniert es, aber nur einmal.
Wie oder was schreibe in den code damit er die schleife wiederholt
besser gesagt zum anfang geht wenn sie abgeschlossen ist oder
abgebrochen wird.
zum Simulieren habe ich ein SPI-Dummy-wert deklariert wechsel = 0xAA
1 | #include <avr/io.h>
|
2 | #include "SPI_init.h"
|
3 | //#include "adc-init.h"
|
4 | //#include <avr/interrupt.h>
|
5 |
|
6 | /*Globale Deklarionen*/
|
7 | volatile uint8_t MSB = 0x80;
|
8 |
|
9 |
|
10 | int main(void)
|
11 | {
|
12 | /* Initialisierungen */
|
13 | // ADC_Init();
|
14 | SPI_INIT();
|
15 |
|
16 | /* Deklarationen*/
|
17 | uint8_t adcval;
|
18 |
|
19 | /*SPI-Dummy-wert*/
|
20 | uint8_t wechsel = 0xAA; //CC=11001100 // 55=01010101 // AA=10101010
|
21 |
|
22 | for(;;)
|
23 | {
|
24 | //adcval = ADC_Read(0); // Kanal 0
|
25 | if((SPI_Init_PIN & (1<<SS_PIN0))) //Wenn SS High geht
|
26 | {
|
27 | for(uint8_t a = 8 ; a>0 ;a--)
|
28 | {
|
29 |
|
30 | do{} //warte bis SCK High ist
|
31 | while((SPI_Init_PIN & (1 << SCK_PIN2))) ;
|
32 |
|
33 |
|
34 | if(MSB & wechsel)
|
35 | {SPI_Init_PORT |= (1<<MISO_PB1);//MISO geht high
|
36 | }//if Ende
|
37 | else
|
38 | {SPI_Init_PORT &= ~(1<<MISO_PB1);//MISO geht LOW
|
39 | }//else Ende
|
40 |
|
41 | MSB >>= 1; //schiebt nach rechts
|
42 | // do{} // warte bis SCK Low ist
|
43 | // while(!(SPI_Init_PIN & (1 << SCK_PIN2))) ;
|
44 |
|
45 | // Bei den beiden Anweisung weiss ich nicht, wie die schleife neugestartet werden soll
|
46 | if(MSB == 0x00)
|
47 | if(!(SPI_Init_PIN & (1<<SS_PIN0)));
|
48 |
|
49 | }//for-schleife Ende
|
50 |
|
51 |
|
52 | }//if-SS Ende
|
53 |
|
54 |
|
55 | }//for ende
|
56 | }//main Ende
|
danke fpr die hinweisse und tipps
MFG Lucky