bonjour tout le monde,
je veux faire une horloge à temps réel avec un RTC max6902 avec protocole SPI, je suis sous microC
pour tester la communication entre le RTC et le pic je veux juste lire les secondes et les affichées sur un LCD.
c'est le code que j'ai faisCode:sbit Chip_Select at RB6_bit; sbit Chip_Select_Direction at TRISB6_bit; // SPI module connections sbit LCD_RS at RB4_bit; sbit LCD_EN at RB5_bit; sbit LCD_D4 at RB0_bit; sbit LCD_D5 at RB1_bit; sbit LCD_D6 at RB2_bit; sbit LCD_D7 at RB3_bit; sbit LCD_RS_Direction at TRISB4_bit; sbit LCD_EN_Direction at TRISB5_bit; sbit LCD_D4_Direction at TRISB0_bit; sbit LCD_D5_Direction at TRISB1_bit; sbit LCD_D6_Direction at TRISB2_bit; sbit LCD_D7_Direction at TRISB3_bit; // End LCD module connections char txt1[] = "Date"; char txt2[] = "Heure"; char txt3[] = "/"; char txt4[] = ":"; char sec[8]; int sect; int buffer; void main(){ TRISD =0; PORTD =0; TRISB =0; PORTB = 0xFF; TRISB = 0xff; ANSEL = 0; // Configure AN pins as digital I/O ANSELH = 0; Chip_Select = 0; Chip_Select_Direction = 0; SPI1_Init_Advanced(_SPI_MASTER_OSC_DIV4, _SPI_DATA_SAMPLE_END, _SPI_CLK_IDLE_HIGH, _SPI_LOW_2_HIGH); // Initialize SPI Lcd_Init(); // Initialize LCD Lcd_Cmd(_LCD_CLEAR); // Clear display Lcd_Cmd(_LCD_CURSOR_OFF); // Cursor off Lcd_Cmd(_LCD_CLEAR); // Clear display Lcd_Out(1,1,txt1); // Write text in first row Lcd_Out(1,5,txt4); Lcd_Out(1,9,txt3); Lcd_Out(1,12,txt3); Lcd_Out(2,1,txt2); Lcd_Out(2,6,txt4); Lcd_Out(2,14,txt4); Lcd_Out(2,11,txt4); // Lcd_Out(2,8,txt4); // Delay_ms(2000); while(1){ buffer=0X81; SPI1_Write(buffer); Delay_ms(2); sect= SPI1_Read(buffer); sect= buffer&0x7F; PORTD=sect; IntToStr(sect,sec); Lcd_Out(2,15,sec); Delay_ms(50); } }
mais ca marche pas je ne sais pas pourquoi...........???
en simulation sous isis j'ai remarqué que le signal d'horloge ne change pas donc pas d'impulsion.
merci d'avance de m'éclaircir si quelqu'un a des suggestions !!!
-----