Перейти к содержанию
    

Artem

Свой
  • Постов

    71
  • Зарегистрирован

  • Посещение

Весь контент Artem


  1. Извиняюсь за долгое молчание, увлеклись замерами совсем. Спасибо velkarn за совет. Так и сделали и всё получилось. Всем спасибо.
  2. Спасибо, про переходной процесс читал. Просто хотелось вживую увидеть эти пресловутые АЧХ с ФЧХ уже в живом изделии :rolleyes: . Первый раз такое делаем, вот отсюда и интерес.
  3. Вот их (запасы по фазе и усилению) то и хотим измерить. Про петлевое усиление, это я что то с недосыпу сморозил :rolleyes: . Пробовали включать фильтр, тоже не видать почти. Подключали Network Analizer HP8751A. Он тоже какой то бред показывает - на низких частотах - шум. А на верхних - на частоте перехода усиления через 0, он показывает запас по фазе 98 градусов. Хотя рассчётное - 60...
  4. Вот этот документ http://www.polyscope.ch/dlCenter/ps/2009_8/08_09.05.pdf Вот схемы при себе нету, на работе она. Но если в кратце - косой полумост, с частотой 80кГц, выходной LC фильтр, и усилитель ошибки Type 3. PWM контроллер UC3845.
  5. Почитал, спасибо. Но это всё не то, к сожалению. По ссылкам описывается теоретическая и расчётная части. А мне всё таки хотелось узнать о измерении в уже готовом изделии.
  6. Спасибо за ссылки, а я искал в этой ветке :laughing: ... А оно вон оно как... Спасибо, пошёл я читать.
  7. Спасибо за ответ, но искал, всё перерыл и не только тут. Но везде только сслылки на юнитродовские документы, а практических рекомендаций так и не нашол. Так же не нашёл, чтоб кто-нибудь поведал о своих измерениях.. :laughing: Ещё раз повторюсь - мне не нужны методы расчёта или настройки, это я уже сделал. Мне бы хотелось услышать о методах измерения. Интересно, кто как делает, ведь в помехах ничего не видно.. :rolleyes:
  8. Доброго времени суток. Собственно, суть вопроса в следующем: сделал источник питания с напряжением по выходу от 6 до 20 вольт, и током до 30 А. По топологии косого моста, контроль по напряжению, ШИМ контроллер - UC3845. Работает нормально, напряжение регулируется. Вот решил проверить его устойчивость и измерить петлевое усиление и запас по фазе. Сделали как описывается в юнитродовских документах - в разрыв делителя обратной связи последовательно добавили резистор на 50 ом, и через разделительный трансформатор с генератора подали синус (200mV) на резистор. Сначала смотрели осциллом - всё в помехах и не видно ничего. Точнее синус немного проглядывается сквозь помехи, но толком его не померить. Собственно вопрос: Кто как измеряет петлевое усиление и запас по фазе? Заранее спасибо.
  9. stm32f2xx lwip icmp error

    Интересная ссылочка, спасибо. Знал бы про неё, не мучился бы два дня подряд..
  10. stm32f2xx lwip icmp error

    Сделали так: В файле icmp.c ф ф-ции icmp_input() строки: // adjust the checksum if (iecho->chksum >= PP_HTONS(0xffffU - (ICMP_ECHO << 8))) { iecho->chksum += PP_HTONS(ICMP_ECHO << 8) + 1; } else { iecho->chksum += PP_HTONS(ICMP_ECHO << 8); } закомментировали, а сделали так: #if CHECKSUM_GEN_ICMP /* adjust the checksum */ if (iecho->chksum >= PP_HTONS(0xffffU - (ICMP_ECHO << 8))) { iecho->chksum += PP_HTONS(ICMP_ECHO << 8) + 1; } else { iecho->chksum += PP_HTONS(ICMP_ECHO << 8); } #else /* CHECKSUM_GEN_ICMP */ iecho->chksum = 0; #endif /* CHECKSUM_GEN_ICMP */ Теперь полёт нормальный. Плата пингуется, страница загружается.
  11. stm32f2xx lwip icmp error

    А какая версия стека? Была такая проблема когда переходили на версию 1.4
  12. FATfs и SD-карта

    Добрый день. У меня проблема была с файлом sdc_diskio.c (низкоуровневые функции работы с SD). А если ещё точнее, то проблема была с функцией Receive_DataBlock. Получалось, что я при чтении вылезал за область памяти прёмного буфера, и при этом портил структуру fs. После устранения, проблемы исчезли. PS. Письмо отправил
  13. IAR Linker

    Доброго времени суток. Необходимо разместить секцию во флеш после кода. А адрес этой секции поместить тоже во флеш по фиксированному адресу. Т.е. по фиксированному адресу будет лежать адрес конца прошивки. Делаю вот так: (IAR 6.10, STM32F103RET6) .icf файл: define symbol __ICFEDIT_size_vesionaddr__ = 0x04; define memory mem with size = 4G; define region ROM_region = mem:[from __ICFEDIT_region_ROM_start__ to __ICFEDIT_region_ROM_end__]; define region RAM_region = mem:[from __ICFEDIT_region_RAM_start__ to __ICFEDIT_region_RAM_end__]; // Создаём регион по фиксированному адресу define region VERADDR_region = mem:[from __ICFEDIT_region_ROM_start__+0x400 _size __ICFEDIT_size_vesionaddr__]; define block CSTACK with alignment = 8, size = __ICFEDIT_size_cstack__ { }; define block HEAP with alignment = 8, size = __ICFEDIT_size_heap__ { }; initialize by copy { readwrite }; do not initialize { section .noinit }; place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec }; place in ROM_region { readonly, section .versionsection}; place in VERADDR_region { section .versionaddr }; place in RAM_region { readwrite, block CSTACK, block HEAP }; в файле main.c // Глобальные переменные #pragma section = ".versionsection" const char version_full [] @ ".versionsection" = "VERSION 30.05.2011 05:38:40"; #pragma section = ".versionaddr" const char * version_addr @ ".versionaddr" = __section_begin(".versionsection"); IAR ругается вот такими словами: Error[Pe028]: expression must have a constant value на вот эту строку: const char * version_addr @ ".versionaddr" = __section_begin(".versionsection"); Вот не пойму, вроде компилятор должен положить адрес versionsection в секцию versionaddr. А линкер засунет её в созданный для неё регион... Почему такого не происходит? Заранее спасибо.
  14. FATfs и SD-карта

    Спасибо, Ваш пример работает. Переработал свой код по образу и подобию, тоже заработало. Спасибо!
  15. FATfs и SD-карта

    Так вот если файл не нулевого размера, эти функции работают же. Файл пишется. Поэтому на них вроде и не думаю. Понятно, что ошибка где то у меня, не понятно только где..
  16. FATfs и SD-карта

    Сделал вот так: static FATFS fs; // Work area (file system object) for logical drives static FIL fdst, data_file; // file objects void proba () { volatile FRESULT res; // FatFs function common result code UINT br, bw; // File read/write count uint8_t str_cnt = 0; // Register a work area for logical drive 0 f_mount(0, &fs); // Открываем файл res = f_open(&data_file, "test_cpy.txt", FA_OPEN_ALWAYS | FA_READ | FA_WRITE); if(res) { res = res; } buffer[0] = 'A'; buffer[1] = 'B'; buffer[2] = 'C'; buffer[3] = 'D'; buffer[4] = 'E'; for(str_cnt = 0; str_cnt < 10; str_cnt++) { res = f_lseek(&data_file, data_file.fsize); br = 5; res = f_write(&data_file, buffer, br, &bw); if(res) { res = res; } f_puts ("Proba \r\n", &data_file); f_sync (&data_file); } //--------------------------------------------------------------------------------- // Вот этот блок добавил fdst = fdst; //--------------------------------------------------------------------------------- f_close(&data_file); // Unregister a work area before discard it f_mount(0, NULL); } Вот только не понятно, почему если оставить неиспользуемый fdst , то всё работает, если его закомментировать, то опять с начала файла не пишет, и размер файла не больше 4033 байт. (забыл сказать , компилятор IAR ARM, FreeRTOS) размер стека увеличивал, не помогает... что такое может быть?
  17. FATfs и SD-карта

    Доброго времени суток! Микроконтроллер STM32 работает с SD картой по SPI. Прицеплена FATfs. Необходимо открыть файл для записи, если файла нет, то создать его и в него записать строку. Но вот в чём проблема, если в файле уже есть хоть один символ, то запись проходит успешно, а если файл только что создали, т.е. его размер равен 0 , то запись не происходит, f_write возвращает FR_INT_ERR. Не могу понять в чём проблема... Помогите кто чем может.. Заранее спасибо. Вот код: void proba () { volatile FRESULT res; // FatFs function common result code UINT br, bw; // File read/write count uint8_t str_cnt = 0; // Register a work area for logical drive 0 f_mount(0, &fs); // Открываем файл res = f_open(&fdst, "test_cpy.txt", FA_OPEN_ALWAYS | FA_READ | FA_WRITE); if(res) { res = res; } buffer[0] = 'A'; buffer[1] = 'B'; buffer[2] = 'C'; buffer[3] = 'D'; buffer[4] = 'E'; for(str_cnt = 0; str_cnt < 10; str_cnt++) { res = f_lseek(&fdst, fdst.fsize); br = 5; res = f_write(&fdst, buffer, br, &bw); if(res) { res = res; } f_puts ("Proba \r\n", &fdst); f_sync (&fdst); } f_close(&fdst); // Unregister a work area before discard it f_mount(0, NULL); } Добавлю: Файл не пишется размером больше 4033 байт. Сделал вот так: void proba () { volatile FRESULT res; // FatFs function common result code UINT br, bw; // File read/write count uint8_t str_cnt = 0; // Register a work area for logical drive 0 f_mount(0, &fs); // Открываем файл res = f_open(&fdst, "test_cpy.txt", FA_OPEN_ALWAYS | FA_READ | FA_WRITE); if(res) { res = res; } buffer[0] = 'A'; buffer[1] = 'B'; buffer[2] = 'C'; buffer[3] = 'D'; buffer[4] = 'E'; for(str_cnt = 0; str_cnt < 10; str_cnt++) { res = f_lseek(&fdst, fdst.fsize); br = 5; res = f_write(&fdst, buffer, br, &bw); if(res) { res = res; } f_puts ("Proba \r\n", &fdst); f_sync (&fdst); } //--------------------------------------------------------------------------------- // Вот этот блок добавил for(str_cnt = 0; str_cnt < 10; str_cnt++) { res = f_lseek(&data_file, ((&data_file)->fsize)); f_puts ("Proba\r\n", &fdst); f_sync (&data_file); } //--------------------------------------------------------------------------------- f_close(&fdst); // Unregister a work area before discard it f_mount(0, NULL); } и стало писаться с в только что созданный файл, и размер файла не ограничен. Ничего не понимаю, в чём дело? Что за танцы с бубном?
  18. А по подробней можно? Как по графику восстановления напряжения можно определить остаточную ёмкость?
  19. Проблема решена. Оказалось, что без подключения VDDA и VSSA не работает. Подключил и всё завелось. Всем спасибо за помощь.
  20. С другими работает, проверял на AT91SAM7S.
  21. Интерфейс включен JTAG, может проблема сдесь - J-Link firmware: V1.20 (J-Link compiled Feb 20 2006 18:20:20 -- Update --), может он на поддерживает кортексы?
  22. Выбрал, попробовал, результат прежний ...
  23. Попробовал через JFlashARM законектится, в логе пишет: Application log started - J-Flash ARM V4.07b (J-Flash compiled Jun 10 2009 19:57:01) - JLinkARM.dll V4.07b (DLL compiled Jun 10 2009 19:56:22) Reading flash device list [C:\Program Files\SEGGER\JLinkARM_V407b\ETC\JFlash\Flash.csv] ... - List of flash devices read successfully (576 Devices) Reading MCU device list [C:\Program Files\SEGGER\JLinkARM_V407b\ETC\JFlash\MCU.csv] ... - List of MCU devices read successfully (337 Devices) Opening project file [C:\Program Files\SEGGER\JLinkARM_V407b\Default.jflash] ... - Project opened successfully Connecting ... - Connecting via USB to J-Link device 0 - J-Link firmware: V1.20 (J-Link compiled Feb 20 2006 18:20:20 -- Update --) - JTAG speed: 200 kHz (Auto) - Initializing CPU core (Init sequence) ... - ERROR: Failed to connect Макетку проверял, нормально. Джамперы Boot - обои на земле.
  24. STM32 не работает с J-Link

    Доброго времени суток! Проблема такова: получил наконец-то долгожданные STM32F103RET6, соорудил макетку, подключил имеющийся J-Link. Взял пример от IAR... Но при нажатии на Download and Debug, выскакивает сообщение: Bad JTAG communication: Write to IR: Expected 0x1, got 0xf(TAP Command : 11)@ Off 0x64. Wrong AHB ID (15:3). Expected 0x04770001 (Mask 0x0FFFFF0F), Found 0x00000000 Установил новые дрова от Segger V4.07b. J-Link у меня rev3.0. Вот не могу понять, он может работать с Cortex M3 или не может. Или он аппаратно не поддерживает Кортекса? Заранее огромное спасибо
  25. Т.е создать сегмент по фиксированному адресу в заголовке приложения? А как линкеру то сказать, чтоб он положил именно адрес CRC, а не величину?
×
×
  • Создать...