Всем привет.
Есть демонстрационная плата dsPICDEM 1.1. На плате есть LCD дисплей с контроллером (PIC18F242) который подключен к dsPIC30F6014 через SPI.
Код программы.
файл main.c
#include "p30f6014.h"
#include "lcd.h" #include "global_define.h"
_FWDT(WDT_ON);
int main(void){ lcd_init(); while (1){ lcd_write_byte('T'); ClrWdt(); } return 0; }
файл lcd.c
void lcd_init(void){ spi2_init(); lcd_home_clear(); lcd_set_pos(0,0); }
void lcd_write_byte(unsigned char set_byte){ spi2_write_byte(0xA8); spi2_write_byte(set_byte); }
void lcd_home_clear(void){ spi2_write_byte(0x82); }
void lcd_set_pos(unsigned char set_x,unsigned char set_y){ spi2_write_byte(0xC5); spi2_write_byte(set_x); spi2_write_byte(set_y); }
void lcd_write_string(unsigned char *set_string){ while (*set_string){ lcd_write_byte(*set_string++); Nop(); } }
файл spi.c
void spi2_init(void){ LATGbits.LATG9 = 0x0001; //TRISGbits.TRISG9 = 0x0000; // Configure SPI2 to the master mode; SPI2CONbits.SMP = 0; SPI2CONbits.CKE = 0; SPI2CONbits.CKP = 0; SPI2CONbits.MODE16 = 0; SPI2CONbits.MSTEN = 1; // Configure the prescaler SPI2CONbits.PPRE = 0x02; SPI2CONbits.SPRE = 0x06; // SPI2STAT = 0x0000; // IPC6bits.SPI2IP = 0x05; //Clear the interrupt flag bit IFS1bits.SPI2IF = 0x00; IEC1bits.SPI2IE = 0x00; //Enable SPI2 SPI1STATbits.SPIEN = 0x01; }
void spi2_write_byte(unsigned char set_value){ SPI2BUF = set_value & 0xff; while (!SPI1STATbits.SPIRBF); //SPI2BUF; }
void spi2_write_word(unsigned int set_value){ SPI2BUF = set_value; while (!SPI1STATbits.SPIRBF); //SPI2BUF; }
Использую компилятор C30 Student Edition.
Проблема в том что не выводит символ на экран. Что я делаю не так ?
Спасибо за внимание.
|