|
|
  |
Silabs C8051F120 |
|
|
|
May 20 2015, 04:30
|
Частый гость
 
Группа: Участник
Сообщений: 107
Регистрация: 10-03-07
Из: Уфа
Пользователь №: 26 030

|
Сейчас изучаю примеры из папки Examples для C8051F120. Есть пример для компаратора. Но в этом примере происходит проверка флагов состояния. Я же планировал вывести сигнал с выхода компаратора на ножку МК. В документации на C8051F120 указано, что можно это сделать. Но, то ли я чего-то пропустил, то ли в документации что-то не так, точнее в переводе даташита. Вообщем не получаю на выводе Р0.0 низкий уровень сигнала (выход открытый сток) при различных комбинациях на входе компаратора 0. В документации на C8051F320 было указано что-то о необходимости настройки вывода Р0.0 (на который подключается выход компаратоа) таким образом, чтобы матрица его игнорировала: что то с регистром SKIP... Если мало информации, могу выложить код, скриншоты с настройками. Подскажите, пожалуйста, как настроить МК, чтобы вывести сигнал с компаратора "наружу".
|
|
|
|
|
May 20 2015, 08:12
|
Местный
  
Группа: Участник
Сообщений: 356
Регистрация: 9-06-07
Пользователь №: 28 315

|
Цитата Вообщем не получаю на выводе Р0.0 низкий уровень сигнала (выход открытый сток) Если снаружи притяжки в + нет то ничего не увидите. Либо резистор снаружи, либо притянуть внутри.
--------------------
Хорошую систему делают из стандартных блоков нестандартно мыслящие инженеры.
|
|
|
|
|
May 20 2015, 08:22
|
Частый гость
 
Группа: Участник
Сообщений: 107
Регистрация: 10-03-07
Из: Уфа
Пользователь №: 26 030

|
Цитата(редактор @ May 20 2015, 13:12)  Если снаружи притяжки в + нет то ничего не увидите. Либо резистор снаружи, либо притянуть внутри. Там есть внутренняя подтяжка к плюсу питания: на выходе 3,3В. На выход подключил светодиод. Анод светодиода через резистор подключен к плюсу питания.
|
|
|
|
|
May 20 2015, 10:30
|

unexpected token
   
Группа: Свой
Сообщений: 899
Регистрация: 31-08-06
Из: Мехелен, Брюссель
Пользователь №: 19 987

|
Цитата(Radik2 @ May 20 2015, 06:30)  в переводе даташита Мой совет - читайте оригинал на английском. Если проблемы с языком, выписывайте новые слова в тетрадочку, а напротив пишите перевод на русский (для перевода можно исп. он-лайн Lingvo), так лучше запоминается. Цитата(Radik2 @ May 20 2015, 06:30)  В документации на C8051F320 было указано что-то о необходимости настройки вывода Р0.0 (на который подключается выход компаратоа) таким образом, чтобы матрица его игнорировала: что то с регистром SKIP... Crossbar декодер должен быть настроен правильно. Есть супер-удобное средство для настройки кросс-бара в пару кликов в родной студии от Силабс. Для Вашего МК это 8-bit Microcontroller Studio, конфигуратор можно скачать и отдельным компонентом. Там выберите настройки компараторов, портов и crossbar decoder и в результате получите значения, которые нужно записать в соотв. регистры при конфигурировании кроссбара, воткнете эти строчки в свой код. Если к выводу с открытым стоком подключен СД, то надо убедиться, что вывод потянет втекающий ток через СД (зависит от Вашего СД и токоограничительного резистора), смотрите токовые свойства портов в datasheet.
--------------------
А у тебя SQUID, и значит, мы умрем.
|
|
|
|
|
May 20 2015, 10:45
|
Частый гость
 
Группа: Участник
Сообщений: 107
Регистрация: 10-03-07
Из: Уфа
Пользователь №: 26 030

|
Цитата(alexunder @ May 20 2015, 15:30)  Crossbar декодер должен быть настроен правильно. Есть супер-удобное средство для настройки кросс-бара в пару кликов в родной студии от Силабс. Для Вашего МК это 8-bit Microcontroller Studio, конфигуратор можно скачать и отдельным компонентом. Там выберите настройки компараторов, портов и crossbar decoder и в результате получите значения, которые нужно записать в соотв. регистры при конфигурировании кроссбара, воткнете эти строчки в свой код. Если к выводу с открытым стоком подключен СД, то надо убедиться, что вывод потянет втекающий ток через СД (зависит от Вашего СД и токоограничительного резистора), смотрите токовые свойства портов в datasheet. я использовал для настройки кроссбара ПО Configuration Wizard 2. Для понимания происходящего сравнивал результаты с даташитом. Цитата(alexunder @ May 20 2015, 15:30)  Если к выводу с открытым стоком подключен СД, то надо убедиться, что вывод потянет втекающий ток через СД (зависит от Вашего СД и токоограничительного резистора), смотрите токовые свойства портов в datasheet. Ток нагрузки в районе 1 миллиампера. Проверю еще раз. Попробую мультиметром измерить, без подключения светодиода. Я думаю, что дело не в нагрузке на выходе. Проверю с компаратором 1. Главное, чтобы МК был исправен.
|
|
|
|
|
May 21 2015, 14:35
|
Частый гость
 
Группа: Участник
Сообщений: 107
Регистрация: 10-03-07
Из: Уфа
Пользователь №: 26 030

|
Цитата(alexunder @ May 21 2015, 12:06)  тогда надо убедиться что сам компаратор настроен правильно (порог срабатывания, знак). Вот скриншоты настроек
Эскизы прикрепленных изображений
 Уменьшено до 83%
1000 x 576 (36.59 килобайт)
|
 Уменьшено до 86%
1200 x 651 (30.15 килобайт)
|
|
|
|
|
|
May 22 2015, 04:03
|

unexpected token
   
Группа: Свой
Сообщений: 899
Регистрация: 31-08-06
Из: Мехелен, Брюссель
Пользователь №: 19 987

|
Цитата(Radik2 @ May 21 2015, 16:35)  Вот скриншоты настроек Лучше выставить один тип гистерезиса. Давайте файл кода сюда, посмотрим.
--------------------
А у тебя SQUID, и значит, мы умрем.
|
|
|
|
|
May 22 2015, 14:50
|
Частый гость
 
Группа: Участник
Сообщений: 107
Регистрация: 10-03-07
Из: Уфа
Пользователь №: 26 030

|
Цитата(alexunder @ May 22 2015, 09:03)  Лучше выставить один тип гистерезиса. Давайте файл кода сюда, посмотрим. Посмотрите, пожалуйста.
Сообщение отредактировал Radik2 - May 22 2015, 14:51
Прикрепленные файлы
Comp.zip ( 681 байт )
Кол-во скачиваний: 16
|
|
|
|
|
May 25 2015, 02:22
|
Частый гость
 
Группа: Участник
Сообщений: 107
Регистрация: 10-03-07
Из: Уфа
Пользователь №: 26 030

|
Цитата(alexunder @ May 23 2015, 02:51)  Это все? А где же main() и обработчик прерывания от компаратора? Сейчас речь идет не о программной обработке прерываний компаратора, а о применении встроенного в МК компаратора как отдельного узла/устройства. Начинаю с самых простых вещей в изучении данной линейки МК. Вот что написано в переводе даташита на C8051F120: "При помощи регистров управления матрицей на выводы портов могут быть выведены сигналы от встроенных таймеров/счетчиков, от последовательных интерфейсов, аппаратные прерывания, входной сигнал запуска АЦП, выходы компараторов и другие цифровые сигналы. Это позволяет пользователю выбрать точную комбинацию связей между портами ввода/вывода общего назначения и цифровыми ресурсами, необходимую для каждого конкретного приложения." То же самое в оригинальном даташите: "The on-chip counter/timers, serial buses, HW interrupts, ADC Start of Conversion inputs, comparator outputs, and other digital signals in the controller can be configured to appear on the Port I/O pins specified in the Crossbar Control registers. This allows the user to select the exact mix of general purpose Port I/O and digital resources needed for the particular application." Для работы компаратора даже тактирования не нужно. Вот еще перевод из даташита: "Входы каждого компаратора доступны как отдельные внешние выводы. Выходы компараторов можно соединить с внешними выводами с помощью матрицы. Выход каждого компаратора, соединенный с выводом корпуса, может быть настроен как выход с открытым стоком или как цифровой двухтактный выход."
|
|
|
|
|
May 25 2015, 11:15
|

unexpected token
   
Группа: Свой
Сообщений: 899
Регистрация: 31-08-06
Из: Мехелен, Брюссель
Пользователь №: 19 987

|
Цитата(Radik2 @ May 25 2015, 04:22)  Сейчас речь идет не о программной обработке прерываний компаратора, а о применении встроенного в МК компаратора как отдельного узла/устройства. Начинаю с самых простых вещей в изучении данной линейки МК. Зачем тогда включать прерывание от компаратора (видно из Вашей картинки), если нет обработчика прерывания? В таком случае по срабатыванию прерывания от компаратора будет переход в точку, где ожидается обработчик (точные адреса в ДЩ), и исполнение продолжится с этого места. У вас там не пойми что будет исполняться. Цитата(Radik2 @ May 25 2015, 04:22)  Для работы компаратора даже тактирования не нужно. это что-то новенькое. Сконфигурировать компаратор, кроссбар и пр, а потом отключить Fclk? Для чего? Цитата(Radik2 @ May 25 2015, 04:22)  Вот что написано в переводе даташита на C8051F120: Это все ясно, но к проблеме отношения не имеет никакого. В вашем коде нет main(), а значит, инициализация компаратора и прерываний из Comp.c не вызываются. Поэтому ничего и не работает.
--------------------
А у тебя SQUID, и значит, мы умрем.
|
|
|
|
|
May 25 2015, 11:32
|
Частый гость
 
Группа: Участник
Сообщений: 107
Регистрация: 10-03-07
Из: Уфа
Пользователь №: 26 030

|
Цитата(alexunder @ May 25 2015, 16:15)  Это все ясно, но к проблеме отношения не имеет никакого. В вашем коде нет main(), а значит, инициализация компаратора и прерываний из Comp.c не вызываются. Поэтому ничего и не работает. А каким образом все настроить, чтобы вывести сигнал с выхода компаратора на вывод МК без участия ядра МК? Добавить main и в ней прописать инициализацию?
Сообщение отредактировал Radik2 - May 25 2015, 11:34
|
|
|
|
|
May 25 2015, 12:13
|

unexpected token
   
Группа: Свой
Сообщений: 899
Регистрация: 31-08-06
Из: Мехелен, Брюссель
Пользователь №: 19 987

|
Цитата(Radik2 @ May 25 2015, 13:32)  А каким образом все настроить, чтобы вывести сигнал с выхода компаратора на вывод МК без участия ядра МК? Добавить main и в ней прописать инициализацию? да как у Вас (только прерывание не надо ставить), только сделать функцию main(), можно в отдельном файле. Посмотрите файл "F12x_UART0_Interrupt.c" в предыдущем проекте по UART, чтобы понять как пишутся программы на Си. Вот на базе этого файла я сделал главный (прицеплен), добавьте его в проект с comp.c
--------------------
А у тебя SQUID, и значит, мы умрем.
|
|
|
|
|
May 27 2015, 02:36
|
Частый гость
 
Группа: Участник
Сообщений: 107
Регистрация: 10-03-07
Из: Уфа
Пользователь №: 26 030

|
Цитата(alexunder @ May 25 2015, 17:13)  да как у Вас (только прерывание не надо ставить), только сделать функцию main(), можно в отдельном файле. Посмотрите файл "F12x_UART0_Interrupt.c" в предыдущем проекте по UART, чтобы понять как пишутся программы на Си. Вот на базе этого файла я сделал главный (прицеплен), добавьте его в проект с comp.c Спасибо. Пока что результат тот же: на выводе Р0.0 3,3В, не происходит изменения выходного сигнала с "1" на "0". Прогнал код в отладчике. Дошел до while (1). Как я понял, судя по значению бита CP0EN, компаратор не активировался. "Компаратор 0 включается установкой в 1 бита CP0EN и отключается сбросом в 0 этого бита." "Если компаратор отключен, то на его выходе (если он соединен с портом ввода/ вывода через матрицу) по умолчанию устанавливается напряжение низкого уровня, запрещается вызов прерываний от этого компаратора, а его ток потребления становится менее 0,1мкА." Если компаратор отключен, тогда почему на выходе Р0.0 3,3В. Возможно, что выход компаратора не соединен через матрицу с выводом МК. Я в ступоре.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|