реклама на сайте
подробности

 
 
> ноги у sam7s64, насколько сильные ноги у sam7
kiko
сообщение Feb 20 2008, 07:27
Сообщение #1





Группа: Участник
Сообщений: 13
Регистрация: 14-09-06
Пользователь №: 20 365



Пытаюсь подключить дисплей о S65 к sam7s64. Переписал код с примера для атмеги128, но естественно не работает )
вот код для меги:
Код

PORTB &= ~_BV(PB7); //LED
  DDRB |= _BV(PB7);
  
PORTE &= ~_BV(LCD_RESET);
  DDRE |= _BV(LCD_RESET);

  PORTB |= _BV(LCD_MOSI);
  DDRB |= _BV(LCD_MOSI);
  
  PORTE &= ~_BV(LCD_CS);
  DDRE |= _BV(LCD_CS);
  
  PORTB &= ~_BV(LCD_SCK);
  DDRB |= _BV(LCD_SCK);

  PORTE |= _BV(LCD_RS);  // not used from LPH display
  DDRE |= _BV(LCD_RS);
  
  // setup SPI Interface
  SPCR = _BV(MSTR) | _BV(SPE) | _BV(SPR0);
  SPSR = 1;  // double speed bit

void lcd_write(uint8_t dat)
{
  SPDR= dat;
  while (!(SPSR & _BV(SPIF)));
}

void lcd_dat0(uint8_t dat)
{
  lcd_write(dat);
  lcd_write(0x00);  
}

void lcd_init(void)
{
  uint8_t i;
  PORTE &= ~_BV(LCD_RESET); // reset display
  PORTE |= _BV(LCD_CS);  // CS is high during reset release
  PORTE |= _BV(LCD_RS);  // RS is set to high
  PORTE |= _BV(LCD_RESET);  // release reset
  PORTE &= ~_BV(LCD_CS);  // select display
  PORTE &= ~_BV(LCD_RS);
  lcd_dat0(DISON);

  PORTE |= _BV(LCD_CS);  // deselect display
}

SPI на 2MHz вроде как работает.
а вот для арма:
Код
    pPIO->PIO_PER = lcdCS | lcdRS |lcdRES;
    pPIO->PIO_OER = lcdCS | lcdRS |lcdRES;
    pPMC->PMC_PCER = 1<<AT91C_ID_PIOA;
    pPIO->PIO_SODR = lcdRS;
    pPIO->PIO_PDR = mosi | miso | spck;
    pPIO->PIO_ASR = mosi | miso | spck;
    pPIO->PIO_BSR = 0;
    pPMC->PMC_PCER = 1<<AT91C_ID_SPI;

    pSPI->SPI_CR = AT91C_SPI_SPIEN | AT91C_SPI_SWRST;
    pSPI->SPI_MR = AT91C_SPI_MSTR;
    pSPI->SPI_CSR[PCS0]= (AT91C_SPI_BITS_8 * AT91C_SPI_BITS /0x0f) | (0x18  *AT91C_SPI_SCBR / 0xff );
    pSPI->SPI_CR = AT91C_SPI_SPIEN;

void lcdwr(u08 out)
{
    out &= 0xFF;
    while(!(AT91C_BASE_SPI->SPI_SR & AT91C_SPI_TXEMPTY));
    AT91C_BASE_SPI->SPI_TDR =out;
}
void lcd_dat(u08 dat){
lcdwr(dat);
lcdwr(0x0);
}

void init_lcd_2(void){

    pPIO->PIO_CODR = lcdRES;
    pPIO->PIO_SODR = lcdCS;
    pPIO->PIO_SODR = lcdRS;
    pPIO->PIO_SODR = lcdRES;
    pPIO->PIO_CODR = lcdCS;
    pPIO->PIO_CODR = lcdRS;
    lcd_dat(DISON);
    pPIO->PIO_SODR = lcdCS;
}

Ноги дергаются проверял, спи тоже работает (моси с мисо коротил смотрел что вернется), но дисплей игнорит. Задержки вставлял между командами, делал подтяжку всех ног на массу, потом на 3,3в безрезультатно. Плата олимекса sam7-p64. В чем может быть дело? Неужели силы не хватает?
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 21:48
Рейтинг@Mail.ru


Страница сгенерированна за 0.01387 секунд с 7
ELECTRONIX ©2004-2016