Jump to content

    

SALKA

Свой
  • Content Count

    90
  • Joined

  • Last visited

Everything posted by SALKA


  1. Можно ли на вход встроенного в BLACKFIN преобразователя напряжения (на полевой транзистор) подавать напряжение большее чем VDDEXT, например 5...6 Вольт???
  2. Цитата(Stanislav @ Jun 6 2008, 15:46) Теоретически - можно. Но придётся подбирать полевик, канал которого надёжно будет запираться при разнице напряжений ЗИ, равной -5...-6В+VDDEXT, и при этом открываться и иметь малое сопротивление при напряжении ЗИ -5...-6В. Такой полевик найти весьма проблематично. А зачем понадобилось подобное извращение? чтобы уменьшить уровень помех на VDDEXT, так как на этой шине находятся еще аналоговые компоненты..
  3. Какие существуют программы для расчета коэф. цифровых фильтров? конкретно интересует, в чем рассчитать целочисленные коэф. для примера цифрового фильтра BLACKFINа, который приведен в VisualDSP, в библиотеке <filter.h>?
  4. Подскажите пожалуйста, как сделать INIT_CODE.DXE только для увеличения скорости загрузки из последовательной AT45. Что нужно оставить в шаблоне из папки VDSP?
  5. Мне на BF532 надо иметь дело с плав. точкой. Применять эмуляцию, что предлагает VDSP, я боюсь, тк не знаю во что это обойдется по кол-ву лишних затраченный тактов. Собираюсь написать свой класс и представлять float, как два числа, одно LONG, другое ULONG. Первое определяет знак и содежимое до запятой, второе число определяет содежимое после запятой. Переполнения у меня не ожидаются, все результаты прогнозируются и находятся в отведенном диапазоне. Но алгоитм использующий double,не мой, он большой и передалать его на целые числа не имею возможности. Уместно ли идти по этому пути или лучше принять эмуляцию от VDSP?
  6. Цитата(Degun @ Apr 28 2008, 16:58) А вы посмотрите по ссылкам: там плавающее число хранится в одной целочисленной переменной и запятая смещена относительно начала регистра на определённое кол-во бит. Я понимаю, что это тоже самое, просто одна переменная разделена на два числа???
  7. Цитата(Degun @ Apr 28 2008, 16:32) Сейчас как раз думаю над этим вариантом. Возникает вопрос о его целесообразности, т. к. есть более простые и быстрые, но, соответственно, менее точные варианты реализации плавающей арифметики: http://www.koders.com/cpp/fid5E90955711BFB...1C652C383C.aspx http://electronix.ru/forum/index.php?showt...45865&st=26 Вообще же эти варианты работают значительно быстрее, чем эмуляция плавающей арифметики через компилятор. Для предлагаемого вами варианта необходима будет операция по суммированию двух чисел с учётом флага переноса, которой в C++ нет. а какой вариант может быть быстрее, чем представлять floating point двумя числами (до запятой, после запятой)? На счет переноса в Си, то я планировал сделать вставку в ассемблере. Я не знаю ассемблер BF, но на intel и AVR такие комманды точно есть..
  8. там, как мне помнится, RESET должен удерживаться в течении 2000 тактов генератора. так вот, если у тебя кнопка на самом Resete висит, то после отпускания, может происходить дребезг, и может не выдерживаться 2000 тактов генератора...
  9. Цитата(dmtr @ Mar 15 2008, 10:56) Не подскажете где можно скачать готовый тулчейн для BF537, желательно, с инструкциями по установке. расскажите пожалуйста, что такое тулчейн?
  10. Цитата(srslab @ Mar 6 2008, 16:42) На 0.2 работало без переворота. В SetDATA(state) по state=1 крутился dir на вход, по 0 dir на выход и собственно ноль в flag_d на выход. INEN устанавливался однократно, кажется, при инициализации i2c. Код валялся на blackfin.org года 3-4 назад. У меня идваси работает с одним слейвом который не умеет тормозить, т.ч. sclk всегда на аут. я с 0.3 версии начал блэкфин осваивать.
  11. Цитата(srslab @ Mar 5 2008, 02:58) Заработало. Новым стало то, что теперь недостаточно поворачивать направление флага перед записью туда нуля-единички. В моем случае единичка делалась поворотом dir на input, соответственно утяжкой его в 1, а 0 поворотом в output и директивной записью нолика в FLAG_D. Так вот оно не писалось ни по старому, ни с патчем аномалии. Записалось только когда я начал поворачивать INEN до и после конкретно этой операции. При этом тот который не крутится на ин - аут (SCLK) писался теми же записями. Вот как-то так... ...Это всегда было , на всех силиконах. BLACKFIN не будет выдавать сигнал на выход, если включен INEN(подключен входной внутренний буфер)!!!! Цитата(srslab @ Mar 5 2008, 02:58) Заработало. Новым стало то, что теперь недостаточно поворачивать направление флага перед записью туда нуля-единички. В моем случае единичка делалась поворотом dir на input, соответственно утяжкой его в 1, а 0 поворотом в output и директивной записью нолика в FLAG_D. Так вот оно не писалось ни по старому, ни с патчем аномалии. Записалось только когда я начал поворачивать INEN до и после конкретно этой операции. При этом тот который не крутится на ин - аут (SCLK) писался теми же записями. Вот как-то так... .. а по спецификации i2c вывод clk мастера, тоже должен работать на вход, дожидаться когда slave устройство перестанет его удерживать (некоторые ведомые уст-ва могут удерживать clk)
  12. Цитата(srslab @ Mar 4 2008, 15:52) Я по ней код и перебил. Результат нулевой. Отладчик по ним пишет инфо "loop deleted". Вы попробуйте запустить проект без отладчика. Эти макросы запрещают прерывания на время свего выполнения.
  13. Цитата(srslab @ Mar 4 2008, 12:20) Было. I2C древний код с дерганьем pf-ов с ноповой задержкой на формирование времянки. Ревизия bf532 0.2 VDSP3.5. Все работало. Стало. Тот же код (тот же проект), ревизия bf532 0.5 VDSP4.5 (самый последний апдейт). Не работает, с..а! Сначала грешил на новый оптимизатор, но поотключал его там где идваси прагмами (времянку правда не смотрел, вижу что ножками дергает), перебил pf-ы на учет аппаратной ошибки (там где после операции надо читать регистр с похожими адресами). Все равно, с..а, не работает! Вываливается на первой же посылке идвасишного адреса т.к. не получает квитирования от слейва. При этом на рабочей плате и рабочем коде поменялась только среда и проц ревизованный встал. У кого-нибудь такие приколы были? Я I2C сам писал, без прерываний от таймера. Замучился отлаживать.. пока не исправил код с учетом аппаратной аномалии: #define SDA PF3 // âûâîä SDA ñîîòâåòñòâóåò íîæêå PF3 BLACKFINà #define SCL PF7 // âûâîä SCL ñîîòâåòñòâóåò íîæêå PF7 BLACKFINà ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void SDA_1 ( void ) { // *pFIO_DIR &= ~SDA ; // Óñòàíîâêà 1 íà âûâîäå SDA - ïîäòÿãèâàþùèé ðåçèñòîð unsigned short temp ; FIO_ANOM_0311_DIR_R ( temp ) ; FIO_ANOM_0311_DIR_W ( temp & (unsigned short)(~SDA) ) ; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void SDA_0 ( void ) { // *pFIO_DIR |= SDA ; // Óñòàíîâêà 0 íà âûâîäå SDA - 0 íà âûõîä unsigned short temp ; FIO_ANOM_0311_DIR_R ( temp ) ; FIO_ANOM_0311_DIR_W ( temp | SDA ) ; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void SCL_1 ( void ) { // *pFIO_DIR &= ~SCL ; // Óñòàíîâêà 1 íà âûâîäå SCL - ïîäòÿãèâàþùèé ðåçèñòîð unsigned short temp ; FIO_ANOM_0311_DIR_R ( temp ) ; FIO_ANOM_0311_DIR_W ( temp & (unsigned short)(~SCL) ) ; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void SCL_0 ( void ) { // *pFIO_DIR |= SCL ; // Óñòàíîâêà 0 íà âûâîäå SCL - 0 íà âûõîä unsigned short temp ; FIO_ANOM_0311_DIR_R ( temp ) ; FIO_ANOM_0311_DIR_W ( temp | SCL ) ; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// unsigned char Read_SDA ( void ) { unsigned short temp_INEN, temp ; FIO_ANOM_0311_INEN_R ( temp_INEN ) ; FIO_ANOM_0311_INEN_W ( temp_INEN | SDA ) ; // *pFIO_INEN |= SDA ; FIO_ANOM_0311_FLAG_R ( temp, pFIO_FLAG_D ) ; FIO_ANOM_0311_INEN_W ( temp_INEN ) ; // *pFIO_INEN &= ~SDA ; FIO_ANOM_0311_FLAG_W ( SDA, pFIO_FLAG_C ) ; // ñáðîñèòü SDA if ( (temp & SDA) != 0 ) return 0x01 ; return 0x00 ; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// bool Read_SCL ( void ) // æäåò, ïîêà SCL íå áóäåò ðàâíî 0 { unsigned short temp_INEN, temp ; FIO_ANOM_0311_DIR_R ( temp ) ; FIO_ANOM_0311_DIR_W ( temp & (unsigned short)(~SCL) ) ; // *pFIO_DIR &= ~SCL ; // Óñòàíîâêà 1 íà âûâîäå SCL - ïîäòÿãèâàþùèé ðåçèñòîð FIO_ANOM_0311_INEN_R ( temp_INEN ) ; FIO_ANOM_0311_INEN_W ( temp_INEN | SCL ) ; // *pFIO_INEN |= SCL ; /// unsigned long Count_SCL_0 = 0 ; do { FIO_ANOM_0311_FLAG_R ( temp, pFIO_FLAG_D ) ; if ( ++ Count_SCL_0 >= 10000000 ) return false ; } while ( (temp & SCL ) == 0 ) ; /// FIO_ANOM_0311_INEN_W ( temp_INEN ) ; // *pFIO_INEN &= ~SCL ; FIO_ANOM_0311_FLAG_W ( SCL, pFIO_FLAG_C ) ; // ñáðîñèòü SCL return true ; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void Init_I2C ( void ) { FIO_ANOM_0311_FLAG_W ( SDA, pFIO_FLAG_C ) ; // ñáðîñèòü SDA FIO_ANOM_0311_FLAG_W ( SCL, pFIO_FLAG_C ) ; // ñáðîñèòü SCL }
  14. не встречалось ли кому описание переходника CAN в RS232 или USB? если встречалось, дайте ссылку пожалуйста
  15. что же ты забыл написать, о каком процессоре идет речь?
  16. Что-то не могу никак разобраться, как в VDSP, в CPP файле создать структуру, а потом в H файле сделать её extern. например в CPP: typedef struct FFF { char a ; char b ; } ; FFF ggg ; а как будет выглядеть H файл?: extern FFF ggg ; не срабатывает...[size=1]
  17. Спасибо всем. Сам разобрался. оказывается очень выжно, чтобы "разграничить" в начале каждого файла H писать: #ifndef _SAMPLE_H #define _SAMPLE_H и конце #endif
  18. Можно ли заставить JTAG ICE mkII программировать (не отлаживать, а программировать) микросхемы из IAR? Или существуют ли какие нибудь автономные программы (не AVR Studio) для работы с JTAG ICE mkII???
  19. Intel HEX файлы

    Иммется 2 Intel HEX файла. Нужно сделать один из двух, тк адреса у них разные. Как это сделать???
  20. Работа с W3150A+

    Подскажите, что может быть такое? работаю с 0 сокетом.Довожу его до SOCK_LISTEN, а в SOCK_ESTABLISHED никак не переходит. вод код программы: unsigned char Gateway[4] = { 192, 168, 0, 1 } ; unsigned char Mask[4] = { 255, 255, 255, 0 } ; unsigned char MAC[6] = { 33, 77, 99, 55, 66, 11 } ; // ÌÀÑ àäðåñ unsigned char IP[4] = { 192, 168, 0, 199 } ; unsigned char TimeOut[2] = { 0x0F, 0xA0 } ; // TimeOut for Retransmission (0xFA0 = 400ms) unsigned char RetryCount = { 10 } ; unsigned char RxMemSize = { 0x55 } ; // RX Data Memory sizes for Channels unsigned char TxMemSize = { 0x55 } ; // RX Data Memory sizes for Channels Write_Reg_W3150A ( MR, 0x80 ) ; // ñáðîñ âñåõ ðåãèñòðîâ Write_Reg_W3150A ( GAR0 , Gateway[0] ) ; // Çàïèñûâàåì GATEWAY Write_Reg_W3150A ( GAR1 , Gateway[1] ) ; Write_Reg_W3150A ( GAR2 , Gateway[2] ) ; Write_Reg_W3150A ( GAR3 , Gateway[3] ) ; Write_Reg_W3150A ( SHAR0, MAC[0] ) ; // Çàïèñûâàåì MAC Write_Reg_W3150A ( SHAR1, MAC[1] ) ; Write_Reg_W3150A ( SHAR2, MAC[2] ) ; Write_Reg_W3150A ( SHAR3, MAC[3] ) ; Write_Reg_W3150A ( SHAR4, MAC[4] ) ; Write_Reg_W3150A ( SHAR5, MAC[5] ) ; Write_Reg_W3150A ( SUBR0, Mask[0] ) ; // Çàïèñûâàåì MASK Write_Reg_W3150A ( SUBR1, Mask[1] ) ; Write_Reg_W3150A ( SUBR2, Mask[2] ) ; Write_Reg_W3150A ( SUBR3, Mask[3] ) ; Write_Reg_W3150A ( SIPR0, IP[0] ) ; // Çàïèñûâàåì IP ADDRESS Write_Reg_W3150A ( SIPR1, IP[1] ) ; Write_Reg_W3150A ( SIPR2, IP[2] ) ; Write_Reg_W3150A ( SIPR3, IP[3] ) ; Write_Reg_W3150A ( RTR0, TimeOut[0] ) ; Write_Reg_W3150A ( RTR1, TimeOut[1] ) ; Write_Reg_W3150A ( RCR, RetryCount ) ; Write_Reg_W3150A ( RMSR, RxMemSize ) ; Write_Reg_W3150A ( TMSR, TxMemSize ) ; #define TCP 1 Write_Reg_W3150A ( S0_MR , TCP ) ; Write_Reg_W3150A ( S0_PORT0, 0x0 ) ; Write_Reg_W3150A ( S0_PORT1, 0x80 ) ; Write_Reg_W3150A ( S0_CR, 1 ) ; // open socket while ( Read_Reg_W3150A (S0_SR) != 0x13 ) ; Write_Reg_W3150A ( S0_CR, 2 ) ; // server mode while ( Read_Reg_W3150A (S0_SR) != 0x14 ) ; далее, при обращении к этой микросхеме по сети, должен регистр S0_SR, равняться 0x17, но этого ни как не получается. В чем может быть дело?
  21. Работа с W3150A+

    Цитата(KRS @ Jul 31 2007, 17:44) Должен пинговаться! у визнета только mac и ip прописываешь и уже пингуется! а ip адрес из вашей подсети, он не конфликтует? на arp запросы визнет отвечает? нет, не отвечает и не пигуется.
  22. Работа с W3150A+

    нет, ничего не пингуется. у меня модуль NM7010B+ проверяю регистры, после записи, значения совпадают. Адресация верная, тк сброс работает....
  23. W3150A+

    Подкиньте пожалуйста примеры кода для W3150A+. Попроще, для общего ознакомления с микросхемой... какой нибудь простенький пример, как выводть HTML страницу на экран браузера
  24. W3150A+

    Цитата(KRS @ Jul 26 2007, 15:27) Это HTTP сервер то - попроще??? Вообще у визнета есть куча примеров для AVR! там есть и http и ftp ... они все сложные - куча h файлов. трудно разобраться. Что нибудь самодельное мне бы....
  25. при установке VisualDSP 4.5 с системой WINDOWS VISTA, последняя требует какуюто таблицу XML и не хочет устанавливать... Что это такое? и как это обойти???