© Альберт Эйнштейн
Мелкие вопросы по МК и ПЛИС.
Всем привет! Хочу К155ИД3 подружить с STM32F100. Дешифратор ТТЛ, питание (по справочнику) 5 В. Контроллер 3.3 В. Не хочется отдельно стабилизатор ставить на 5В ради одной микросхемы. Будет ли работать К155ИД3 от 3,3 В?
Теория — это когда все известно, но ничего не работает. Практика — это когда все работает, но никто не знает почему. Мы же объединяем теорию и практику: ничего не работает… и никто не знает почему!
© Альберт Эйнштейн
© Альберт Эйнштейн
- Реклама
ТТЛ этой серии строго на 5В по справочнику. Может конечно и сможет, но... Напряжения никто не регламентировал ему в таком режиме. Ни по входам, ни по выходим. Так что попробуйте на макете, а там уж как повезёт.
Вам бы вообще КМОП микросхемы. Типа 561 серии, или 1564...
Вам бы вообще КМОП микросхемы. Типа 561 серии, или 1564...
Ставите на каждом входе ИД3 подключенном к МК по обычному ключу (биполярному или полевому) с питанием ключа от 5 вольт и получаете инвертированные сигналы на входах ИД3. Надеюсь программно обеспечить инверсию на выходах МК для Вас проблем не составит.Chip115 писал(а):Хочу К155ИД3 подружить с STM32F100.
ЗЫ. Правда все это как то бестолково...
Спасибо за ответы! ))
Да, бестолково. Но эта микра у меня тупо есть в наличии.
Да, бестолково. Но эта микра у меня тупо есть в наличии.
Теория — это когда все известно, но ничего не работает. Практика — это когда все работает, но никто не знает почему. Мы же объединяем теорию и практику: ничего не работает… и никто не знает почему!
© Альберт Эйнштейн
© Альберт Эйнштейн
- Реклама
- Сообщения: 219
- Зарегистрирован: Вт мар 12, 2013 16:05:45
При симуляции в протеусе с одного микроконтроллера пересылаются байты на другой. Первые два байта совпадают, то что помещено в регистр TWDR, то же самое и поступает на второй регистр TWDR, а вот третий байт пересылается 0х22, а принимается 0х45. Получается, что то что помещено в регистр передается по проводкам и поступает в регистр 2-го микроконтроллера, но там уже вместо 0х22 величина 0х45.
А как ведут себя четвёртый и пятый? А если пересылать по два байта, с паузами?
- Сообщения: 219
- Зарегистрирован: Вт мар 12, 2013 16:05:45
Всего 4 байта пересылается. Сначала байт адреса, затем команды записи, а после данные. Что интересно так это то, что 0х45 если смотреть в двоичном коде так это те же 0х22 только смещенные на один бит влево. Пример программы используется Атмелевский. В протеусе так:
S 10 A 10 A 22 N 08 A 84 A 42 A 21 A 10 N ...
10 - адрес
10 - команда записи
22 - данные
а вот тут должно быть 0х33.
Затем повтор.
S 10 A 10 A 22 N 08 A 84 A 42 A 21 A 10 N ...
10 - адрес
10 - команда записи
22 - данные
а вот тут должно быть 0х33.
Затем повтор.
- Сообщения: 47
- Зарегистрирован: Вт авг 31, 2010 18:26:35
помогите решить задачку:
есть несколько микроконтроллеров и все они занимаются одним и тем же
синхронно включают и гасят диод
они могут быть объединены с одним мастером и периодически должны работать автономно (так что каждый должен тактироваться от своего источника)
Вопрос:как сделать так чтобы мастер периодически синхронизировал роботу.
при этом необходимо выявить устройство которое явно выбивается из частоты
то есть мастер получает числа от устройств
10
9
11
45
как найти того кто явно спешит
есть несколько микроконтроллеров и все они занимаются одним и тем же
синхронно включают и гасят диод
они могут быть объединены с одним мастером и периодически должны работать автономно (так что каждый должен тактироваться от своего источника)
Вопрос:как сделать так чтобы мастер периодически синхронизировал роботу.
при этом необходимо выявить устройство которое явно выбивается из частоты
то есть мастер получает числа от устройств
10
9
11
45
как найти того кто явно спешит
Подать групповую команду сброс.
Большой и жирный +.
Docendo discimus
Мастер только высылает команду/код синхронизации.
Каждый из периферийных контроллеров самостоятельно решает - применить или нет (в зависимости от текущего положентия программы).

Каждый из периферийных контроллеров самостоятельно решает - применить или нет (в зависимости от текущего положентия программы).
Делаю в DipTrace плату, смутило обозначение ноги 19 у STM32F207:

Vdd_12 - это просто позиция Vdd под номером 12 или выведен внутренний источник 1,2 В? В RM0033 и datasheet на него ничего похожего нет. В CubeMX также обозначен просто как Vdd - надо полагать что это обычная питающая нога?

Vdd_12 - это просто позиция Vdd под номером 12 или выведен внутренний источник 1,2 В? В RM0033 и datasheet на него ничего похожего нет. В CubeMX также обозначен просто как Vdd - надо полагать что это обычная питающая нога?
Ребята, извините за может дурной вопрос, в мк не очень силен.
Не получается у меня прошить Attiny13 в смд корпусе. Программатор USBASP, сто процентов рабочий, Atmega8 шьется без проблем. Но тинька вообще никак. И перемычку на программаторе ставил для низкой частоты, все равно. Выдает ошибку.
Вот что меня еще тревожит. Мегу я шью в отладочной плате, а тиньку просто на переходнике, сделанном специально для soic8 корпусов. Не нужна ли обвязка на тиньку, на Reset к примеру. Может в этом дело?
Система стоит Виндовс 8.
Не получается у меня прошить Attiny13 в смд корпусе. Программатор USBASP, сто процентов рабочий, Atmega8 шьется без проблем. Но тинька вообще никак. И перемычку на программаторе ставил для низкой частоты, все равно. Выдает ошибку.
Вот что меня еще тревожит. Мегу я шью в отладочной плате, а тиньку просто на переходнике, сделанном специально для soic8 корпусов. Не нужна ли обвязка на тиньку, на Reset к примеру. Может в этом дело?
Система стоит Виндовс 8.
А в Тиньке что раньше было? Если она Б/У и работала с внешним тактовым сигналом, то без него её прошить не выйдет, т. к. AVRы требуют работы тактового генератора при программировании. Вспоминайте где взяли. Если же Тиня новая, то по умолчанию там стоит внутренний RC на 9,6МГц и она без проблем шьется "прям так".
Reset я обычно подтягиваю к +5В резистором 10 кОм. Непомню, есть ли внутри подтяжка, но попробуйте для начала поставить резистор.
Да, а керамический кондер 0,1 мкФ по питанию на ногах Тини стоит? Это еще одна причина! Он обязателен. А лучше поставить 0,1 мкФ керамика || 10 мкФ тантал/электролит.
Проверьте правильно ли подключили MISO, MOSI, SCK, RESET? Не перепутали местами MISO и MOSI?
Reset я обычно подтягиваю к +5В резистором 10 кОм. Непомню, есть ли внутри подтяжка, но попробуйте для начала поставить резистор.
Да, а керамический кондер 0,1 мкФ по питанию на ногах Тини стоит? Это еще одна причина! Он обязателен. А лучше поставить 0,1 мкФ керамика || 10 мкФ тантал/электролит.
Проверьте правильно ли подключили MISO, MOSI, SCK, RESET? Не перепутали местами MISO и MOSI?
Тинька новая, с магазина только. Распиновку сто раз проверил, прозванивал от программатора к самой тиньке.
Вот не по питанию ни на Reset ничего нет, может и правда тут причина. Питание на тиньку подается с программатора.
Вот не по питанию ни на Reset ничего нет, может и правда тут причина. Питание на тиньку подается с программатора.
Хвост от программатора длинный. Без кондера - нельзя! Сделайте как я сказа, должно получиться. Ну если только Тиня не "фуфло" и пустая внутри, как иногда бывает в современном мире...
Все, заработала! Поставил кондер 0.1 мкф по питанию и подтянул Reset через 10кОм к плюсу. Но скорее всего был плохой контакт с тинькой, потому как она просто лежала на дорожках переходника.
Начал только осваивать MK AVR, поэтому будет возможно глупый вопрос по UART.
Почему перед тем как писать данные в регистр UDR (чтобы передать) их нужно предварительно обработать функциями?
Причем для строк это одна функция а для числового типа другая. Если не обработать то даже компилировать откажется, не говоря уже о работоспособности.
Не хочется терять в быстродействии из за функций
И еще вопросик. Насколько будет быстрым этот код?
Почему перед тем как писать данные в регистр UDR (чтобы передать) их нужно предварительно обработать функциями?
Причем для строк это одна функция а для числового типа другая. Если не обработать то даже компилировать откажется, не говоря уже о работоспособности.
Не хочется терять в быстродействии из за функций
И еще вопросик. Насколько будет быстрым этот код?
Спойлер
Код: Выделить всё
void send_Uart(unsigned char c)// Отправка байта
{
while(!(UCSRA&(1< <UDRE))) // Устанавливается, когда регистр свободен
{}
UDR = c;
}
void send_Uart_str(unsigned char *s)// Отправка строки
{
while (*s != 0) send_Uart(*s++);
}
void send_int_Uart(unsigned int c)// Отправка числа от 0000 до 9999
{
unsigned char temp;
c=c%10000;
temp=c/100;
send_Uart(temp/10+'0');
send_Uart(temp%10+'0');
temp=c%100;;
send_Uart(temp/10+'0');
send_Uart(temp%10+'0');
}во-первых, USART передаст ровно те данные, что вы запишите в UDR. если вы сумеете передать нужные вам данные без "функций" - пожалуйста, передавайте.hosturik писал(а):Почему перед тем как писать данные в регистр UDR (чтобы передать) их нужно предварительно обработать функциями?
Причем для строк это одна функция а для числового типа другая. Если не обработать то даже компилировать откажется, не говоря уже о работоспособности.
во-вторых, компилировать откажется, если в программе будут ошибки, обработка функциями или отсутствие таковой на это никак не влияет.
скорость передачи байта будет определяющим фактором для работы скорости работы этого кода, т.к. всякий раз будет происходить ожидание конца передачи байта. т.е. время на передачу информации есть произведение количества байт на время передачи одного байта. скорость исполнения остальной части будет многократно выше и существенного влияния на общую скорость работы не окажет.hosturik писал(а):Насколько будет быстрым этот код?
P.S. функции используют для того, чтобы было удобнее работать с данными. поэтому без них вряд ли получится обойтись...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!




