Мелкие вопросы по МК и ПЛИС.
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
по-моему, когда включен "внутренний источник с внешним конденсатором", то на этом самом внешнем конденсаторе (Vref) и будет то самое напряжение, что вам нужно.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
-
NebelWefer
- Грызет канифоль
- Сообщения: 274
- Зарегистрирован: Чт апр 16, 2009 14:23:59
Re: Мелкие вопросы по МК и ПЛИС.
насколько я понял из даташита, это справедливо только для источника 2.56В.
Для 1.1В нет варианта среди MUX битов выдернуть его на AREF
Код: Выделить всё
Internal 2.56V Voltage Reference with external bypass capacitor at
PB0 (AREF) pin(1).Для 1.1В нет варианта среди MUX битов выдернуть его на AREF
-
NebelWefer
- Грызет канифоль
- Сообщения: 274
- Зарегистрирован: Чт апр 16, 2009 14:23:59
Re: Мелкие вопросы по МК и ПЛИС.
[uquote="Самсусамыч",url="/forum/viewtopic.php?p=3902102#p3902102"]Про какой МК идёт речь?[/uquote]
тинька25
тинька25
-
Самсусамыч
Re: Мелкие вопросы по МК и ПЛИС.
The ADC converts an analog input voltage to a 10-bit digital value through successive approximation.
The minimum value represents GND and the maximum value represents the voltage on
VCC, the voltage on the AREF pin or an internal 1.1V / 2.56V voltage reference.
The voltage reference for the ADC may be selected by writing to the REFS2:0 bits in ADMUX.
The VCC supply, the AREF pin or an internal 1.1V / 2.56V voltage reference may be selected as
the ADC voltage reference. Optionally the internal 2.56V voltage reference may be decoupled
by an external capacitor at the AREF pin to improve noise immunity.
В даташите написано что REFS = 3 зарезервировано
А в АВ (Algorithm Builder) указано, что REFS = 3 подключает ИОН 1,1 В к Р0 (AREF)

Наверное в АВ ошибка…
-
Mr.Vasiliy
- Родился
- Сообщения: 3
- Зарегистрирован: Чт авг 04, 2016 17:37:44
Re: Мелкие вопросы по МК и ПЛИС.
Доброго всем дня
У нас на оборудование попала вода
После сушки, чистки солей, запустили, всё работает, но сие изделие стало греться.
Заказали снабжению, привезли (на фотографии справа)

Смущает что 3я строка отличается, предположение что это серийный номер.
В datasheet по чипу нет упоминания расшифровок строк.
Ещё не ставили на оборудование.
Кто либо с подобными чипами работал ?
С Уважением
У нас на оборудование попала вода
После сушки, чистки солей, запустили, всё работает, но сие изделие стало греться.
Заказали снабжению, привезли (на фотографии справа)

Смущает что 3я строка отличается, предположение что это серийный номер.
В datasheet по чипу нет упоминания расшифровок строк.
Ещё не ставили на оборудование.
Кто либо с подобными чипами работал ?
С Уважением
Re: Мелкие вопросы по МК и ПЛИС.
Mr.Vasiliy, не серийный номер, а скорее всего номер партии или код даты производства. Не заморачивайтесь, модель такая же.
-
Mr.Vasiliy
- Родился
- Сообщения: 3
- Зарегистрирован: Чт авг 04, 2016 17:37:44
Re: Мелкие вопросы по МК и ПЛИС.
[uquote="NStorm",url="/forum/viewtopic.php?p=3904036#p3904036"]Mr.Vasiliy, не серийный номер, а скорее всего номер партии или код даты производства. Не заморачивайтесь, модель такая же.[/uquote]
При много благодарен Вам за ответ!
При много благодарен Вам за ответ!
- КРАМ
- Друг Кота
- Сообщения: 25123
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: Мелкие вопросы по МК и ПЛИС.
[uquote="Mr.Vasiliy",url="/forum/viewtopic.php?p=3903966#p3903966"]Ещё не ставили на оборудование.[/uquote]
А у вас есть прошивка для него? У вас есть инструмент для его прошивки? Или чип поставил производитель оборудования?
А у вас есть прошивка для него? У вас есть инструмент для его прошивки? Или чип поставил производитель оборудования?
Re: Мелкие вопросы по МК и ПЛИС.
КРАМ, это ROMless МК. Прошивка на внешней памяти.
Re: Мелкие вопросы по МК и ПЛИС.
Ваяю симисторный регулятор мощности для ТЭНа на ATMega32A. Индикация на семисегментном индикаторе, измерение тока при помощи измерительного трансформатора тока и диференциальных входов АЦП меги. Меня смущает, не будет ли переключение выводов занятых семисегментным индикатором (не на PORTA) оказывать значительного влияния на АЦП? У AVR АЦП и так не очень.
По схеме и разводке вроде сделал что возможно: питание AVCC через LC фильтр, отдельная аналоговая земля, земляной полигон вокруг аналоговых цепей, отдельная микросхема ИОН.
Не слишком хочется ставить 74HC595 или использовать индикатор другого типа.
По схеме и разводке вроде сделал что возможно: питание AVCC через LC фильтр, отдельная аналоговая земля, земляной полигон вокруг аналоговых цепей, отдельная микросхема ИОН.
Не слишком хочется ставить 74HC595 или использовать индикатор другого типа.
- Gudd-Head
- Друг Кота
- Сообщения: 20091
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: Мелкие вопросы по МК и ПЛИС.
[uquote="FeCat",url="/forum/viewtopic.php?p=3953805#p3953805"]не будет ли переключение выводов занятых семисегментным индикатором (не на PORTA) оказывать значительного влияния на АЦП?[/uquote]
Что мешает отключать индикацию на время преобразования?
Что мешает отключать индикацию на время преобразования?
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Re: Мелкие вопросы по МК и ПЛИС.
[uquote="Gudd-Head",url="/forum/viewtopic.php?p=3955568#p3955568"]Что мешает отключать индикацию на время преобразования?[/uquote]
Не хочется никакого мерцания. По сути так и сделал.
Для измерения действующего (среднеквадратичного) тока, надо делать множество выборок, по факту АЦП молотит без остановки. Весь ногодрыг сделал после перехода сетевого напряжения через ноль, и до включения симистора. Все полученные значения АЦП за это время можно смело не учитывать, ведь по факту ток в нагрузку не течёт, разве что последнее значение АЦП перед включением симистора можно использовать для контроля исправности симистора.
Судя по расчётам, момент включения симистора после пересечения сетевого наряжения через ноль, для 99% мощности наступает через 1,31мС. Этого более чем достаточно для всего ногодрыга и математики.
Всё таки сделал с 74HC595, и максимально разделил питание МК, аналоговой части и индикации.
Не хочется никакого мерцания. По сути так и сделал.
Для измерения действующего (среднеквадратичного) тока, надо делать множество выборок, по факту АЦП молотит без остановки. Весь ногодрыг сделал после перехода сетевого напряжения через ноль, и до включения симистора. Все полученные значения АЦП за это время можно смело не учитывать, ведь по факту ток в нагрузку не течёт, разве что последнее значение АЦП перед включением симистора можно использовать для контроля исправности симистора.
Судя по расчётам, момент включения симистора после пересечения сетевого наряжения через ноль, для 99% мощности наступает через 1,31мС. Этого более чем достаточно для всего ногодрыга и математики.
Всё таки сделал с 74HC595, и максимально разделил питание МК, аналоговой части и индикации.
- Эйлер Леонард
- Встал на лапы
- Сообщения: 104
- Зарегистрирован: Пн ноя 04, 2019 09:58:29
- Откуда: г. Нижний Тагил Свердл. обл.
Re: Мелкие вопросы по МК и ПЛИС.
Доброго времени суток. Пытаюсь откомпилировать фрагмент кода. Код на Си с асемблерными вставкам. Среда разработки AtmelStudio. Функция, один из аргументов - пин микроконтроллера.
// digitalWrite(PB0, 1);
void [color=#FF0000]digitalWrite(uint8_t pin, uint8_t val){
...
asm volatile("sbi %0, %1" :: "I"(_SFR_IO_ADDR(PORTB)), "I" (pin));// PB0
...
}[/color]
Компилируется с ошибкой. Переводя текст ошибки с английского на руссий "Не понимаю что такое pin"
и еще перевод "Ошибка невозможного ограничения в 'asm' "
Вопрос - как аргумент функции передать в асемблерный код? Если поставить напрямую PB0 в код, то компилируется, 0...7 тоже компилируется.
// digitalWrite(PB0, 1);
void [color=#FF0000]digitalWrite(uint8_t pin, uint8_t val){
...
asm volatile("sbi %0, %1" :: "I"(_SFR_IO_ADDR(PORTB)), "I" (pin));// PB0
...
}[/color]
Компилируется с ошибкой. Переводя текст ошибки с английского на руссий "Не понимаю что такое pin"
и еще перевод "Ошибка невозможного ограничения в 'asm' "
Вопрос - как аргумент функции передать в асемблерный код? Если поставить напрямую PB0 в код, то компилируется, 0...7 тоже компилируется.
- Эйлер Леонард
- Встал на лапы
- Сообщения: 104
- Зарегистрирован: Пн ноя 04, 2019 09:58:29
- Откуда: г. Нижний Тагил Свердл. обл.
Re: Мелкие вопросы по МК и ПЛИС.
Пробовал так
uint8_t const _pin = pin;
asm volatile("sbi %0, %1" :: "I"(_SFR_IO_ADDR(PORTB)), "I" (_pin));
Не фурычит. Компилятор не проверяет асемблерный код.
(ошибка,предупреждение) asm operand 1 probably doesn't match constraints
Это он(компилятор) жалуется то что стоит после ограничителя. Ограничитель это "I", который находится в диапазоне 0-63.
А уменя тут uint8_t который 0-255. Все правильно. Мне стала понятна природа ошибки. С асемблером только начинаю дружить.
Добавлено after 9 minutes 58 seconds:
Попробую заключить аргумент PIN в структуру и выделить ему три бита.
Добавлено after 5 hours 15 minutes 27 seconds:
конструкция
где постоянной _pin выделено 3 бита(0...7) и присвоено значение из аргумента функции pin всё равно не работает,
asm volatile("sbi %0, %1" :: "I"(_SFR_IO_ADDR(PORTB)), "I" (pinName._pin2) );
т.к. на этапе компиляции значение pin все равно не известно. А по сему компилятор и выдает сообщение "хз, что ты там втетерил". Но как только я задаю значение pin явно, хоть uint32_t _pin2 = 5; Ошибок компиляции нет. Ставил в код ассемблера ограничитель"М"(0...255) вместо "I"(0...63) Все равно не работает. Вывод - значение pin должно быть известно до компиляции. Но у меня код ассемблера в функции. А в функции значения аргументов заранее не известны (на то она и функция). Т.е. на драной козе пока не подъехать.
uint8_t const _pin = pin;
asm volatile("sbi %0, %1" :: "I"(_SFR_IO_ADDR(PORTB)), "I" (_pin));
Не фурычит. Компилятор не проверяет асемблерный код.
(ошибка,предупреждение) asm operand 1 probably doesn't match constraints
Это он(компилятор) жалуется то что стоит после ограничителя. Ограничитель это "I", который находится в диапазоне 0-63.
А уменя тут uint8_t который 0-255. Все правильно. Мне стала понятна природа ошибки. С асемблером только начинаю дружить.
Добавлено after 9 minutes 58 seconds:
Попробую заключить аргумент PIN в структуру и выделить ему три бита.
Добавлено after 5 hours 15 minutes 27 seconds:
конструкция
Код: Выделить всё
struct PinName {
const uint8_t _pin :3; // 0...7
} pinName = { pin };где постоянной _pin выделено 3 бита(0...7) и присвоено значение из аргумента функции pin всё равно не работает,
asm volatile("sbi %0, %1" :: "I"(_SFR_IO_ADDR(PORTB)), "I" (pinName._pin2) );
т.к. на этапе компиляции значение pin все равно не известно. А по сему компилятор и выдает сообщение "хз, что ты там втетерил". Но как только я задаю значение pin явно, хоть uint32_t _pin2 = 5; Ошибок компиляции нет. Ставил в код ассемблера ограничитель"М"(0...255) вместо "I"(0...63) Все равно не работает. Вывод - значение pin должно быть известно до компиляции. Но у меня код ассемблера в функции. А в функции значения аргументов заранее не известны (на то она и функция). Т.е. на драной козе пока не подъехать.
Re: Мелкие вопросы по МК и ПЛИС.
[uquote="Эйлер Леонард",url="/forum/viewtopic.php?p=3965269#p3965269"]и еще перевод "Ошибка невозможного ограничения в 'asm' "
Вопрос - как аргумент функции передать в асемблерный код? Если поставить напрямую PB0 в код, то компилируется, 0...7 тоже компилируется.[/uquote]
Номер пина - это константа прошитая в инструкции SBI, а аргумент функции - это не константа времени компиляции. Можно или макрос использовать или на C++ передавать номер пина в качестве шаблонного параметра.
Вопрос - как аргумент функции передать в асемблерный код? Если поставить напрямую PB0 в код, то компилируется, 0...7 тоже компилируется.[/uquote]
Номер пина - это константа прошитая в инструкции SBI, а аргумент функции - это не константа времени компиляции. Можно или макрос использовать или на C++ передавать номер пина в качестве шаблонного параметра.
- Эйлер Леонард
- Встал на лапы
- Сообщения: 104
- Зарегистрирован: Пн ноя 04, 2019 09:58:29
- Откуда: г. Нижний Тагил Свердл. обл.
Re: Мелкие вопросы по МК и ПЛИС.
Уважаемые коты - это мой первый опыт на ассемблере, пытаюсь сделать некоторые ардуиновские функции для голого МК (ATtiny напр.). digitalWrite, digitalRead, pinMode ну и пр. ( на Си сделал, работает. слишком просто и не интересно )
Re: Мелкие вопросы по МК и ПЛИС.
[uquote="Эйлер Леонард",url="/forum/viewtopic.php?p=3965539#p3965539"]( на Си сделал, работает. слишком просто и не интересно )[/uquote]
Самый оптимизированный код сейчас генерит C++, там можно сказать компилятору, что вот тебе 5 экранов кода, все посчитай и верни константу времени компиляции... Но по мнению многих получается наоборот слишком сложно
В любом случае ардуино явно не лучший пример для подражания...
Самый оптимизированный код сейчас генерит C++, там можно сказать компилятору, что вот тебе 5 экранов кода, все посчитай и верни константу времени компиляции... Но по мнению многих получается наоборот слишком сложно
- Эйлер Леонард
- Встал на лапы
- Сообщения: 104
- Зарегистрирован: Пн ноя 04, 2019 09:58:29
- Откуда: г. Нижний Тагил Свердл. обл.
Re: Мелкие вопросы по МК и ПЛИС.
О макросах. http://we.easyelectronics.ru/AVR/assemb ... r-gcc.html На этом форуме есть в обсуждениях полезные макросы на ASM. Установка бита, сброс бита...(полистать несколько экранов вниз). Однако как говорил наш командир роты. Макрос, это макрос. А функция, это функция.
Добавлено after 3 minutes 40 seconds:
А вот как раз я и ненавижу Ардуино. (Но это так по секрету всему свету)
Добавлено after 3 minutes 40 seconds:
А вот как раз я и ненавижу Ардуино. (Но это так по секрету всему свету)