roboforum.ru

Технический форум по робототехнике.
Текущее время: 20 апр 2025, 04:07

Часовой пояс: UTC + 4 часа


Правила форума


В данном разделе каждый может иметь не более одной темы. Тема должна начинаться с логина (ника) робофорума.



Начать новую тему Ответить на тему  [ Сообщений: 40 ]  На страницу Пред.  1, 2, 3
Автор Сообщение
 Заголовок сообщения: Re: -= Александр =- [Всякие интересные вещи]
СообщениеДобавлено: 06 мар 2010, 19:30 
Не в сети
Мастер Самоделкин
Аватара пользователя

Зарегистрирован: 11 окт 2004, 19:20
Сообщения: 3678
Откуда: Россия, СПб
прог. языки: C/C++, Python, asm
ФИО: Курмис Александр Андреевич
Я их смотрел, но так и не понял - это просто конвертер или там внутри еще и прошивка есть? Если да - то как его программировать?

_________________
Ниндзя - круче всех. Они умеют ходить по воде, делить на ноль и угадывать шаффл в АйПоде.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: -= Александр =- [Всякие интересные вещи]
СообщениеДобавлено: 06 мар 2010, 20:04 
Не в сети
Аватара пользователя

Зарегистрирован: 07 окт 2009, 00:29
Сообщения: 6028
Откуда: СПб
эмм... что за...
программировать vlsi не нужно.
а прошивка там есть почти наверняка.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: -= Александр =- [Всякие интересные вещи]
СообщениеДобавлено: 07 мар 2010, 14:22 
Не в сети
Мастер Самоделкин
Аватара пользователя

Зарегистрирован: 11 окт 2004, 19:20
Сообщения: 3678
Откуда: Россия, СПб
прог. языки: C/C++, Python, asm
ФИО: Курмис Александр Андреевич
А как и зачем там всякие UARTы, GPIO и прочие прибамбасы? Или ими можно с внешней шины рулить?

_________________
Ниндзя - круче всех. Они умеют ходить по воде, делить на ноль и угадывать шаффл в АйПоде.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: -= Александр =- [Всякие интересные вещи]
СообщениеДобавлено: 07 мар 2010, 14:23 
Не в сети
Аватара пользователя

Зарегистрирован: 07 окт 2009, 00:29
Сообщения: 6028
Откуда: СПб
ага, можно


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: -= Александр =- [Всякие интересные вещи]
СообщениеДобавлено: 07 мар 2010, 14:29 
Не в сети
Мастер Самоделкин
Аватара пользователя

Зарегистрирован: 11 окт 2004, 19:20
Сообщения: 3678
Откуда: Россия, СПб
прог. языки: C/C++, Python, asm
ФИО: Курмис Александр Андреевич
Ну, это все резко упрощает... Можешь показать какой-нить примерчик как с ним вообще работать?

_________________
Ниндзя - круче всех. Они умеют ходить по воде, делить на ноль и угадывать шаффл в АйПоде.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Как я осваивал ARM
СообщениеДобавлено: 25 окт 2010, 12:48 
Не в сети
Мастер Самоделкин
Аватара пользователя

Зарегистрирован: 11 окт 2004, 19:20
Сообщения: 3678
Откуда: Россия, СПб
прог. языки: C/C++, Python, asm
ФИО: Курмис Александр Андреевич
Постановка задачи

Решил писать сюда - самому полезно будет, да и другим пригодится.
Давно уже я смотрел в сторону контроллеров ARM и вот наконец-то появилась задачка как раз под них. Не буду вдаваться в подробности - делаем мы такой вот ящик:

Вложение:
automat.jpg
automat.jpg [ 34.67 КиБ | Просмотров: 2489 ]


(это немного другой ящик, но суть та-же)
В нем будет несколько модулей ацп и связь с компом через езернет. Собственно мне поручили обслуживать эти ацп (с цифровой стороны) и делать связь. В первом случае нужен вагон быстрой памяти (16 мб), а во втором - собственно езернет с хорошей скоростью (минимум 5 мбит/с). Ни то ни другое AVRкой не провернуть.
В первом случае все очень специфично - решено было делать свою плату на LPC2478 и динамической памяти. А для связи была куплена готовая плата SK-MLPC2368 и посажена на болванку для втыкания в крейт.
Изображение
Внутри крейта кстати говоря шина SPI. Ну в общем процесс пошел...

Часть первая - Wiggler

С самого начала не обошлось без пляски с бубном. Схем виглера в сети куча, но вот что с ним делать - понятно не сразу. Сделал я его, поставил Keil uVision 4 и долго бродил по настройкам - ничего там естественно не нашел. Пошел гуглить и нагуглил прогу H-JTAG - и о чудо - она поддерживает виглера! Снова иду в настройки кейла - снова не могу понять как подружить его с этой тулзой. Тыркаюсь по менюшкам - и иду гуглить дальше. Оказалось что из настроек H-JTAG можно пропатчить Keil чтоб они подружились. И наконец-то удалось все это запустить вместе. Скомпилил примерчик с диска SK-MLPC2368 - запустил его в дебак - все работает. А вот как шить во флэш - это уже другая история. В комплекте к житагу идет еще и H-Flasher. Сейчас я прошиваю через него. А вот как прошить через него прямо из Кейла - я так и не разобрался. Видимо никак... Кстати H-JTAG можно настроить на нужные пины LPT-порта и использовать STK200 заместо виглера...

_________________
Ниндзя - круче всех. Они умеют ходить по воде, делить на ноль и угадывать шаффл в АйПоде.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: -= Александр =- [Всякие интересные вещи]
СообщениеДобавлено: 25 окт 2010, 17:21 
Не в сети
Мастер Самоделкин
Аватара пользователя

Зарегистрирован: 11 окт 2004, 19:20
Сообщения: 3678
Откуда: Россия, СПб
прог. языки: C/C++, Python, asm
ФИО: Курмис Александр Андреевич
Часть вторая - Ногодрыганье.

Естественно после работающего примерчика захотелось чего-то своего написать... Для начала подрыгать ногой ввода-вывода. Сказано - сделано: нога дрыгается. Чего дальше делать? Естественно посмотреть насколько быстро ей можно дрыгать! вот тут-то и случились первые грабли... Частота АРМа задается через цепочку ФАПЧ - тоесть частота кварца сначала умножается на некое число, затем делится на другое число и попадает в ядро. Частоты переферии задаются похожим образом. Только умножается она на 2М, а не на М, как я думал. В итоге получил по зубам: житаг проц не видит, прошить не может. Менял кварц на вдвое меньший - житаг видит через раз, прошить не может. Я уж думал что копец - но вспомнил что можно запустит бутлоадер - в нем проц работает от внутреннего генератора. Запустил (Р2.10 на землю при подаче питания) - ура! житаг его увидел! Но не шьет... Выяснилось что при прошивании он его выкидывает из бутлоадера и снова переходит на кварц. Пришлось качать FlashMagic и шить через бутлоадер по UART0. Поправил частоту, прошил - все заработало!

_________________
Ниндзя - круче всех. Они умеют ходить по воде, делить на ноль и угадывать шаффл в АйПоде.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: -= Александр =- [Всякие интересные вещи]
СообщениеДобавлено: 03 ноя 2010, 15:24 
Не в сети
Мастер Самоделкин
Аватара пользователя

Зарегистрирован: 11 окт 2004, 19:20
Сообщения: 3678
Откуда: Россия, СПб
прог. языки: C/C++, Python, asm
ФИО: Курмис Александр Андреевич
В общем теории и примеров по ARMам в сети хватает, так что буду описывать только всякие грабли и трудно-понимаемые вещи.

Часть третья - SPI в режиме Slave

Одна из плат у меня работает как мост SPI-ETH, в ней все получилось просто и с первого раза. Настроил SPI, написал функцию отправки данных - все работает. Выглядит так: (LPC2368)

Код:
void init_spi(void)
{
  PCONP |= (1 << 8);   //Power ON
  /* Configure Pin Connect Block */   
  PINSEL1|=0x0000003C; //MOSI & MISO
  PINSEL0|=0xC0000000; //SCK
     
  /* Set to highest speed for SPI at 10 MHz- > 1.25 MHz */
  //S0SPCCR=0x8;
   
  /* Device selected as master */
  //SPI Mode 3:
  //CPOL=1
  //CPHA=1
  //MASTER mode
  //MSB first
   
  S0SPCCR= 32;     //SPI clk = PCLK_SPI/S0SPCCR
  S0SPCR = 0x0838;  //830
   
}

char spi(char data)
{ char data_in;
  /* Write data out */
  S0SPDR=data;
  /* Wait for transfer to be completed */
  while ( !(S0SPSR & SPIF) );
  data_in=S0SPDR;
  return data_in;
}


Вторая плата - слэйв - там все не так просто. Слэйв не знает, когда ему придут данные, так что работает по прерыванию. Читаю мануал - пишу код - и нифига. Первый раз прерывание происходит - и тишина... При том другие прерывания работают.
После приема картина такая:

S0SPSR=0xC0
Тоесть Write collision

Если отправлять еще - прерывания не происходит, зато вылазит вот это:
S0SPSR=0xE0
Тоесть Write collision + Read overrun

Что эта хрень значит и как с ней бороться?

После долгой пляски с бубном - выяснил. Надо сначала читать статус, а затем данные...
После этого код заработал как надо!

Код:
void SPI0Handler (void) __irq
{
  DWORD regValue;
  unsigned int data_spi;
 
  if (S0SPSR);                  // (dummy) read status register

  data_spi = S0SPDR;             // read data received
  S0SPDR   = spi_counter;        // next data to transmit

  S0SPINT  = 0x01;               // reset interrupt flag
  VICVectAddr = 0;               // reset VIC


  SPIdata=data_spi;
  SPIflag=1;
  spi_counter++;
}

void init_SPI( void )
{
  PCONP |= (1 << 8);   //SPI0 Power ON
  //S0SPCR = 0x00;
  PINSEL0|=(1U<<30)|(1U<<31); //SCK
  PINSEL1|=(1U<<0 )|(1U<<1 ); //SSEL
  PINSEL1|=(1U<<2 )|(1U<<3 ); //MISO
  PINSEL1|=(1U<<4 )|(1U<<5 ); //MOSI
  S0SPCCR = 0x8;       //Clock select - max clock speed = PLCK/8
  S0SPCR = 0x089C;       // 8 bit, CPHA=1, CPOL=1, slave mode, LSB first, interrupt enabled
           //0898
  if ( install_irq( SPI0_INT, (void *)SPI0Handler, HIGHEST_PRIORITY) == FALSE ) //Install IRQ
    {
   printf("SPI IRQ install error!\n");
   while(1);
    }
 
}

_________________
Ниндзя - круче всех. Они умеют ходить по воде, делить на ноль и угадывать шаффл в АйПоде.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: -= Александр =- [Всякие интересные вещи]
СообщениеДобавлено: 05 ноя 2010, 01:26 
Не в сети
Аватара пользователя

Зарегистрирован: 04 дек 2008, 22:44
Сообщения: 4363
Откуда: Камышин
Skype: galk-aleksandr1
прог. языки: Kotlin, Java, C, C++, Assm, BasCom, VB, php
ФИО: Галкин Александр Владимирович
С I2C слейвом разобрался?

_________________
if(!Operate) Read(pDatasheet);


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: -= Александр =- [Всякие интересные вещи]
СообщениеДобавлено: 03 май 2011, 02:13 
Не в сети
Мастер Самоделкин
Аватара пользователя

Зарегистрирован: 11 окт 2004, 19:20
Сообщения: 3678
Откуда: Россия, СПб
прог. языки: C/C++, Python, asm
ФИО: Курмис Александр Андреевич
Давно я сюда не заглядывал... Да, там все нормально получилось и уже работает. Если интересно - покажу код (оно у меня на работе).

Добавлено спустя 7 минут 13 секунд:
Еще по поводу ARMов - недавно закончил долгострой - плата с LPC2478 и внешней SDRAM на 32 мегабайта. Можете и на эту тему меня расспрашивать - там тоже хватало подводных камней...

_________________
Ниндзя - круче всех. Они умеют ходить по воде, делить на ноль и угадывать шаффл в АйПоде.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 40 ]  На страницу Пред.  1, 2, 3

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO