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

proton8489

Members
  • Постов

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

  • Посещение

Информация

  • Пол
    Мужчина
  • Город
    Санкт-Петербург

Электроника

  • Стаж в электронике
    6-10 лет
  • Сфера радиоэлектроники
    Цифровые устройства

Достижения proton8489

Новичок

Новичок (1/14)

  • 10 постов на форуме
  • Неделя на форуме
  • Месяц на форуме
  • Год на форуме
  • 10 лет  на форуме

Последние значки

2

Репутация

  1. Линия нужная для передачи данных (десятки килобайт) чем чаще, тем лучше. Да.. выбор скоростью не блещет. Но всё же, в приведённой ссылке в описании Манчестер-II сказано о тестировании на определённых кабелях, но не сказано, как на том конце сигнал принимался. Понятное дело, что сигнал будет гаситься, но на километре это лишь 8дБ. В общем надежду пока не теряю, но желаемых схемотехнических решений пока не нашёл. Может всё же у кого-нибудь есть соображения на этот счёт?
  2. Трансформатор RM5 с обмотками по 600 мкГн, по словам изготовителя хорош в диапазоне 30 кГц...3 МГц. Скорость не получится из-за затухания колебаний? ОУ не решит эту проблему? Или на приёме совсем хлам будет?
  3. Да, наличие трансформатора обязательно. Хочется общую схему на почти любых транзисторах и операционниках, лишь бы обеспечивалась скорость скажем 115200 бод. Дальность связи в идеале чем больше, тем лучше, но хотя бы 1км.
  4. Со строчками-то всё понятно, если на входе1 лог. "1", то она же и на выходе2 и наоборот, если на входе2 лог. "1", то она и на выходе1. А вот по поводу "Дифсистемы" хотелось бы больше ясностей, как я уже писал, у меня трансформатор, а не прямая связь, кодировать сигнал буду с помощью Manchester II. В интернете блок-схемы, теория о телефонной связи (мол абонент сам себя не слышит, звуковые колебания во всей последовательной сети абонентов), но это всё не нужно. Пока из всего увиденного составил такую схему, правда на кажется сплошным недостатком устройства.
  5. Этобомба! ))) Спасибо, для эксперимента вначале сам себе этот камень заложил, а по невнимательности каждый раз спотыкаюсь.
  6. И снова здравствуйте. Я за это время подрос в stm32 и даже узнал, что существует специальное прерывание NMI_Handler, которое вызывается, если HSE отваливается. PLL давно в строю, но заметил одну особенность, а скорее баг. MCO должен выдавать частоту проца/2. Я делаю 8*9/1, по идее на MCO должно быть 36 МГц, но там 18, святой осцил не даст соврать. Подскажите, что не так? frec.c
  7. У меня точно такой же код и в отладчике всё было с регистрами нормально, кроме захода в само прерывание. Но проблема решена. Оказывается надо было подключить к проекту файл стартапа (список векторов прерываний), который сам ни через что не цепляется.
  8. Ну неужели никто не знает и не подскажет? Проблема точно не аппаратная, контакт есть, а реакции на него нет.
  9. Господа, имею следующий код (а он имеет меня), который вообще никак не заметен микроконтроллером (stm32f103rb, stm32f103c8). Подавая сигналы "0" или "1" на входы прерывания не выполняются. Пробовал вызывать внутреннее прерывание, но попытки были бессмысленны. Что здесь не так? void NVIC_InputInit(void) { RCC->APB2ENR |= RCC_APB2ENR_AFIOEN | RCC_APB2ENR_IOPCEN; // Тактирование альтернативных функций и порта PIO_INIT_PIN(GPIOC,6,Input_Floating); // PС6,7 на вход PIO_INIT_PIN(GPIOC,7,Input_Floating); PIO_INIT_PIN(GPIOC,10,Output2_Push_Pull); // PС10,11 на выход PIO_INIT_PIN(GPIOC,11,Output2_Push_Pull); AFIO->EXTICR[1] |= AFIO_EXTICR2_EXTI6_PC | AFIO_EXTICR2_EXTI7_PC; // Настройка порта и выбор пинов для прерывания EXTI->IMR |= EXTI_IMR_MR6 | EXTI_IMR_MR7; // Разрешаем генерацию прерывания в периферии EXTI->RTSR |= EXTI_RTSR_TR6 | EXTI_RTSR_TR7; // Настроим прерывание на детектирование обоих фронтов EXTI->FTSR |= EXTI_FTSR_TR6 | EXTI_FTSR_TR7; // у двух входов //EXTI->EMR |= EXTI_EMR_MR6; //Разрешение возобновления при внешних событиях // Разрешаем прерывания //uint32_t prioritygroup = NVIC_GetPriorityGrouping(); //uint32_t priority = NVIC_EncodePriority(prioritygroup, 1, 0 ); //NVIC_SetPriority(EXTI9_5_IRQn, priority); NVIC_EnableIRQ(EXTI9_5_IRQn); // Разрешаем глобальные прерывания __enable_irq(); //EXTI->SWIER |= EXTI_IMR_MR7; // Внутреннее прерывание } void EXTI9_5_IRQHandler(void) { if (EXTI->PR & (1<<6)) //проверяем прерывание от EXTI6 { EXTI->PR |= (1<<6); //EXTI->PR |= EXTI_PR_PR6; //сброс флага прерывания PIO_RESET(GPIOC,11); } // if ((EXTI->PR & EXTI_PR_PR7) == EXTI_PR_PR7) if (EXTI->PR & (1<<7)) //проверяем прерывание от EXTI6 { EXTI->PR |= (1<<7); //EXTI->PR |= EXTI_PR_PR7; //сброс флага прерывания PIO_RESET(GPIOC,10); } }
  10. Хорошо, допустим. Тогда вопрос такой: я устанавливаю некую частоту МК через PLL, как мне убедиться в том, что она к примеру 72МГц, а не 24, совсем никак?
  11. Возможно и никак, но согласно документации это значение обновляется с помощью функции SystemCoreClockUpdate при изменении частоты тактирования МК.
  12. Дорогие гуру, прошу помощи в освоении SystemCoreClock. Как я понимаю это некая функци в STM32, которая возвращает значение установившейся частоты микроконроллера. Но при прямом использовании IAR ругается на то, что эта функция не объявлена. Конечно можно использовать SPL, но мне крайне необходима максимальная скорость и микрозадержки, поэтому хочется получать значение частоты без SPL и HAL. Спасибо за любую наводку.
×
×
  • Создать...