Sari la conținut
ELFORUM - Forumul electronistilor

Probleme SPI,PIC18f4550-driver Allegro A3972


Vizitator marius1805

Postări Recomandate

Vizitator marius1805

Sall,sunt nou pe forum,defapt este si prima data cand apelez la un forum...Am de facut pentru faculta comanda uni motor pas cu pas bipolar.Am realizat placa electronica si am lipit componentele.Folosesc uC Pic18f4550 si driver pentru motor,A3972 de la Allegro.Driverul este controlabil prin interfata seriala pe 19 bit...Problema este ca nu reusesc nici cum sa il pot comanda.Am un mic picoscope prin care vad ca imi trimite date dar driverul nu reactiioneaza nici cum...Am tot incercat cateva zile dar nu o nimeresc :jytuiyu...Atasez codul pe care l-am scris in mikroc.Am incercat si cu setariile din mikroc pentru SPI si prin setarea registrilor..// LCD module connectionssbit LCD_RS at LATD2_bit;sbit LCD_EN at LATD3_bit;sbit LCD_D4 at LATD4_bit;sbit LCD_D5 at LATD5_bit;sbit LCD_D6 at LATD6_bit;sbit LCD_D7 at LATD7_bit;sbit LCD_RS_Direction at TRISD2_bit;sbit LCD_EN_Direction at TRISD3_bit;sbit LCD_D4_Direction at TRISD4_bit;sbit LCD_D5_Direction at TRISD5_bit;sbit LCD_D6_Direction at TRISD6_bit;sbit LCD_D7_Direction at TRISD7_bit;// End LCD module connectionssbit Chip_Select at LATA3_bit;sbit SPI_SDO at LATC7_bit;sbit SPI_CLK at LATB1_bit;sbit Chip_Select_Direction at TRISA3_bit;sbit SDO_Direction at TRISC7_bit;sbit CLK_Direction at TRISB1_bit; char txt3[] = "Lcd4bit";char txt4[] = "example";char i,oldstate; // Loop variablevoid InitSPI() { TRISC.F7=0; //MOSI TRISB.F1=0; //CLK TRISA.F3=0; //EN1 // PORTA.F3=1; //EN1=1 Chip_Select = 0; // Deselect DAC Chip_Select_Direction = 0; // Set CS# pin as Output SPI1_Init_Advanced(_SPI_MASTER_OSC_DIV64, _SPI_DATA_SAMPLE_MIDDLE, _SPI_CLK_IDLE_LOW, _SPI_LOW_2_HIGH); // Initialize SPI module}void Move_Delay() { // Function used for text moving Delay_ms(200); // You can change the moving speed here}char buffer1,buffer2,buffer3 ;void main(){ OSCCON=0b11101110; RCSTA.SPEN=0; RCSTA.CREN=0; InitSPI(); //functie SPI PIR1.SSPIE=1; //activare intreruperi MSSP SSPCON1.SSPEN=1; // activare pini ptr SPI SSPCON1.CKP=0; //idle clock low SSPCON1.CKE=1; //idle clock low ADCON0=0x00; ADCON1=0b00001111; //setez pinii ca digital ADCON2=0x00; ADRESH=0; ADRESL=0; CMCON |= 7; // Disable comparators TRISD=0; //Pini LCD digital TRISA.F1=0; //LCD lumina-directie pin out PORTA.F1=0; //LCD aprins TRISC.F0=1; //switch 1 input PORTC.F0=0; //sw 1 0 state // SPI_Set_Active(&SPI1_Read, &SPI1_Write); // Sets the SPI2 module active Lcd_Init(); // Initialize LCD Lcd_Cmd(_LCD_CLEAR); // Clear display Lcd_Cmd(_LCD_CURSOR_OFF); // Cursor off Lcd_Out(1,6,txt3); // Write text in first row Lcd_Out(2,6,txt4); // Write text in second row Delay_ms(2000); Chip_Select = 0; buffer1=0b10110010; //D7-D0 SPI1_Write(buffer1); buffer2=0b11010101; //D15-D8 SPI1_Write(buffer2); buffer3=0b00000101; //D19-d16 SPI1_Write(buffer3); //porta.f4=1; Chip_Select = 1; delay_ms(2000); PORTA.F1=1; //LCD aprinsdo { Chip_Select = 0; delay_ms(10); //while(!SSPSTAT.BF); //asteapta golirea bufeerului SPI //SSPCON1.WCOL=0; SPI1_Write(0b10011100); SPI1_Write(0b01011011); SPI1_Write(0b00000001); delay_ms(10); Chip_Select = 1; delay_ms(100); } while(1); // Endless loop}MULTUMESC ANTICIPAT!!! :da

Link spre comentariu
  • Răspunsuri 0
  • Creat
  • Ultimul Răspuns

Zile populare

Creează un cont sau autentifică-te pentru a adăuga comentariu

Trebuie să fi un membru pentru a putea lăsa un comentariu.

Creează un cont

Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!

Înregistrează un nou cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum



×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări