Мелкие вопросы по МК и ПЛИС.

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 183
Зарегистрирован: Вт сен 14, 2010 23:07:10
Откуда: Ростов

Сообщение baron_P »

[uquote="NStorm",url="/forum/viewtopic.php?p=3891068#p3891068"]Что, даже на ввод новых значений не реагирует?
Ну попробуйте в порядке эксперимента после ch= Serial.read(); дописать еще Serial.flush();. Хотя бы новые символы после этого должны вводиться. Если не будут - проблема в железе какая-то значит.[/uquote]
Не, символы изначально вводятся нормально. Проблема в том, что они не сохраняются после отключения питания. Т.е. я подключаю плату к USB, включаю монитор в среде Arduino и вижу пустые строки в выводе. Ввожу, например, r. Теперь выводит r с переходом на новую строку. Если сделать перезапуск контроллера кнопкой на плате, после включения выводится опять r. А если отключить питание и опять включить его, то выводятся пустые строки. Почему не сохраняются значения, вот в чем вопрос.
We do what we must because we can (c) GLaDOS
Реклама
Поставщик валерьянки для Кота
Сообщения: 1978
Зарегистрирован: Ср июл 17, 2013 13:55:57

Сообщение NStorm »

А писали "чтобы я туда не писал".
Они сохраняются. Просто перезаписываются. У вас же любой новый символ пришедший сразу же перезаписывает предыдущий.
Сделайте так:

Код: Выделить всё

#include <EEPROM.h>

int addr = 0;
char ch;

void setup() {
  Serial.begin(9600);
  ch = EEPROM.read(addr);
  Serial.flush();
}

void loop() {
  Serial.println(ch);
  delay(1000);
  if (Serial.available() > 0) {
    ch = Serial.read();
    EEPROM.write(addr, ch);
    Serial.println(ch);
  }
}
И увидите, что всё сохраняется.
Реклама
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 183
Зарегистрирован: Вт сен 14, 2010 23:07:10
Откуда: Ростов

Сообщение baron_P »

[uquote="NStorm",url="/forum/viewtopic.php?p=3891096#p3891096"]А писали "чтобы я туда не писал".
Они сохраняются. Просто перезаписываются. У вас же любой новый символ пришедший сразу же перезаписывает предыдущий.
Сделайте так:
И увидите, что всё сохраняется.[/uquote]
Извините за долгий ответ, на выходных не до того было.
Увы, нет, ничего не сохранилось, после отключения питания все равно выводятся пустые строки, пока я не введу что-нибудь. Может быть, есть какие-то особенности работы с Nano относительно Uno, о которой речь идет в книге? Или более новая версия IDE как-то не так работает? Не понимаю, почему ни один пример работы с EEPROM не работает в плане сохранения значений при отключении питания.

UPD
Нашел у себя в закромах еще одну Nano-платку и, внезапно, на ней все сохраняется. Работает даже исходный вариант без flush. Видимо, платка физически глючная, оттуда и проблемы. Спасибо за помощь.
We do what we must because we can (c) GLaDOS
Грызет канифоль
Сообщения: 274
Зарегистрирован: Чт апр 16, 2009 14:23:59

Сообщение NebelWefer »

Товарищи подскажите:
Есть ли способ измерить Bandgap voltage у мк кроме расчетного? Стандартный допуск 1.0-1.2В может существенно влиять на показания АЦП. Или только на практике выводить значение АЦП, измерять напряжение мультиметром и высчитывать и запоминать значение для каждого мк?
Реклама
Эиком - электронные компоненты и радиодетали
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18787
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

по-моему, когда включен "внутренний источник с внешним конденсатором", то на этом самом внешнем конденсаторе (Vref) и будет то самое напряжение, что вам нужно.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Реклама
Грызет канифоль
Сообщения: 274
Зарегистрирован: Чт апр 16, 2009 14:23:59

Сообщение NebelWefer »

насколько я понял из даташита, это справедливо только для источника 2.56В.

Код: Выделить всё

Internal 2.56V Voltage Reference with external bypass capacitor at
PB0 (AREF) pin(1).
Для 1.1В нет варианта среди MUX битов выдернуть его на AREF
Реклама
Самсусамыч

Сообщение Самсусамыч »

Про какой МК идёт речь?
Грызет канифоль
Сообщения: 274
Зарегистрирован: Чт апр 16, 2009 14:23:59

Сообщение NebelWefer »

[uquote="Самсусамыч",url="/forum/viewtopic.php?p=3902102#p3902102"]Про какой МК идёт речь?[/uquote]
тинька25
Самсусамыч

Сообщение Самсусамыч »

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 зарезервировано
1.png
А в АВ (Algorithm Builder) указано, что REFS = 3 подключает ИОН 1,1 В к Р0 (AREF) :dont_know:
Наверное в АВ ошибка…
Родился
Сообщения: 3
Зарегистрирован: Чт авг 04, 2016 17:37:44

Сообщение Mr.Vasiliy »

Доброго всем дня

У нас на оборудование попала вода
После сушки, чистки солей, запустили, всё работает, но сие изделие стало греться.

Заказали снабжению, привезли (на фотографии справа)
Изображение

Смущает что 3я строка отличается, предположение что это серийный номер.
В datasheet по чипу нет упоминания расшифровок строк.
Ещё не ставили на оборудование.

Кто либо с подобными чипами работал ?

С Уважением
Поставщик валерьянки для Кота
Сообщения: 1978
Зарегистрирован: Ср июл 17, 2013 13:55:57

Сообщение NStorm »

Mr.Vasiliy, не серийный номер, а скорее всего номер партии или код даты производства. Не заморачивайтесь, модель такая же.
Родился
Сообщения: 3
Зарегистрирован: Чт авг 04, 2016 17:37:44

Сообщение Mr.Vasiliy »

[uquote="NStorm",url="/forum/viewtopic.php?p=3904036#p3904036"]Mr.Vasiliy, не серийный номер, а скорее всего номер партии или код даты производства. Не заморачивайтесь, модель такая же.[/uquote]

При много благодарен Вам за ответ!
Друг Кота
Аватара пользователя
Сообщения: 25862
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

[uquote="Mr.Vasiliy",url="/forum/viewtopic.php?p=3903966#p3903966"]Ещё не ставили на оборудование.[/uquote]
А у вас есть прошивка для него? У вас есть инструмент для его прошивки? Или чип поставил производитель оборудования?
Поставщик валерьянки для Кота
Сообщения: 1978
Зарегистрирован: Ср июл 17, 2013 13:55:57

Сообщение NStorm »

КРАМ, это ROMless МК. Прошивка на внешней памяти.
Прорезались зубы
Аватара пользователя
Сообщения: 211
Зарегистрирован: Пт окт 21, 2011 14:39:31

Сообщение FeCat »

Ваяю симисторный регулятор мощности для ТЭНа на ATMega32A. Индикация на семисегментном индикаторе, измерение тока при помощи измерительного трансформатора тока и диференциальных входов АЦП меги. Меня смущает, не будет ли переключение выводов занятых семисегментным индикатором (не на PORTA) оказывать значительного влияния на АЦП? У AVR АЦП и так не очень.
По схеме и разводке вроде сделал что возможно: питание AVCC через LC фильтр, отдельная аналоговая земля, земляной полигон вокруг аналоговых цепей, отдельная микросхема ИОН.
Не слишком хочется ставить 74HC595 или использовать индикатор другого типа.
Друг Кота
Аватара пользователя
Сообщения: 20117
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Сообщение Gudd-Head »

[uquote="FeCat",url="/forum/viewtopic.php?p=3953805#p3953805"]не будет ли переключение выводов занятых семисегментным индикатором (не на PORTA) оказывать значительного влияния на АЦП?[/uquote]
Что мешает отключать индикацию на время преобразования?
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Прорезались зубы
Аватара пользователя
Сообщения: 211
Зарегистрирован: Пт окт 21, 2011 14:39:31

Сообщение FeCat »

[uquote="Gudd-Head",url="/forum/viewtopic.php?p=3955568#p3955568"]Что мешает отключать индикацию на время преобразования?[/uquote]
Не хочется никакого мерцания. По сути так и сделал.
Для измерения действующего (среднеквадратичного) тока, надо делать множество выборок, по факту АЦП молотит без остановки. Весь ногодрыг сделал после перехода сетевого напряжения через ноль, и до включения симистора. Все полученные значения АЦП за это время можно смело не учитывать, ведь по факту ток в нагрузку не течёт, разве что последнее значение АЦП перед включением симистора можно использовать для контроля исправности симистора.
Судя по расчётам, момент включения симистора после пересечения сетевого наряжения через ноль, для 99% мощности наступает через 1,31мС. Этого более чем достаточно для всего ногодрыга и математики.
Всё таки сделал с 74HC595, и максимально разделил питание МК, аналоговой части и индикации.
Встал на лапы
Аватара пользователя
Сообщения: 104
Зарегистрирован: Пн ноя 04, 2019 09:58:29
Откуда: г. Нижний Тагил Свердл. обл.

Сообщение Эйлер Леонард »

Доброго времени суток. Пытаюсь откомпилировать фрагмент кода. Код на Си с асемблерными вставкам. Среда разработки AtmelStudio. Функция, один из аргументов - пин микроконтроллера.
// digitalWrite(PB0, 1);
void digitalWrite(uint8_t pin, uint8_t val){
...
asm volatile("sbi %0, %1" :: "I"(_SFR_IO_ADDR(PORTB)), "I" (pin));// PB0
...
}

Компилируется с ошибкой. Переводя текст ошибки с английского на руссий "Не понимаю что такое pin"
и еще перевод "Ошибка невозможного ограничения в 'asm' "
Вопрос - как аргумент функции передать в асемблерный код? Если поставить напрямую PB0 в код, то компилируется, 0...7 тоже компилируется.
Мудрый кот
Сообщения: 1759
Зарегистрирован: Пт июн 01, 2018 07:28:45

Сообщение parovoZZ »

а если

Код: Выделить всё

const uint8_t pin
?
Встал на лапы
Аватара пользователя
Сообщения: 104
Зарегистрирован: Пн ноя 04, 2019 09:58:29
Откуда: г. Нижний Тагил Свердл. обл.

Сообщение Эйлер Леонард »

Пробовал так
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 должно быть известно до компиляции. Но у меня код ассемблера в функции. А в функции значения аргументов заранее не известны (на то она и функция). Т.е. на драной козе пока не подъехать.
Ответить

Вернуться в «Разные вопросы по МК»