roboforum.ru

Технический форум по робототехнике.
Текущее время: 22 фев 2025, 12:41

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


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


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



Начать новую тему Ответить на тему  [ Сообщений: 207 ]  На страницу Пред.  1 ... 5, 6, 7, 8, 9, 10, 11 ... 14  След.
Автор Сообщение
 Заголовок сообщения: Re: Michael_K - записки, чтобы не терялись...
СообщениеДобавлено: 07 окт 2010, 12:42 
Не в сети
Аватара пользователя

Зарегистрирован: 05 окт 2008, 14:41
Сообщения: 997
Откуда: СПб
прог. языки: C,Python
мда лекция по уфологии...
а я удевляюсь тому что вместо производственной практики у химика-технолога(!!!) перепись...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Ширпотреб давит...
СообщениеДобавлено: 19 окт 2010, 03:42 
Не в сети
Аватара пользователя

Зарегистрирован: 07 окт 2009, 00:29
Сообщения: 6028
Откуда: СПб
Каких только штук раньше не делали.
LM1812 - практически готовый УЗ-радар


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Michael_K - записки, чтобы не терялись...
СообщениеДобавлено: 27 окт 2010, 15:23 
Не в сети
Аватара пользователя

Зарегистрирован: 07 окт 2009, 00:29
Сообщения: 6028
Откуда: СПб
О!!!
Приехали платы... вот эти...
Не прошло и года.

Красивые, заразы. Чуть позже сфоткаю.
Вложение:
g45_small.jpg
g45_small.jpg [ 42.03 КиБ | Просмотров: 2449 ]


Последний раз редактировалось Michael_K 28 окт 2010, 07:52, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Эрратомания...
СообщениеДобавлено: 28 окт 2010, 07:26 
Не в сети
Аватара пользователя

Зарегистрирован: 07 окт 2009, 00:29
Сообщения: 6028
Откуда: СПб
Ну и ошибки в процах пошли:

Errata sheet LPC2378 Rev. 08 — 1 April 2010 писал(а):
EMC.1: Write operation cannot be performed on the external memory
bus
Introduction:
The External Memory Controller supports asynchronous static memory device support
including RAM, ROM, and flash, with or without asynchronous page mode.
Problem:
Write operation is not operational.
Work-around:
Using all the EMC pins as GPIO pins, the write operation can be simulated in software.


Этот проц выпускается уже года три-четыре... это так - для справки.
У меня уже даже матерных слов не хватает.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Michael_K - записки, чтобы не терялись...
СообщениеДобавлено: 28 окт 2010, 07:31 
Не в сети
Аватара пользователя

Зарегистрирован: 28 дек 2004, 20:33
Сообщения: 10211
Откуда: Тольятти
Skype: Ed_Gull
прог. языки: Bascom AVR Basic
ФИО: Гуль Эдуард Викторович
тебе из-за этого не спится в такую рань? :D


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Michael_K - записки, чтобы не терялись...
СообщениеДобавлено: 28 окт 2010, 07:56 
Не в сети
Аватара пользователя

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Michael_K - записки, чтобы не терялись...
СообщениеДобавлено: 28 окт 2010, 08:50 
Не в сети
Аватара пользователя

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

_________________
if(!Operate) Read(pDatasheet);


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Michael_K - записки, чтобы не терялись...
СообщениеДобавлено: 28 окт 2010, 09:03 
Не в сети

Зарегистрирован: 29 дек 2004, 23:15
Сообщения: 3744
Откуда: Санкт-Петербург
прог. языки: C, C++, C#, Asm
ФИО: Кашликов Сергей
А зачем делают ободки металлизации с отверстиями вокруг монтажных отверстий?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Michael_K - записки, чтобы не терялись...
СообщениеДобавлено: 28 окт 2010, 11:31 
Не в сети
Аватара пользователя

Зарегистрирован: 29 апр 2008, 21:15
Сообщения: 4130
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич
А что там за аудио гнезда? Под какой диаметр? Какая модель? Где брали? СМД? Ищу себе похожие, надо чтоб были как можно компактнее, и чтоб в будущем всегда купить можно было

_________________
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!



Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Michael_K - записки, чтобы не терялись...
СообщениеДобавлено: 28 окт 2010, 12:44 
Не в сети
Аватара пользователя

Зарегистрирован: 07 окт 2009, 00:29
Сообщения: 6028
Откуда: СПб
Там 8 слоев. Эти ободки соединены с "экраном". куча дырочек, чтобы металлизация не "терялясь" в процессе прикручивания.

Собирал не я - где брали не знаю, модель вот такая
http://www.brownbear.ru/goods/3048.html
Но вообще, аналоги называются как попало,
и я бы не сказал, что эти гнезда редкость -
проще в магазин прийти и пальцем показать, чем в инете искать.
http://www.chipdip.ru/product/st-021.aspx
http://www.comport.spb.ru/index.php?productID=1655
http://www.megachip.ru/item.php?item_id=135105


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Michael_K - записки, чтобы не терялись...
СообщениеДобавлено: 28 окт 2010, 13:32 
Не в сети
Аватара пользователя

Зарегистрирован: 28 дек 2004, 20:33
Сообщения: 10211
Откуда: Тольятти
Skype: Ed_Gull
прог. языки: Bascom AVR Basic
ФИО: Гуль Эдуард Викторович
почем обошлась такая 8-ми слойная плата?
во сколько обошлась сборка?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Michael_K - записки, чтобы не терялись...
СообщениеДобавлено: 28 окт 2010, 17:08 
Не в сети
Аватара пользователя

Зарегистрирован: 07 окт 2009, 00:29
Сообщения: 6028
Откуда: СПб
Заказывал не я, поэтому точно не скажу.
Примерно скажу:
Сама плата за штучные количества - 30-35 тыр. - это если с HAL (без золота)
Монтаж - тысяч 12-15 (Здесь еще сделан рентген-контроль - он там тоже заметно прибавляет).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Michael_K - записки, чтобы не терялись...
СообщениеДобавлено: 28 окт 2010, 21:47 
Не в сети
Аватара пользователя

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

_________________
if(!Operate) Read(pDatasheet);


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Michael_K - записки, чтобы не терялись...
СообщениеДобавлено: 28 окт 2010, 22:12 
Не в сети
Аватара пользователя

Зарегистрирован: 07 окт 2009, 00:29
Сообщения: 6028
Откуда: СПб
а тут задача конкурировать с кЕтайцами не стояла :)
штучный продукт... :)))


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: В мире жывотне...
СообщениеДобавлено: 08 ноя 2010, 14:42 
Не в сети
Аватара пользователя

Зарегистрирован: 07 окт 2009, 00:29
Сообщения: 6028
Откуда: СПб
Это фирменные примеры кода "от производителя" NXP-Keil.
Такое ощущение, что один индус портировал под кейл-арм код другого индуса,
который писал на перле для DSP :wink:

Файл размером под 50 килобайт вдохновляет изобилием и изощренностью глюков.
Задача под кодовым названием "найди двести ошибок".

Типично:

Код:
DWORD MCI_Send_ACMD_Bus_Width( DWORD buswidth )
{
  DWORD i, retryCount;
  DWORD respStatus;
  DWORD respValue[4];

  retryCount = 0x20;         /* reset retry counter */
  while ( retryCount > 0 )
  {
   if ( MCI_Send_ACMD() == FALSE )
   {
     continue;
   }   
   /* Send ACMD6 command to set the bus width */
   MCI_SendCmd( SET_ACMD_BUS_WIDTH, buswidth, EXPECT_SHORT_RESP, 0 );
   respStatus = MCI_GetCmdResp( SET_ACMD_BUS_WIDTH, EXPECT_SHORT_RESP, (DWORD *)&respValue[0] );
   if ( !respStatus && ((respValue[0] & (0x0F << 8)) == 0x0900) )
   {
     return ( TRUE );   /* response is back and correct. */
   }
   for ( i = 0; i < 0x20; i++ );
   retryCount--;
  }
  return( FALSE );
}


Переменная i используется для организации задержки... но компилятор ее оптимизирует, т.к. модификатор volatile тупо забыли. Если функция уходит в continue по первому условию, то RetryCount не работает и все висит.

Код:
  /* Due to reversed H/W logic in the MCB2300 board, the MCI power pin
  needs to be configured as GPIO pin that I need to set it active low manually,
  once it's set as MCI power pin, it will be active high. */
  /*connect MCI signals to P0.19-P0.22, and P2.11-P2.13*/
  PINSEL1 = 0x2A80;
  PINSEL4 = 0x0A800000;
#if MCB2300_VERSION_0
  SCS |= 0x08;
#if 0
  PINSEL1 = 0x2280;
  PINSEL4 = 0x0A800000;
  IODIR0 = 1 << 21;      /* MCI_PWR as GPIO output */
  IOCLR0 = 1 << 21;
#endif
#else
  SCS &= ~0x08;
#if 0
  PINSEL1 = 0x2A80;
  PINSEL4 = 0x0A800000;
#endif
#endif



Еще один вдохновляющий кусочек из того же файла. PINSEL - это регистр, где выбирается назначение ног порта. В данном случае используется простое присваивание, а не побитные операции, что автоматически отменяет все предыдущие настроки. Очень доставляет условная компиляция (типа тут компилируем, тут не компилируем, тут рыбу заворачивали), и блочные комментарии в каждой второй строке - это практически делает невозможным закомментить кусок кода для отладки.

Вообще, как собственно и следовало ожидать, любой инструмент в руках дикаря - грозное оружие. Так например, встречаются экземпляры кода написанные явно разбирающимися людьми... К сожалению, они настолько сосредоточены на _ЯКОБЫ_ хорошем _СТИЛЕ_ написания программы, что практически убивают прямой смысл программы.

Офигенно, например, вдохновляет практика перечислить директории инклюдов в мэйк-файле. В результате, если тебе нужно найти хеадер, ты будешь его искать по всем каталогам. Ничем, кроме "хорошего стиля программирования" невозможно объяснить славную традицию использовать разные типы в разных файлах - то есть в проекте тупо обьявляются BOOL, DWORD, UINT32, I32U, и даже my_unsigned_int, совершенно невзирая на то что это все одно и то же и портировать под принципиально другую систему это говно никто и никогда не будет (хотя бы просто потому, что файл относится к работе с конкретной периферией конкретного проца). Видимо из "хорошего стиля" растет и практика использования булевских значений:
Код:
#define TRUE  (1)
#define FALSE (0)

При этом охрененно занимательно отлавливать глюки. Почему-то ( :ROFL: ) вдруг оказывается, что
Код:
if (Flag == TRUE) {do_something();}
if (Flag != FALSE)  {do_something();}

это два совершенно разных действия.

А вот эта фишка - эта просто классика "хорошего стиля". Человек видимо очень старался, чтобы его код мог работать и так, и сяк, и об косяк... К сожалению, проверить разные комбинации условных дефайнов он не удосужился (хотя, честно говоря, на это не хватило бы и жизни - столько он их там наплодил).

Код:
#if MCI_DMA_ENABLED
   do {
      // TODO: avoid copy
      memcpy((void *)DMA_SRC, buff, 512);
      buff += 512;
      GPDMA_INT_TCCLR = 0x01;
      GPDMA_INT_ERR_CLR = 0x01;
      GPDMA_CH0_SRC = DMA_SRC;
      GPDMA_CH0_DEST = DMA_MCIFIFO;
      GPDMA_CONFIG = 0x01;
      /* Enable DMA channels, little endian */
      while ( !(GPDMA_CONFIG & 0x01))
         ;
      /* The burst size is set to 8, the size is 8 bit too. */
      /* Terminal Count Int enable */
      GPDMA_CH0_CTRL = (DMA_SIZE & 0x0FFF) | (0x04 << 12) | (0x02 << 15)
      | (0x02 << 18) | (0x02 << 21) | (1 << 26) | 0x80000000;
      //DMA_Move( 0, M2P );
      GPDMA_CH0_CFG |= 0x10001 | (0x00 << 1) | (0x04 << 6) | (0x05 << 11);
      /* Write, block transfer, DMA, and data length */
      DataCtrl |= ((1 << 0) | (1 << 3) | (DATA_BLOCK_LEN << 4));
#else
      /* Write, block transfer, and data length */
      DataCtrl |= ((1 << 0) | (DATA_BLOCK_LEN << 4));
#endif
      MCI_DATA_CTRL = DataCtrl;
      for (i = 0; i < 0x10; i++) {
         ;
      }
   } while (count--);

Невооруженным глазом видно, что если MCI_DMA_ENABLED не определено, то цикл не открывается, но закрывается...

Честное слово, иногда хочется руки оторвать этим "стилистам".


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 207 ]  На страницу Пред.  1 ... 5, 6, 7, 8, 9, 10, 11 ... 14  След.

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


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

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


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

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