Например TDA7294

Форум РадиоКот • Просмотр темы - CodeVision AVR в вопросах и ответах
Форум РадиоКот
Здесь можно немножко помяукать :)



Текущее время: Вт сен 22, 2020 15:37:13

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 8147 ]     ... , , , 406, ,  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Пт фев 07, 2020 15:44:45 
Друг Кота
Аватар пользователя

Карма: 83
Рейтинг сообщений: 897
Зарегистрирован: Чт апр 11, 2013 11:19:59
Сообщений: 4502
Откуда: Минск
Рейтинг сообщения: 4
Я бы вообще сделал проще. Вместо малочитабельных сдвигов ради непонятно чего, сделал бы всё побитно.

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

Код:
#define CONCAT(x,y) x ## y

#define PORT(x)     CONCAT(PORT,x)

#define SET(x)      (PORT(x) |= x ## _LINE)
#define CLR(x)      (PORT(x) &= ~x ## _LINE)

#define D0          C
#define D0_LINE     (1<<1)
#define D1          C
#define D1_LINE     (1<<2)
#define D2          C
#define D2_LINE     (1<<3)
#define D3          C
#define D3_LINE     (1<<4)
#define D4          C
#define D4_LINE     (1<<5)
#define D5          C
#define D5_LINE     (1<<7)
#define D6          B
#define D6_LINE     (1<<6)
#define D7          B
#define D7_LINE     (1<<7)

static void setPort(uint8_t data)
{
    if (data & (1 << 0)) SET(D0); else CLR(D0);
    if (data & (1 << 1)) SET(D1); else CLR(D1);
    if (data & (1 << 2)) SET(D2); else CLR(D2);
    if (data & (1 << 3)) SET(D3); else CLR(D3);
    if (data & (1 << 4)) SET(D4); else CLR(D4);
    if (data & (1 << 5)) SET(D5); else CLR(D5);
    if (data & (1 << 6)) SET(D6); else CLR(D6);
    if (data & (1 << 7)) SET(D7); else CLR(D7);
}


P.S. Если кому интересно, то работает это приблизительно так (порядок операций может быть и чуть другой):


Очевидно, что изменить порты на другие очень легко.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Пт фев 07, 2020 16:23:46 
Говорящий с текстолитом
Аватар пользователя

Карма: 10
Рейтинг сообщений: 16
Зарегистрирован: Сб фев 18, 2012 15:42:29
Сообщений: 1578
Откуда: Курск
Рейтинг сообщения: 0
Я уже немного запутался. Смысл понятен. Язык си не очень.

Добавлено after 5 minutes 39 seconds:
х'=х<<1

(х')&(1<<7)

я это вообще не видел. объясни подробнее. в другом виде не знаю. что бы я смысл понял


Вернуться наверх
 
JLCPCB, всего $2 за прототип печатной платы! Цвет - любой!

Отличное качество, подтвержденное более чем 600,000 пользователей! Более 10,000 заказов в день.

Зарегистрируйтесь и получите два купона по 5$ каждый:https://jlcpcb.com/quote

Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Пт фев 07, 2020 16:31:20 
Друг Кота
Аватар пользователя

Карма: 39
Рейтинг сообщений: 1528
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Сообщений: 4880
Откуда: Сердце Пармы
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
видишь, там сложное действие (раскладывается на несколько более простых)
как и в математике снаыала выполняются действия в скобках
х' я обозначил результат вычисления скобки (так я сделал акцент на то, что в переменную х он не запишется)
просто я попытался пошагово расписать птоцесс вычисления этого выражения

_________________
Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством :)


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Шестое юбилейное мероприятие в процессе
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Пт фев 07, 2020 16:47:48 
Говорящий с текстолитом
Аватар пользователя

Карма: 10
Рейтинг сообщений: 16
Зарегистрирован: Сб фев 18, 2012 15:42:29
Сообщений: 1578
Откуда: Курск
Рейтинг сообщения: 0
А как мне понять?

x&=~(1<<7)

где можно о таких вещах почитать?

вот объясни проще.

x=1111 1111;

x=~(1<<7);
что будет.

работает. а как не пойму :)))


Вложения:
ввыв.JPG [242.36 KiB]
Скачиваний: 125


Последний раз редактировалось mixon46 Пт фев 07, 2020 16:53:52, всего редактировалось 2 раз(а).
Вернуться наверх
 
Драйверы MOSFET/IGBT Infineon – силой нужно управлять!

Специалисты Infineon усовершенствовали традиционные кремниевые MOSFET и IGBT и выпустили компоненты на базе принципиально иных материалов – нитрида галлия и карбида кремния. Мы создали подборку полезных материалов, чтобы вы разобрались во всех тонкостях и стали экспертом по управлению силовыми приборами нового поколения CoolMOS, CoolGaN, CoolSiC!

Подробнее>>
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Пт фев 07, 2020 16:57:07 
Друг Кота
Аватар пользователя

Карма: 39
Рейтинг сообщений: 1528
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Сообщений: 4880
Откуда: Сердце Пармы
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
WiseLord, в понедельник проверю как этот код понимается КВАВр'ом.
может попробовать собрать пары регистр-маска и разом их к портам применять?

Добавлено after 8 minutes 49 seconds:
mixon46, https://radiokot.ru/forum/viewtopic.php?f=57&t=168374 тут в конйе точно с такимже вопросом...

_________________
Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством :)


Вернуться наверх
 
Снижена цена на DC/DC и AC/DC преобразователи Mornsun в Компэл!

Хорошие новости для покупателей источников питания! Компэл снизил цены на всю продукцию Mornsun. В ассортименте – как широко известные и популярные позиции, так и новинки. Доступны AC/DC, неизолированные DC/DC-преобразователи или импульсные стабилизаторы (семейство K78/R3), изолированные DC/DC, и новейшее поколение R4.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Пт фев 07, 2020 17:04:19 
Говорящий с текстолитом
Аватар пользователя

Карма: 10
Рейтинг сообщений: 16
Зарегистрирован: Сб фев 18, 2012 15:42:29
Сообщений: 1578
Откуда: Курск
Рейтинг сообщения: 0
Почему я ставлю например переменную
B=0b1111 1111;

потом:

B=(1<<7)

все биты обнулятся кроме 7 бита. вне зависимости от того B=0 или B=255


Вернуться наверх
 


Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Пт фев 07, 2020 17:18:00 
Друг Кота
Аватар пользователя

Карма: 39
Рейтинг сообщений: 1528
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Сообщений: 4880
Откуда: Сердце Пармы
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
(1<<7) это вариант записи числа 0b10000000 (1 сдвинута на 7 позиций влево)

Добавлено after 2 minutes 45 seconds:
я бы отправил тебя читать учебник т.к. это основы...
но, к сожалению я не помню в каком это написано более доходчиво
если до понедельника не разберёшься - обращайся, найду, укажу...

_________________
Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством :)


Вернуться наверх
 


Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Пт фев 07, 2020 17:18:07 
Говорящий с текстолитом
Аватар пользователя

Карма: 10
Рейтинг сообщений: 16
Зарегистрирован: Сб фев 18, 2012 15:42:29
Сообщений: 1578
Откуда: Курск
Рейтинг сообщения: 0
Ай да прав. Теперь до меня дошло. Вот тупень. & дают 1 и 1 = 1. Теперь ясно. Вот причина :facepalm:.


Я разобрался. Смодулировал ситуацию в CodeVishion и все получилось. И все действия на бумаге просчитал. Все сошлось. Но самому что то подобное составить это нужно огромный опыт иметь.
Код:
while (1)
      { b<<=1;
        b&=~(1<<7);
        b|=(b<<1)&(1<<7);
        while (c=1,c++)
        {
        x=b;
        delay_ms (100);
        PORTB=x&((1<<7)|(1<<6));
        x=x<<1;
        x&=~(1<<7);
        x|=(x<<1)&(1<<7);
        PORTD=x&((1<<6)|(1<<5)|(1<<4)|(1<<3)|(1<<2)|(1<<1));
        }
          }


Вернуться наверх
 
Бытовой пирометр АКИП-9312 – просто удобно!

Диапазон 35 °С ...42°С (температура тела) погрешность 0,3 °С
Диапазон 0 °С ...100°С (бытовая сфера) погрешность 1,0 °С
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Пт фев 07, 2020 19:16:14 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 89
Рейтинг сообщений: 1754
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 15365
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
а все это случайно не для того, чтобы раскидать по разным портам байты, выводимые при динамиеской индикации на индикаторы?
просто в этом случае можно применить еще и перестановку битов в самих байтах... и в итоге получить заметный выигрыш в сдвигах и т.п.

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
удивительно, но при взгляде на многих сверху ничего не меняется...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Пт фев 07, 2020 19:27:55 
Друг Кота
Аватар пользователя

Карма: 39
Рейтинг сообщений: 1528
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Сообщений: 4880
Откуда: Сердце Пармы
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
в исходном задании было
PORT=x&((1<<7)|(1<<5)|(1<<4)|(1<<3)|(1<<2)|(1<<1));
а тут
PORT=x&((1<<6)|(1<<5)|(1<<4)|(1<<3)|(1<<2)|(1<<1));
для этого варианта действия
x&=~(1<<7);
x|=(x<<1)&(1<<7);
не требуются.

_________________
Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством :)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Сб фев 08, 2020 22:24:44 
Говорящий с текстолитом
Аватар пользователя

Карма: 10
Рейтинг сообщений: 16
Зарегистрирован: Сб фев 18, 2012 15:42:29
Сообщений: 1578
Откуда: Курск
Рейтинг сообщения: 0
В прерывании должна быть переменная. Каждое прерывание переписывает ее. Переменная используется в главной функции main. Как ее нужно объявить и где.

Я объявил ее до прерывания и до главой функции. Но не как flash


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Вс фев 09, 2020 10:43:56 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 89
Рейтинг сообщений: 1754
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 15365
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
По уму переменная должна быть volatile, но вашему CVAVR на это пофиг... Во всяком случае, раньше было пофиг...

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
удивительно, но при взгляде на многих сверху ничего не меняется...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Вс фев 09, 2020 10:54:46 
Друг Кота
Аватар пользователя

Карма: 39
Рейтинг сообщений: 1528
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Сообщений: 4880
Откуда: Сердце Пармы
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
объявляй переменную до описания прерываний, тогда она будет видна во всём коде

_________________
Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством :)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Ср фев 12, 2020 23:25:47 
Говорящий с текстолитом
Аватар пользователя

Карма: 10
Рейтинг сообщений: 16
Зарегистрирован: Сб фев 18, 2012 15:42:29
Сообщений: 1578
Откуда: Курск
Рейтинг сообщения: 0
как выйти из прерывания?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Пт фев 14, 2020 17:49:48 
Опытный кот
Аватар пользователя

Карма: 9
Рейтинг сообщений: 154
Зарегистрирован: Сб дек 22, 2012 08:17:42
Сообщений: 702
Откуда: Караганда, Казахстан
Рейтинг сообщения: 0
На Си? То есть из программы ISR(<вектор>) ? Обычным return'ом. Или простым окончанием программы - по последней замыкающей фигурной скобке - ISR(<вектор>){ ... } - вот этой. Си прячет особенности программы обслуживания прерываний и делает ее для нас, как функцию без параметров и без возвращаемого значения. Ну, и нормальные функции вызываются явным вызовом, а эта вызывается каким-то аппаратным сигналом.

Связь с остальным хозяйством предполагается через общие переменные - те, которые объявлены вне (до) любой из функций.

_________________
Кто мешает тебе выдумать порох непромокаемый? (К. Прутков, мысль № 133)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Чт мар 26, 2020 07:26:29 
Первый раз сказал Мяу!

Зарегистрирован: Пн янв 09, 2017 06:50:37
Сообщений: 36
Откуда: Приморье
Рейтинг сообщения: 0
Давненько не пользовался CVAVR, и вот недавно выскочил такой глюк - из папки BIN стал пропадать файл avrasm2.exe, вернее сначала при сборке проекта, сборке файлов проекта вылетала ошибка, типа нет файла avrasm2.exe. Помогала повторная установка в режиме восстановления, файл появлялся, но через несколько нажатий на кнопки компиляции, сборки файл на глазах исчезал. Проверка компа на вирусы и прочую гадость ничего не дала. Пока решил проблему так: присвоил avrasm2.exe атрибут "системный". Вроде пока работает и не пропадает, но хотелось бы понять причину такого глюка. Версия CVAVR 3.12 + лекарство.

_________________
Мир не без добрых людей!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Пт апр 10, 2020 16:22:24 
Родился

Зарегистрирован: Пт апр 10, 2020 16:16:40
Сообщений: 1
Рейтинг сообщения: 0
Здравствуйте. Может ли кто помочь с написанием кода в CVAVR? Есть готовый код, просто правильно записать туда, а сама не понимаю
Если кто-то сможет помочь, напишите, пожалуйста, в лс


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Сб апр 11, 2020 03:42:34 
Мучитель микросхем

Карма: 2
Рейтинг сообщений: -4
Зарегистрирован: Вт июн 07, 2011 08:03:18
Сообщений: 403
Рейтинг сообщения: 0
Написал в ЛС.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Чт авг 27, 2020 13:44:42 
Родился
Аватар пользователя

Зарегистрирован: Чт авг 27, 2020 13:15:49
Сообщений: 11
Рейтинг сообщения: 0
Добрый день.
Решил обратится за помощью, так как сам в С -1(т.е. меньше нуля) да и еще наверное стар и туп :(
Не могу придумать алгоритм "вытаскивания" определенной последовательности символов/знаков из принимаемых по UART данных.
Последовательность которая мне нужна имеет вид двух букв и 11 цифр типа IF00144000000.
Сделал несколько вариантов поиска внутри обработчика прерываний UART, но все равно иногда проскакивают "левые" значения.
Может кто то занимался подобным, прошу откликнутся.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Чт авг 27, 2020 16:09:37 
Друг Кота
Аватар пользователя

Карма: 39
Рейтинг сообщений: 1528
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Сообщений: 4880
Откуда: Сердце Пармы
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
може тктото и занимался, если делал то-же, что и вы... то он наверно и данные принимал так-же, и хранил их так-же, и правила выбора нужных данных у него были один в один... может это даже был я... только отсутствие экстрасенсорных способностей не даёт мне возможности узнать это :(
а кодевижен хороший и в твоих проблемах не виноват :)

_________________
Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством :)


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 8147 ]     ... , , , 406, ,  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 11


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y