Мелкие вопросы по МК и ПЛИС.
- Реклама
- Сообщения: 219
- Зарегистрирован: Вт мар 12, 2013 16:05:45
Помимо этого ATmega также соединена по I2C с другим микроконтроллером, у которого напряжение питания тоже 5В.
Резистор + стабилитрон в самом простом варианте. На линии от контроллера к декодеру. Линии от декодера - напрямую. Там-же нет двунаправленных линий.
Или транслятор уровней сгородить на полевиках или микрухе от Техаса (классные, но шибко мелкие).
Или транслятор уровней сгородить на полевиках или микрухе от Техаса (классные, но шибко мелкие).
Ох уж эти сказки...
Ох уж эти сказочники...
Ох уж эти сказочники...
Ну и что? Запитайте интерфейсные резисторы от +3,5V и проследите за тем, чтобы выполнялось требование стандарта IIC, а именно лог.0 передается замыканием линии на 0, а лог.1 - отпусканием линии, т.е. переводом передатчика в Z-состояние.service47 писал(а):Помимо этого ATmega также соединена по I2C с другим микроконтроллером, у которого напряжение питания тоже 5В.
- Сообщения: 219
- Зарегистрирован: Вт мар 12, 2013 16:05:45
Будет ли работать I2C если от микроконтроллера с 5В напряжения питания соединить через два резистора с ATmega88, запитанную от 3.5В.
Тут пишут:
http://we.easyelectronics.ru/Shematech/ ... oystv.html
что можно с полевым транзистором соединить по IIC два микроконтроллера. Как правильно это сделать и какой транзистор лучше применить.
И еще ATmega88 соединена по IIC с предусилителем на TDA7469 c напряжением питания 5В. Значит схема на полевых транзисторах получиться сдвоенной. От одного микроконтроллера с 5В с подтягивающими резисторами, через полевые транзисторы, снова подтягивающие резисторы, но к 3,5В и ко входу IIC ATmega88, затем с этих же входов снова на другие полевые транзисторы, после них подтягивающие резисторы к 5В и на вход IIC TDA7469.
Подходит ли для этих целей BSN20:
http://www.nxp.com/documents/data_sheet/BSN20.pdf
Тут пишут:
http://we.easyelectronics.ru/Shematech/ ... oystv.html
что можно с полевым транзистором соединить по IIC два микроконтроллера. Как правильно это сделать и какой транзистор лучше применить.
И еще ATmega88 соединена по IIC с предусилителем на TDA7469 c напряжением питания 5В. Значит схема на полевых транзисторах получиться сдвоенной. От одного микроконтроллера с 5В с подтягивающими резисторами, через полевые транзисторы, снова подтягивающие резисторы, но к 3,5В и ко входу IIC ATmega88, затем с этих же входов снова на другие полевые транзисторы, после них подтягивающие резисторы к 5В и на вход IIC TDA7469.
Подходит ли для этих целей BSN20:
http://www.nxp.com/documents/data_sheet/BSN20.pdf
- Реклама
- Сообщения: 126
- Зарегистрирован: Пн окт 13, 2014 09:31:45
Котаны, такой вопрос. Есть микроконтроллер. Будем считать что пожирнее, из STM32. К нему подходят две линии с изменяющимися лог.сигналами, единичками и нулями. Линии эти он опрашивает, с частотой 2,4МГц каждую. Т.е. имеем поток в 4,8МБит/сек некоторых данных. И необходимо сохранить их на SD карточку. Как это правильно сделать? Чтоб потом можно было к этим данным обратиться как к файлу некоторой программой с ПК.
Я праильно понимаю, что в буффере надо накапливать пачку из 512 бит и писать такими кусками? А сам файл какого типа взять? ТХТ? BIN? Или ещё какие варианты есть? Какие могут возникнуть тонкости?
Я праильно понимаю, что в буффере надо накапливать пачку из 512 бит и писать такими кусками? А сам файл какого типа взять? ТХТ? BIN? Или ещё какие варианты есть? Какие могут возникнуть тонкости?
- Сообщения: 219
- Зарегистрирован: Вт мар 12, 2013 16:05:45
Если ATmega16 запитана от 3,5В и к ней подключен разъем USB (к INT0, INT1 через резисторы 68 Ом D+ и D-) на 5В, как согласовать уровни напряжений.
Здрасьте всем.
Мучаю АЦП STM32F030. Что то не получается считать последовательно два канала АЦП (IN_8, IN_9). Перевёл чтение в функции, которые вызываю вручную и получаю в переменных ADC936 и ADCPOT одинаково изменяющиеся значения (Переменный резистор на IN_9).
Вроде бы выборку канала делаю функцией ADC_ChannelConfig(). Функции ADC_Cmd(ADC1,ENABLE) и DISABLE применил на всякий случай.
{
/* Convert the ADC1 Channel 8 and 9 with 28.5 Cycles as sampling time */
ADC_ChannelConfig(ADC1, ADC_Channel_9, ADC_SampleTime_239_5Cycles);
ADC_Cmd(ADC1,ENABLE);
ADC_StartOfConversion(ADC1);
while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC));
ADCPOT = ADC_GetConversionValue(ADC1);
ADC_StopOfConversion(ADC1);
ADC_Cmd(ADC1,DISABLE);
return;
}
void ADC_936()
{
ADC_ChannelConfig(ADC1, ADC_Channel_8, ADC_SampleTime_239_5Cycles);
ADC_Cmd(ADC1,ENABLE);
ADC_StartOfConversion(ADC1);
while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC));
ADC936 = ADC_GetConversionValue(ADC1);
ADC_StopOfConversion(ADC1);
ADC_Cmd(ADC1,DISABLE);
return;
}
Где я ошибся или что не увидел?
Мучаю АЦП STM32F030. Что то не получается считать последовательно два канала АЦП (IN_8, IN_9). Перевёл чтение в функции, которые вызываю вручную и получаю в переменных ADC936 и ADCPOT одинаково изменяющиеся значения (Переменный резистор на IN_9).
Вроде бы выборку канала делаю функцией ADC_ChannelConfig(). Функции ADC_Cmd(ADC1,ENABLE) и DISABLE применил на всякий случай.
Спойлер
void ADC_POT(){
/* Convert the ADC1 Channel 8 and 9 with 28.5 Cycles as sampling time */
ADC_ChannelConfig(ADC1, ADC_Channel_9, ADC_SampleTime_239_5Cycles);
ADC_Cmd(ADC1,ENABLE);
ADC_StartOfConversion(ADC1);
while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC));
ADCPOT = ADC_GetConversionValue(ADC1);
ADC_StopOfConversion(ADC1);
ADC_Cmd(ADC1,DISABLE);
return;
}
void ADC_936()
{
ADC_ChannelConfig(ADC1, ADC_Channel_8, ADC_SampleTime_239_5Cycles);
ADC_Cmd(ADC1,ENABLE);
ADC_StartOfConversion(ADC1);
while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC));
ADC936 = ADC_GetConversionValue(ADC1);
ADC_StopOfConversion(ADC1);
ADC_Cmd(ADC1,DISABLE);
return;
}
Насколько понял, для измерения по двум каналам и более нужно настраивать АЦП, указывая количество каналов и включив сканирование по списку.
P.S. ну или попробуйте отключать ацп после каждого измерения.
Здесь есть оба варианта и Ваша проблема
P.S. ну или попробуйте отключать ацп после каждого измерения.
Здесь есть оба варианта и Ваша проблема
Спасибо.
Кто нибудь пользовался OpenSTM32?
Я скачал, поставил. Но что то не могу открыть проект из Cube, посмотреть.

Пункты меню неактивные. Обновления какие то среда сама закачала и установила.
Кто нибудь пользовался OpenSTM32?
Я скачал, поставил. Но что то не могу открыть проект из Cube, посмотреть.

Пункты меню неактивные. Обновления какие то среда сама закачала и установила.
- Сообщения: 126
- Зарегистрирован: Пн окт 13, 2014 09:31:45
Можно не согласовывать, так как МК нормально поймет 5-ти вольтовые сигналы, а если МкК захочет лог 1 дать, то 3,5 входит в диапазон для лог 1 (более 2,5 В). Если уж совсем не в моготу, можно согласовать с помощью транзисторных ключей.service47 писал(а):Если ATmega16 запитана от 3,5В и к ней подключен разъем USB (к INT0, INT1 через резисторы 68 Ом D+ и D-) на 5В, как согласовать уровни напряжений.
(как на картинке, только используйте n-канальные транзисторы (серия даже есть IRLML).
- Сообщения: 219
- Зарегистрирован: Вт мар 12, 2013 16:05:45
Для V-USB требуется тактовая частота микроконтроллера от 12 МГц и более. Используется ATmega16A, запитанная от 3.5В. Будет ли стабильно работать чтение данных из USB.
- Сообщения: 5
- Зарегистрирован: Вт апр 26, 2016 16:18:29
Товарищи, подскажите , что за чип такой ST 1825-0057 и с чем его едят. Чип установлен на маленькой плате для обработки данных с картриджа принтера HP. Мне нужно снять с него дамп.
Даже если Вы бы знали какой это контроллер, то и в этом случае Вы бы его не прочитали. У микросхем подобного назначения прошивки всегда залочены.xxx2142 писал(а):Мне нужно снять с него дамп.
Скорее всего, это какой нибудь STM32F0 с заказной прошивкой. Причем с высокой степенью вероятности еще и масочной.
Нашёл в stm32f0xx.h следующее выражение:
ADC_CCR_VBATEN
В описании регистра CCR что то такого не нашёл. Это для чего?
ADC_CCR_VBATEN
В описании регистра CCR что то такого не нашёл. Это для чего?
Есть мнение, что это КОНСТАНТА...
И ее значение в хедере откомментировано:
И ее значение в хедере откомментировано:
Код: Выделить всё
#define ADC_CCR_VBATEN ((uint32_t)0x01000000) /*!< Voltage battery enable */- Сообщения: 616
- Зарегистрирован: Вс ноя 01, 2015 13:13:49
RM0091
Код: Выделить всё
Bit 24 VBATEN: VBAT enable
This bit is set and cleared by software to enable/disable the VBAT channel.
0: VBAT channel disabled
1: VBAT channel enabled
Note:Software is allowed to write this bit only when ADSTART=0 (which ensures that no conversion is ongoing).
Всем привет. Такая ситуация. Спрашиваю датчик на i2c в тупом цикле, все норм. Как только начинаю опрашивать его через таймер, то чтение встает на месте. Частоту таймера уже до герца снизил.
Stm32f3 discovery. L3gd20
Stm32f3 discovery. L3gd20
Еще вопрос: как передать по UART число с точкой, чтобы можно было принять на компьютере в терминале без проблем?
P.S. с предыдущим вопросом разобрался. Там таймер с измерениями стартовал раньше инициализации периферии.
P.S. с предыдущим вопросом разобрался. Там таймер с измерениями стартовал раньше инициализации периферии.




