Перейти к содержанию

Вопросы от начинающих по МК


Рекомендуемые сообщения

Добрый вечер! Возник ступор в коде.

Изначально было int speed=6 и одновременно все переключалось с необходимой скоростью. На схеме поменялась деталь и теперь необходимо что бы PORTB переключался с speed=6, а PORTD с speed=4. Что бы они одновременно переключались.

Как тут быть? Подскажите пожалуйста

PORTB=0b00000001;								  VDelay_ms(speed/2);
					  PORTD=0b10000000;	    VDelay_ms(speed/2);
PORTB=0b00000100;								  VDelay_ms(speed/2);
					 PORTD=0b00100000;	    VDelay_ms(speed/2);
PORTB=0b00000010;								 VDelay_ms(speed/2);
					 PORTD=0b01000000;	    VDelay_ms(speed/2);
PORTB=0b00001000;								  VDelay_ms(speed/2);
					  PORTD=0b00010000;	    VDelay_ms(speed/2);

Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

  • Ответов
  • Создана
  • Последний ответ

Топ авторов темы

Откуда чиселко, из документации? У меня работало на 1 мкс, но это экспериментальное значение, стабильность не проверялась.
Посмотрел вот даташит на индикатор, всё даже хуже - время исполнения простых инструкций - 38мкс, очистка дисплея - 1.52мс! Саму команду можно записать довольно быстро - требования к фронтам и длительностям управляющих импульсов - порядка сотен наносекунд, а вот дождаться исполнения команды - это уже гораздо дольше - те самые 38мкс на простейшую операцию, к примеру запись одного символа в память.

Эти задержки зависят от частоты тактирвоания самого индикатора, а там применён RC-генератор частота которого может сильно меняться с температурой и напряжением питания.

Учение - изучение правил. Опыт - изучение исключений.

Ссылка на комментарий
Поделиться на другие сайты

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

В 8-битном режиме можно использовать D7 как флаг готовности. Тогда плавание тактирования не помеха и быстродействие максимальное. А вот в 4-битном флаг работает?

Ссылка на комментарий
Поделиться на другие сайты

Hongfa для различных применений в Компэл. Большой выбор в наличии!

Компания HONGFA - это не только крупнейший в мире производитель электромеханических реле, но также производитель конденсаторов, вакуумных прерывателей, трансформаторов и низковольтного коммутационного оборудования. На складе КОМПЭЛ регулярно поддерживаются около 100 самых популярных позиций электромеханических реле. Реле Hongfa могут заместить многие изделия производства недоступных брендов. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Работает, конечно. Только считывать надо по два раза как это делается с записью.

Учение - изучение правил. Опыт - изучение исключений.

Ссылка на комментарий
Поделиться на другие сайты

Тренды и лучшие решения для разработки зарядных станций в России

К 2029 году в России прогнозируется увеличение числа зарядных станций до 40 000. При этом отечественный рынок электротранспорта имеет климатические, потребительские и географические особенности. Для успешной разработки и построения инфраструктуры станций заряда в России идеальным вариантом является использование решений и электронных компонентов китайских производителей – лидеров индустрии электротранспорта и возобновляемой энергетики, которые уже представлены в КОМПЭЛ. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Возник ступор в коде.

Ввести еще одну переменную, например speed1, присвоить значение 4 и ей управлять портом D.

Все можно наладить, если вертеть в руках достаточно долго!

Если ничто другое не помогает, прочтите, наконец, инструкцию!

Ссылка на комментарий
Поделиться на другие сайты

Секреты депассивации литиевых батареек FANSO EVE Energy

Самыми лучшими параметрами по энергоемкости, сроку хранения, температурному диапазону и номинальному напряжению обладают батарейки литий-тионилхлоридной электрохимической системы. Но при длительном хранении происходит процесс пассивации. Разберем в чем плюсы и минусы, как можно ее избежать или уменьшить последствия и как проводить депассивацию батареек на примере продукции и рекомендаций компании FANSO EVE Energy. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Простите что вмешиваюсь... У меня небольшой вопрос по поводу программатора для АВРок... С недавних пор перешел на заниженное питание своих поделок, а именно 3.3В. Мой программатор АВР-Допер Валит пять вольт. Можно ли программировать им внутрисхемно, если на плате есть компоненты, для которых такое напряжение губительно? Может как то на делителях прихимичить ISP ?

Хотя есть возможность прикупить

AVRISP mkII

Только я так и не понял, у него 3.3 вольт только для иксмег? Кто работал с таким программатором?? Объясните нетямущему.

А если на свой Допер, поставить линейник на 3.3? Он работать будет???

Изменено пользователем si4karuk
Ссылка на комментарий
Поделиться на другие сайты

В клоне AVR ISP MKII напряжение таргета выбирается отдельно от типа МК, т.е. можно преспокойно шить любой тип МК с любым питанием (3,3В или 5В).

Еще. С программатора можно питать целевой МК.

Изменено пользователем Геннадий
Ссылка на комментарий
Поделиться на другие сайты

да, с платы. запитывать естественно отдельно. от юсб питается другой узел.

это в оригинальном. в клоне не так, там можно питать плату от него.

Изменено пользователем __alexander
Ссылка на комментарий
Поделиться на другие сайты

Дороговат он, оригинал. :vava: А клон 250 грин в заводской платке :)

Многие, лепят сами. Я думаю, с таким делом, лучше не заморачиваться, просто купить готовый

Изменено пользователем si4karuk
Ссылка на комментарий
Поделиться на другие сайты

Подскажите где в АВР студио есть палочки для того чтобы написать логическое или?

Вот написал опрос кнопки по прерыванию таймера, только вот запуск работает нажимаю кнопку светики начинают мигать, а на жимаю второй раз на тактовую кнопку а светики не гаснут, может то что я время прерывания по таймеру с запятой прописал? Ещё такой факт когда нажимаю один раз светик первый включен второй выключен потом они меняются местами и пока второй раз на тактовую кнопку не нажмёшь то светики не начинают дальше мигать а как нажмёшть второй раз то мигают и всё и не выходят из цикла, в чём проблема?

#define F_CPU 1000000UL // Задание частоты кварца от которого зависят задержки
#include <avr/io.h> // Включение библиотеки для МК
#include <util/delay.h> // Включение библиотеки задержек
#include <avr/interrupt.h>

char i = PIND1;
int s = 0;
int main(void){


DDRC = 0xFF; // Настройка портов на вывод
DDRD = 0x0;
DDRB = 0xFF; // Настройка портов на ввод
while(1){

// Обработка прерываний
int (timer1_compa_isr);
{
s++; // увеличиваем переменную
if(s>0.20) // обнуляем
{
s=0;
}

TCNT1H=0;
TCNT1L=0;
}


TCCR1A=0x00;// восьмиразрядные регистры управления таймерами,
//A – Восьмиразрядный таймер-счетчик без дополнительных функций
TCCR1B=0x05;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x14; //РЕГИСТР СРАВНЕНИЯ для того, чтобы управлять коэффициентом пересчета счетчика(время через которое происходит прерывание)
OCR1AL=0x85;//РЕГИСТР СРАВНЕНИЯ для того, чтобы управлять коэффициентом пересчета счетчика

TIMSK=0x10; // настройка регистра прерывания


sei();
mesto_1: if (bit_is_set (PIND,PIND1)>0 && i<2) // Условие выполнения если пин В1 больше 0 то есть 1 значить выполнять,

{
_delay_ms(20); // Задержка от дребезга контактов
i+2;
while(2){ // бесконечный цикл

PORTB = 0x0; // Задание состояний выводов портов к которым подключены светодиоды
PORTC =0x2;
_delay_ms(2000); // Задержка 2с.
PORTB = 0x2; // Задание состояний выводов портов к которым подключены светодиоды
PORTC =0x0;
_delay_ms(2000); } }
else if(bit_is_set (PIND,PIND1)>1 )
{
_delay_ms(20);
while(3){
i=0;

PORTB = 0x0; // Задание состояний выводов портов к которым подключены светодиоды
PORTC = 0x0;
goto mesto_1; }}}}

Ссылка на комментарий
Поделиться на другие сайты

Вот написал опрос кнопки по прерыванию таймера
Где он ? В обработчике таймера какая-то ерунда что-то не совсем похожее на обработку кнопок.

И вот это:

if(s>0.20) // обнуляем

как можно понять, учитывая, что переменная имеет тип int ?

if(bit_is_set (PIND,PIND1)>1 )

У меня или дежавю, или действительно уже много раз Вам указывали на эту строку. Как значение бита может быть больше единицы ?

Вы хоть представляете вообще что пишете ?

Ссылка на комментарий
Поделиться на другие сайты

Чем не палочки? (X !! Y = 0)

Все можно наладить, если вертеть в руках достаточно долго!

Если ничто другое не помогает, прочтите, наконец, инструкцию!

Ссылка на комментарий
Поделиться на другие сайты

У меня или дежавю, или действительно уже много раз Вам указывали на эту строку. Как значение бита может быть больше единицы ?

Вы хоть представляете вообще что пишете ?

Пытаюсь разобраться, не может быть больше 1 так как есть только либо 0 либо 1( то есть либо ложно либо истинно), думаю так

Где он ? В обработчике таймера какая-то ерунда что-то не совсем похожее на обработку кнопок.

Ну как смог так и написал

как можно понять, учитывая, что переменная имеет тип int ?

А для значений с точкой нужно char применять?

Чем не палочки? (X !! Y = 0)

Так в СИ вроде восклицательный знак какое - то отрицание или я не прав, или если два восклицательных будет считаться как ИЛИ?

Ссылка на комментарий
Поделиться на другие сайты

думаю так
Не "думаю", а так и есть.
Ну как смог так и написал
Дак там вообще нет ничего, связанного с кнопками.
А для значений с точкой нужно char применять?
Нет.

Да и вообще, нужны ли Вам значения с точкой, подумайте ?

Ссылка на комментарий
Поделиться на другие сайты

Ладно буду дальше думать, как надумаю чёто отпишусь, но думаю нужно тогда только счётчик применять в таком случае. а без запятой тогда время через которое производить прерывание написать просто 2( то есть 2 милисекунды)? Чёто мне МК вообще я смотрю не идут(((.

Изменено пользователем Электронщик
Ссылка на комментарий
Поделиться на другие сайты

какое - то отрицание
Не какое-то, а логическое. Т.е. имеющее только 2 исходных варианта - истина или ложь.

Операция "ИЛИ" - прямой слеш и находится он не в студии (IDE), а на клавиатуре (у всех клавиатур по-разному). Ну а выглядет он примерно так - "|".

Ссылка на комментарий
Поделиться на другие сайты

А что за клавиатура, модель скажите ? Посмотрим сейчас фотки в интернете и скажем.

Ну или сами, если сможете, найдите фотографию и покажите.

Ссылка на комментарий
Поделиться на другие сайты

Pleomax PKB-700

Думаю нужно тогда только счётчик применять для отслеживания нажатия кнопки, со сбрасванием по переполнению? А без запятой тогда время через которое производить прерывание написать просто 2( то есть 2 милисекунды)?

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы публикуете как гость. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...