Гость voffka_rostov Опубликовано 28 Марта, 2016 в 08:12 Жалоба Поделиться Опубликовано 28 Марта, 2016 в 08:12 ...Прикольно, ловит даже УКВ станции, хотя по даташиту заявлена поддержка только от 76 МГц. Это в режиме TEA? потому что в режиме RDA он работает от 50мГц В схемах включения предлагается ввести L3 C3, "первичный фильтр" который только "обозначит" диапазон приёма. Стоит такой фильтр, чуть чище ловит Ссылка на комментарий Поделиться на другие сайты Поделиться
Yamazaki Опубликовано 28 Марта, 2016 в 08:36 Автор Жалоба Поделиться Опубликовано 28 Марта, 2016 в 08:36 (изменено) ... Это в режиме TEA? потому что в режиме RDA он работает от 50мГц ... Да, в режиме TEA. В обычном режиме не пробовал, т.к. в режиме совместимости все гуд, ну зачем мешать ей работать. У вас наверно модуль на микросхеме с другой буквой. Для RDA5807P нижняя граница по даташиту заявлена 76МГц (японский диапазон) Изменено 28 Марта, 2016 в 08:37 пользователем yamazaki Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость voffka_rostov Опубликовано 28 Марта, 2016 в 08:40 Жалоба Поделиться Опубликовано 28 Марта, 2016 в 08:40 ... У вас наверно модуль на микросхеме с другой буквой ... Да, у меня M и FP... Я думал они все от 50мГц... Ссылка на комментарий Поделиться на другие сайты Поделиться
Allroy Опубликовано 8 Апреля, 2016 в 20:54 Жалоба Поделиться Опубликовано 8 Апреля, 2016 в 20:54 Сергей, нужна помощь. На макетке собрал схему используя atmega 328p. Атмеге8 у меня нет. В программе microPaskal выставил в проекте Atmega328p, и при компиляции выдает ошибку И еще, у меня индикатор с общим катодом. Ссылка на комментарий Поделиться на другие сайты Поделиться
Yamazaki Опубликовано 8 Апреля, 2016 в 21:55 Автор Жалоба Поделиться Опубликовано 8 Апреля, 2016 в 21:55 (изменено) GICR это регистр, в котором описываются настройки прерываний. GICR.6 := 1; //Разрешаем прерывания по INT0 GICR.7 := 1; //Разрешаем прерывания по INT1 У атмега328 по всей видимости этот регистр как-то иначе называется. Если вы поищите описания прерываний именно этой модели контроллера, обязательно найдёте нужную информацию. Хорошо ещё, что компилятор сам знает адреса векторов прерываний у разных контроллеров, иначе портирование под другую модель было бы гораздо геморройнее. Вообще mega328 сложнее в плане прерываний, чем mega8, у ней кроме прерываний по int0 и int1 на 3 и 4 ногах есть прерывания pcint** (1-23) на всех ногах портов. Вот что о них пишут: PCINTx-прерывания обслуживают сразу целый порт, поэтому в обработчике необходимо смотреть на записанное и текущее состояние выводов и выискивать, какой же из пинов изменил свое состояние (и в какую сторону). Ну а потом уже решать, реагировать ли на это изменение или проигнорировать.Вот, например, у ATMega328 есть три соответствующих вектора обработки прерываний PCINT: 4-й (PCINT0_vect), 5-й (PCINT0_vec1) и 6-й (PCINT2_vect). 4-й вектор обслуживает ноги PCINT7...0 (порт B), 5-й - PCINT8...14 (порт C - в нем только 7 выводов), 6-й - PCINT16...23 (порт D). INTx слушает один-единственный вывод и может настраиваться на тип происходящего на нем изменения уровня. Стало быть, более оперативно реагирует на дергание соответствующей ножки. И еще, у меня индикатор с общим катодом. В составе микропаскаль есть утилита, которая вычисляет коды символов 7сегментного индикатора для обоих вариантов, воспользуйтесь ей. Коды символов было бы наглянее представить в двоичном виде. Восемь сегментов, восемь бит. Каждая единица в соответствующем разряде включает соответствующий сегмент. Значит можно просто взять код символа в двоичном виде и нули заменить на единицы, а единицы на нули. PORTC:=%0000000; PORTC.1:=1; PORTB:=DIGIT(A3) and %01111111; Delay_ms(5); Вот на эту строчку обратите внимание. Операцией and мы записываем нолик в самый старший бит, а остальные биты не трогаем. Этот бит включает точку на индикаторе. В вашем случае надо сделать наоборот, записать в самый старший бит единицу, а остальные не трогать, это делается с помощью операции or PORTB:=DIGIT(A3) or %10000000; Кусок кода, который загоняет коды символов в переменную с помощью оператора case, мне категорически не нравится. Очевидно, что достаточно загнать коды символов в массив и потом брать его из ячейки под соответствующим номером. Как дойдут руки, перепишу. Изменено 8 Апреля, 2016 в 22:53 пользователем yamazaki Ссылка на комментарий Поделиться на другие сайты Поделиться
erbol Опубликовано 9 Апреля, 2016 в 04:03 Жалоба Поделиться Опубликовано 9 Апреля, 2016 в 04:03 Александр, если кусочек кода с этим регистром выложите, могу попытаться помочь Имеется в виду GICR Ссылка на комментарий Поделиться на другие сайты Поделиться
Allroy Опубликовано 9 Апреля, 2016 в 04:08 Жалоба Поделиться Опубликовано 9 Апреля, 2016 в 04:08 Ербол, спасибо за предложение помощи, но это для меня вызов :biggrin: Буду переваривать, пищу для размышления мне дали. Если совсем никак, то буду просить помощь зала :sad: Ссылка на комментарий Поделиться на другие сайты Поделиться
erbol Опубликовано 9 Апреля, 2016 в 04:11 Жалоба Поделиться Опубликовано 9 Апреля, 2016 в 04:11 Удачи!) Ссылка на комментарий Поделиться на другие сайты Поделиться
Allroy Опубликовано 9 Апреля, 2016 в 04:42 Жалоба Поделиться Опубликовано 9 Апреля, 2016 в 04:42 (изменено) Так, скомпилировал, прошил, но циферки таки не кажет, значит не работает :biggrin: Вот участок кода который переделал: SREG.7 := 1; EIMSK.6 := 1; EIMSK.7 := 1; Еще раз проверю правильность соединения на макетке, но это чуть позже, я еще проснутся не успел, а полез МК прошивать) Изменено 9 Апреля, 2016 в 04:44 пользователем Allroy Ссылка на комментарий Поделиться на другие сайты Поделиться
Yamazaki Опубликовано 9 Апреля, 2016 в 05:05 Автор Жалоба Поделиться Опубликовано 9 Апреля, 2016 в 05:05 Александр, индикация это одно, а прерывания - совсем другое, они только кнопки обрабатывают. Вы всегда можете упростить программу донельзя, закомментировав все лишнее. Я когда взял тот пример, там наворочено было очень много всего, некоторые куски кода откровенно глючные, да и оно было под другую атмегу. В итоге всё пришлось с нуля переделать. Сначала отдельно код для индикатора, потом заливка конфига, потом обработка кнопок. По частям как-то удобнее все это для понимания. Ссылка на комментарий Поделиться на другие сайты Поделиться
erbol Опубликовано 9 Апреля, 2016 в 05:15 Жалоба Поделиться Опубликовано 9 Апреля, 2016 в 05:15 ... SREG.7 := 1; EIMSK.6 := 1; EIMSK.7 := 1 ... Биты 6, 7 регистра EIMSK зарезервированы и работать не могут Проект позволяет использовать пины PD2 или PD2? Они завязаны на прерывания INT0 и INT1 и код был бы чуть проще Если нет, то можно и так попробовать сделать) Ссылка на комментарий Поделиться на другие сайты Поделиться
Yamazaki Опубликовано 9 Апреля, 2016 в 05:34 Автор Жалоба Поделиться Опубликовано 9 Апреля, 2016 в 05:34 (изменено) Кнопки, кстати, это полный отстой. Перестроиться на 10 MГц при шаге 0,1 это сотня нажатий. Попробовал прицепить энкодер на шаговом двигателе от пятидюймового дисковода. Щщщикарно! Он очень быстрый и точный, перестроиться на нужную частоту очень легко. По сравнению со стареньким механическим энкодером проблем гораздо меньше, никакого дребезга, все четко и сверхнадёжно. Сплошной восторг. Он пока по упрощенному алгоритму работает, только каждый четвертый шаг видит. На практике так даже удобнее, но при смене направления вращения первый шаг не всегда корректно обрабатывается. Изменено 9 Апреля, 2016 в 08:51 пользователем yamazaki Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти