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

adnega

Свой
  • Постов

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

  • Посещение

  • Победитель дней

    3

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


  1. Компилируется даже без предупреждений. Единственное, в {} не должно быть i++. Лучше new_i++, а в самом конце i = new_i. Иначе автомат выстрелит очередью.
  2. Так получится? int j = 0; if(0){} else if((j++) && (i == j)) { // do 1 i++; } else if((j++) && (i == j)) { // do 2 i++; } ... else if((j++) && (i == j)) { // do N i++; } #define NEXT else if((j++) && (i==j)) if(0){} NEXT { } NEXT { }
  3. Приближаю еще сильнее (не забываем, что это все фрагменты самой первой осциллограммы). Большинство цифровых осциллографов имеют возможность установки аккумулятора.
  4. Например, высота экрана моего осциллографа 120мм (а это очень много!). При 8 битах это 256 уровней, что дает нам размер одного уровня менее 0.5мм. Не понимаю, что там (в 0.5мм) можно рассмотреть в аналоге? В аналоге, по-моему, главное преимущество не разрешение, а: 1. Частота кадров 2. Послесвечение. Но в цифровике можно делать так: захватываем интересный (непериодический) кусок -> приближаем интересный кусок.
  5. Прошу скинуть ТЗ на adnega(a)mail.ru
  6. Довольно борзо для человека, не знакомого с УК РФ: Так обидишь модератора - а он сообщит куда надо ))
  7. Сейчас не получается воссоздать ошибку. Раньше точно помню, что замыкал MISO на 3.3В и получал 0xFE. Допускаю: 1. тогда я где-то нокосячил; 2. сейчас использую простой проект (LTDC, SDRAM, SPIx), а тогда - куча SPI (кнопки и светодиоды на сдвиговых регистрах, цифровой микрофон, I2S-кодек), таймеры (DS18B20, импульсы тестирования усилителей), UART (GSM, console), SDIO (uSD-карта), I2C (радио RDA5807). Все это густо разбавлено DMA.
  8. Короче, проверил все с SPI1 по SPI5. Ошибка, увы, не воспроизводится. Читаю-пишу так BYTE spi_send_byte(const BYTE data) { BYTE spib; while((SPI3->SR & (1 << SPI_SR_TXE)) == 0); SPI3->DR = data; while((SPI3->SR & (1 << SPI_SR_RXNE)) == 0); spib = SPI3->DR; return spib; } Вопрос определений. Под "резистором 0 Ом" можно понимать: перемычку, резистор, кусок провода, печатную дорожку и т.п. Я покупаю такие; в счете написано "резисторы".
  9. Короче, пытаюсь воспроизвести ошибку - не получается. Перепробовал SPI1, SPI4, SPI5. Точные номер SPI и номера пинов не помню. Хотел же тогда на электроникс запостить, но поленился описывать глюк. Итого: ошибку воспроизвести не могу; если кто сообщит номер SPI и номера пинов (и каналов DMA опционально), то могу попробовать на макете.
  10. Давно то было. Допускаю, что примерно так было //--------------------------------------------------------------------------- // LED & BUTTON //--------------------------------------------------------------------------- SPI_NSS_bit = 1; for(i = 0; i < 3; i++) __NOP(); SPI_OE_bit = 0; SPI_NSS_bit = 0; SPI2->CR2 = (0 << SPI_CR2_RXNEIE) | (0 << SPI_CR2_TXDMAEN) | (0 << SPI_CR2_RXDMAEN) | (1 << SPI_CR2_SSOE); DMA1_Stream4->CR = (0 << DMA_SCR_PL) | (0 << DMA_SCR_CHSEL) | (1 << DMA_SCR_MINC) | (1 << DMA_SCR_DIR) | (0 << DMA_SCR_EN); DMA1_Stream3->CR = (0 << DMA_SCR_PL) | (0 << DMA_SCR_CHSEL) | (1 << DMA_SCR_MINC) | (0 << DMA_SCR_DIR) | (0 << DMA_SCR_EN); DMA1->LIFCR = (0x3D << 22); DMA1->HIFCR = (0x3D << 0); for(i = 0; i < 10; i++) __NOP(); DMA1_Stream3->PAR = (DWORD)&SPI2->DR; DMA1_Stream3->M0AR = (DWORD)spi_rx; DMA1_Stream3->NDTR = SPI_SIZE; DMA1_Stream3->CR = (0 << DMA_SCR_PL) | (0 << DMA_SCR_CHSEL) | (1 << DMA_SCR_MINC) | (0 << DMA_SCR_DIR) | (1 << DMA_SCR_EN); DMA1_Stream4->PAR = (DWORD)&SPI2->DR; DMA1_Stream4->M0AR = (DWORD)spi_tx; DMA1_Stream4->NDTR = SPI_SIZE; DMA1_Stream4->CR = (0 << DMA_SCR_PL) | (0 << DMA_SCR_CHSEL) | (1 << DMA_SCR_MINC) | (1 << DMA_SCR_DIR) | (1 << DMA_SCR_EN); for(i = 0; i < 10; i++) __NOP(); SPI2->CR2 = (0 << SPI_CR2_RXNEIE) | (1 << SPI_CR2_TXDMAEN) | (1 << SPI_CR2_RXDMAEN) | (1 << SPI_CR2_SSOE); Это рабочий код, т.к. использует SPI2 и DMA1. Нерабочий был, вроде, на SPI4 и DMA2. Отправка работала корректно, а прием 2 байт давал нулевой младший бит (вроде только в первом принимаемом байте, а не в каждом).
  11. Я особо и не копал. Посмотрел эррату, Интернет - все тихо. Значит проблема у меня. Решил ее по-другому - без копания и костылей. Сейчас оказывается, что не только у меня. Посмотрим на решение. Была бы у вас stm32f429i-disco, могли бы сами проверить и предложить решение.
  12. Дык, это была всего-лишь иллюстрация странного поведения. Затем русским-по-белому говорилось о жесткой единице. Подтверждаю, что сам сталкивался на stm32f429i-disco с аналогичной ситуацией. Сначала получал от слейва левый "нолик", затем довел ситуацию до предела - подключил MISO к 3.3В, а считывалось 0xFE. Перешел на другой порт и другие пины - и слейв прекрасно заработал. В эррате не нашел сей глюк, для себя отметил, может, экземпляр МК с дефектом. Похоже, что нет.
  13. С чего вы вообще взяли некое устройство? В #7 и #15 сообщениях сказано "на MISO жестко стоит единица".
  14. На пине микроконтроллера с AF SPI_MISO логическая единица, а приемник стабильно принимает байт с нулем в младшем разряде. Чего еще не понятно? Нигде этого не читал, сам с этим столкнулся и долго бодался. Было на каком-то SPI, на каком-то пине, (подробностей не помню, т.к. 2 года прошло) перешел на другие пины и другой номер SPI - чудеса пропали.
  15. На выводе MISO лог 1, которая получается подключением к шине 3.3В. В регистре данных SPI принимаем 0xFE, т.е. младший бит равен нулю. Откуда?
  16. Дык, вам же говорят, что висит резистор. Ноль ом.
  17. Хоть бы в эррате упомянули.
  18. Я довольно быстро сделал WiFi-CAN на основе ESP8266 (модуль ESP-01) и STM32. Гонять маленькие кадры CAN по Ethernet/WiFi не очень, т.к. возникают вопросы с буферизацией, таймаутами. Но мой протокол CAN не особо к этому чувствителен. Если интересно - могу безвозмездно поделиться. Планирую в будущем сделать проект WiFi-CAN свободным.
  19. Видел такое, вроде, на SPI4 на PE2-PE6.
  20. Разумеется, делать молотилку чисел на 51-ядре в 2016 году глупо. Но бывают некоторые аппаратные мега-решения, где нужно изначально как-то что-то проинициализировать, т.е. тупо записать-прочитать несколько 8-битных регистров. Вот сюда можно и нужно внедрить 51-ядро.
  21. При таких запросах радио подойдет. Но надежнее и проще проводного решения нет и не будет.
  22. А спец-микросхема biss0001 не такая уж и дорогая.
  23. Отечественный ARM

    В первую очередь нужна документация. Хорошая документация. Cortex-M4F он и в Африке... Для елочных гирлянд не годится, а для серьезной аппаратуры последний год наблюдаю осторожную потребность иметь аналог на отечественной комплектухе. Вот бы ПЛИС уровня EPM3032 отечественную поиметь...
  24. Отечественный ARM

    ST не везде разрешат впихнуть. Больше волнует вопрос наличия и качества документации. Есть ссылочка на документацию? Сейчас делаем на миландровском K1986BE92QI, но как-то быстро таймеры закончились. Да и по функционалу таймеры там не ахти в сравнении с тем же ST. В качестве замены я бы с удовольствием рассмотрел кандидата.
×
×
  • Создать...