Nach längerem grübeln ist der Code entstanden ich würde mich freuen wenn sich jemand durchschaut und auf anhieb fehler erkennt bzw. ob es so richtig ist wie ich es mir vorgestellt habe.
bei der Warnung bin ich ratlos
../spi-tiny13.c:38: warning: suggest parentheses around assignment used as truth value
weiss aber nichts damit anzufangen.
Also das Programm soll ein SPI slave simulieren und ADC-werte schicken.
Am MISO(PB3) werden dann die Pegel Geschaltet,
Ich bin mir aber nicht Sicher ob der befehl das macht was ich will
Und das ist mein ganzer CodeCode:while(GIMSK & (1<<INT0)); //warte bis am Externen Interrupt etwas passiert
Ich bedanke mich schonmal für die Kritik :PCode:#include <avr/io.h> // Namen der IO Register #include <avr/Interrupt.h> // Interrupt register #include "adc-init.h" #include "SPI-init.h" volatile char MISO_Byte; volatile int MSB = 0x8000; ISR(INT0_vect) { if(MISO_Byte == 1)SPI_MISO_PORT |= (1<<SPI_MISO_PB3); //Pin Miso high else SPI_MISO_PORT &= ~(1<<SPI_MISO_PB3); } int main(void) { uint16_t adcval; ADC_Init(); /*Externen Interrupt-Init*/ MCUCR = (1<<ISC01)|(1<<ISC00); //Interrupt auslösen wenn Steigende flanke ist GIMSK = (1<<INT0); // Interrupt erlauben GIFR = (1<<INTF0); while( 1 ) { adcval = ADC_Read(0); // Kanal 0 // mach was mit adcval adcval = ADC_Read_Avg(2, 4); // Kanal 2, Mittelwert aus 4 Messungen // mach was mit adcval MISO_Byte = MSB | adcval; if(!(SPI_SS_PIN1 & (1<<SPI_SS_PB1)))// Wenn SS(PB1) auf low geht start der Übertragung { ==>c35 for(uint16_t a =15 ; a = 0 ; a--)//Warning: suggest parentheses around assignment used as truth value { if(MISO_Byte & MSB)SPI_MISO_PORT |= (1<<SPI_MISO_PB3); else SPI_MISO_PORT &= ~(1<<SPI_MISO_PB3); while(GIMSK & (1<<INT0)); //warte bis am Externen Interrupt etwas passiert MISO_Byte<<=1;// Bit nach Links schieben } } else; } return 0; }
MfG Kluski







Zitieren

Lesezeichen