Euuuh bah c'est bon ca fonctionne nickel
Voir la photo et le programme.
Effectivement j'ai envoyé 4 octets comme tu me l'as dit.
Bon maintenant j'ai plus qu'a mettre à zero les registres au départ parce que ca affiche n'importe quoi avant que j'ai appuyé sur le BP.
Une question : est ce que je peux faire pareil avec des entrées ?
Je m'explique : j'ai 16 BP à gérerdonc faudrait que j'aille lire des valeurs lol.
J'ai l'impression que ca va etre une usine à gaz mon système
Voilà et j'éspère que ce programme va aider des gents parce que j'ai vu sur le net que je suis pas le seul à avoir eu du mal à configurer le SPI.Code:/***************************************************** This program was produced by the CodeWizardAVR V2.04.6 Evaluation Automatic Program Generator © Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l. http://www.hpinfotech.com Project : Version : Date : 16/08/2010 Author : Freeware, for evaluation and non-commercial use only Company : Comments: Chip type : ATmega8535 Program type : Application AVR Core Clock frequency: 8,000000 MHz Memory model : Small External RAM size : 0 Data Stack size : 128 *****************************************************/ #include <mega8535.h> #include <delay.h> // SPI functions #include <spi.h> char a=0, b=0, c=0, d=0; void SPI_MasterTransmit(char cData) { PORTB.4 = 0; SPDR = cData; // écris dans le régistre SPDR la valeur de cData while(!(SPSR & (1<<SPIF))); // attend la fin de la transmission PORTB.4 = 1; }; void trans (void) { SPI_MasterTransmit(a); SPI_MasterTransmit(b); SPI_MasterTransmit(c); SPI_MasterTransmit(d); //delay_ms(500); PORTB.4 = 0; }; void main(void) { // Declare your local variables here // Input/Output Ports initialization // Port A initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=P PORTA=0x01; DDRA=0x00; // Port B initialization // Func7=Out Func6=In Func5=Out Func4=Out Func3=In Func2=In Func1=In Func0=In // State7=0 State6=T State5=0 State4=0 State3=T State2=T State1=T State0=T PORTB=0x00; DDRB=0xB0; // Port C initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTC=0x00; DDRC=0x00; // Port D initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTD=0x00; DDRD=0x00; // Analog Comparator initialization // Analog Comparator: Off // Analog Comparator Input Capture by Timer/Counter 1: Off ACSR=0x80; SFIOR=0x00; // SPI initialization // SPI Type: Master // SPI Clock Rate: 62,500 kHz // SPI Clock Phase: Cycle Start // SPI Clock Polarity: Low // SPI Data Order: MSB First SPCR=0x73; SPSR=0x00; while (1) { if ( PINA.0 == 0) { PORTB.0 = 1; delay_ms(500); a=0xF4; b=0xAF; c=0x81; d=0x55; trans (); PORTB.0 = 0; }; }; }
Sur la photo, les diodes allumées ne correspondent pas avec la photo...j'ai fait mumuse avec.
-----