Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту


Результаты опроса: Запуск "на коленке" часть 2. Что дальше будем обсмакивать?
RTC (часы реального времени) 119 11.41%
USB 540 51.77%
Базовые навыки работы с портами ввода-вывода 247 23.68%
АЦП 108 10.35%
ЦАП 29 2.78%
Голосовавшие: 1043. Вы ещё не голосовали в этом опросе

 
Опции темы
Непрочитано 19.07.2011, 10:22  
artko
Прохожий
 
Регистрация: 26.10.2009
Сообщений: 9
Сказал спасибо: 1
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
artko на пути к лучшему
По умолчанию Re: Здравствуй, ARM. Запуск "на коленке"

Сообщение от Easyrider83 Посмотреть сообщение
Как ТАКОЕ вообще реально запомнить? Где логика?
когда регулярно пользуешься - запоминается со временем само


Сообщение от Easyrider83 Посмотреть сообщение
Ничего по нашей теме найти не смог. С есть для х86. Но там совершенно другое. Мне бы по микровизион найти. Я там уже юарт реализовал. Но опять же проклял все.
Керниган, Ричи, Язык С.
Раздел про побитовые логические операции - все вроде как раз в тему написано
Реклама:
artko вне форума  
Сказали "Спасибо" artko
Easyrider83 (19.07.2011)
Непрочитано 19.07.2011, 15:10  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: Здравствуй, ARM. Запуск "на коленке"

Сообщение от artko Посмотреть сообщение
когда регулярно пользуешься - запоминается со временем само
Пока что кажется китайской грамотой. Не понимаю, зачем надо использовать маску для работы с одним битом. Это же какой-то абсурд. Например, в бейсике обращение выглядит так - PORTB.7 - имеется в виду седьмой бит регистра PORTB. Вместо константы может быть переменная PORTB.A - указатель на номер вывода. Страшно даже представить, как это будет выглядить на С. Я жутко извиняюсь, что зафлудил тему. Но мне правда очень надо освоить микровизион. Я себе такую цель поставил. Ассемблер АРМ не знаю, но думаю, там обращение к биту тоже одной командой выполняется. Почему нельзя так писать "прозрачный" код - который тут же ассоциируется с ассемблерной аналогией? Чтобы не думать потом, сколько тактов заняла ваша процедура.
Сообщение от artko Посмотреть сообщение
Керниган, Ричи, Язык С.
Раздел про побитовые логические операции - все вроде как раз в тему написано
Два дня эту книгу читаю. Пока что никакой закономерности и логики в этом языке не вижу. Я не пьющий, но если меня изрядно нахлобучить и накурить, возможно я выдам что-то подобное, малопонятное и максимально неусваиваемое.
У меня знакомый через два часа после знакомства с бейсиком написал код к шифратору и дешифратору, откомпилировали и запустил. А я имея многолетний опыт программирования за два дня только диодом поморгал. Кошмар.
Easyrider83 вне форума  
Непрочитано 19.07.2011, 16:40  
uk8amk
Вид на жительство
 
Регистрация: 05.07.2006
Адрес: Tashkent
Сообщений: 454
Сказал спасибо: 24
Сказали Спасибо 67 раз(а) в 44 сообщении(ях)
uk8amk на пути к лучшему
По умолчанию Re: Здравствуй, ARM. Запуск "на коленке"

Цитата:
Или в 32х разрядных системах нет операций с битами? Имею в виду АСМ.
Применительно к ARM - есть, но все они применимы только к регистровому банку т.к. процессор понятия не имеет какую периферию к нему прикрутили(и прикрутили ли вообще). А вот что именно будет использоваться: битовые инструкции или маска - решает компилер т.к. вы на Си пишете. Поэтому если вам нужно именно с портом одной командой, то юзайте IOSET и IOCLR.

Цитата:
Почему нельзя так писать "прозрачный" код - который тут же ассоциируется с ассемблерной аналогией? Чтобы не думать потом, сколько тактов заняла ваша процедура.
Так что же вам мешает изучить его ассемблер и не плеваться от Си? А ARM - не та архитектура чтобы такты считать. Всякие ускорялки и конвейеры делают это время сильно зависимым от многих факторов.
Кстати, у кортексов ваша "проблема" с битовыми операциями решена с помощью т.к. bit-banding.
uk8amk вне форума  
Непрочитано 19.07.2011, 16:56  
artko
Прохожий
 
Регистрация: 26.10.2009
Сообщений: 9
Сказал спасибо: 1
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
artko на пути к лучшему
По умолчанию Re: Здравствуй, ARM. Запуск "на коленке"

(отмазка) все дальше написаное является имхо и может быть неточным, сам изучаю еще.

Сообщение от Easyrider83 Посмотреть сообщение
Пока что кажется китайской грамотой. Не понимаю, зачем надо использовать маску для работы с одним битом. Это же какой-то абсурд. Например, в бейсике обращение выглядит так - PORTB.7 - имеется в виду седьмой бит регистра PORTB.
а в асм заглядывали? Очень может быть, что такое обращение это реализация авторов компилятора бейсика. А на самом деле там длинные маски (условно)
Ну и, например, я могу для своего тестового STM32 написать
GPIOA-›BSRR = GPIO_BSRR_BS8;
это установка восьмого бита порта А.

а в си для пиков можно было LATAbits.LATA8 = 1; (тоже установка восьмого бита) или LATA |= 1 ‹‹ 8;

Это к чему - надо читать заголовочные файлы и инструкции - возможно производитель/добрые люди уже помогли упростить.

Сообщение от Easyrider83 Посмотреть сообщение
Ассемблер АРМ не знаю, но думаю, там обращение к биту тоже одной командой выполняется. Почему нельзя так писать "прозрачный" код - который тут же ассоциируется с ассемблерной аналогией?
можно использовать bit-banding, когда каждому биту соответствует свой "адрес в памяти". (если эта фича есть в вашем арме). будет фактически одной командой.
Только это си, а не ассемблер - зачем усложнять себе жизнь, привязываясь жестко к битам и т.п.? Чем и удобно - можно таскать куски кода откуда угодно, и оно работает.

Сообщение от Easyrider83 Посмотреть сообщение
Два дня эту книгу читаю. Пока что никакой закономерности и логики в этом языке не вижу......... А я имея многолетний опыт программирования за два дня только диодом поморгал. Кошмар.
Привыкнете, потом (возможно) на бейсик и смотреть не захочете
Все-таки большинство примеров кода для МК - си. Или бросать, или привыкать...
artko вне форума  
Непрочитано 19.07.2011, 19:02  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: Здравствуй, ARM. Запуск "на коленке"

Сообщение от artko Посмотреть сообщение
а в асм заглядывали? Очень может быть, что такое обращение это реализация авторов компилятора бейсика.
Конечно, заглядывал. Стереть и установить бит - одна команда. Стереть байт - тоже. Записать что-то отличное от 0 - две команды. Все логично.
Кстати, как в С выглядит двоичная запись?
0b00000000 не работает
Easyrider83 вне форума  
Непрочитано 19.07.2011, 23:25  
artko
Прохожий
 
Регистрация: 26.10.2009
Сообщений: 9
Сказал спасибо: 1
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
artko на пути к лучшему
По умолчанию Re: Здравствуй, ARM. Запуск "на коленке"

Сообщение от Easyrider83 Посмотреть сообщение
Кстати, как в С выглядит двоичная запись?
0b00000000 не работает
если Keil RealView компилятор - то вроде нет вообще двоичных констант, по крайней мере я в доках не смог найти.
В стандарте си тоже не указано, насколько помню - их наличие на совести конкретного компилятора.

Ну и, имхо, нагляднее (да и проще менять) запись вида

byte = 5 ‹‹ 1 | 4 ‹‹ 1; (установлены 5 и 4-й биты).
artko вне форума  
Непрочитано 20.07.2011, 00:29  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: Здравствуй, ARM. Запуск "на коленке"

Сообщение от artko Посмотреть сообщение
byte = 5 ‹‹ 1 | 4 ‹‹ 1; (установлены 5 и 4-й биты).
Спасибо, что помогаете мне. Правильно ли я понял - знак вертикальной черты позволяет записывать операторы в одну строку?
Допустим есть переменная А. Она имеет размерность байт. Как в ней изменить конкретный бит не меняя значения остальных?
IOPIN0&=~(1‹‹0); //пишем нолик в бит 0?
IOPIN0 =1‹‹0; //пишем единичку в бит 0?
Знак бесконечности применяет инверсию?

Запись IOPIN0&=1‹‹1;
аналогична IOPIN0&=~(1‹‹0);
Правильно я понимаю?

Последний раз редактировалось Easyrider83; 20.07.2011 в 00:35.
Easyrider83 вне форума  
Непрочитано 20.07.2011, 07:56  
roma9112
Гражданин KAZUS.RU
 
Регистрация: 25.11.2008
Адрес: Волгоград
Сообщений: 507
Сказал спасибо: 42
Сказали Спасибо 49 раз(а) в 46 сообщении(ях)
roma9112 на пути к лучшему
По умолчанию Re: Здравствуй, ARM. Запуск "на коленке"

Сообщение от Easyrider83 Посмотреть сообщение
Два дня эту книгу читаю. Пока что никакой закономерности и логики в этом языке не вижу.
Может вот эта книжка больше понравится...
Вложения:
Тип файла: rar programmirovanie_na_jazyke_si_podbelskiy_fomin.rar (3.52 Мб, 258 просмотров)
roma9112 вне форума  
Сказали "Спасибо" roma9112
Easyrider83 (20.07.2011)
Непрочитано 20.07.2011, 08:01  
roma9112
Гражданин KAZUS.RU
 
Регистрация: 25.11.2008
Адрес: Волгоград
Сообщений: 507
Сказал спасибо: 42
Сказали Спасибо 49 раз(а) в 46 сообщении(ях)
roma9112 на пути к лучшему
По умолчанию Re: Здравствуй, ARM. Запуск "на коленке"

И вот еще по этой ссылке http://www.chipenable.ru/index.php/programming-c.html для старта можно посмотреть.
roma9112 вне форума  
Сказали "Спасибо" roma9112
Easyrider83 (20.07.2011)
Непрочитано 20.07.2011, 08:14  
uk8amk
Вид на жительство
 
Регистрация: 05.07.2006
Адрес: Tashkent
Сообщений: 454
Сказал спасибо: 24
Сказали Спасибо 67 раз(а) в 44 сообщении(ях)
uk8amk на пути к лучшему
По умолчанию Re: Здравствуй, ARM. Запуск "на коленке"

Сообщение от Easyrider83 Посмотреть сообщение
Правильно ли я понял - знак вертикальной черты позволяет записывать операторы в одну строку?
Нет, это всего лишь битовое ИЛИ.

Сообщение от Easyrider83 Посмотреть сообщение
Запись IOPIN0&=1‹‹1;
аналогична IOPIN0&=~(1‹‹0);
Опять не угадали.
IOPIN0&=1‹‹1; эквивавлентна IOPIN=IOPIN & 0x02;
IOPIN0&=~(1‹‹0) эквивалентна IOPIN=IOPIN & 0xFFFFFFFE;

Краткая справка для вас:
1.Битовые операции
& операция поразрядного И двух регистров в банке
| битовое ИЛИ
^ исключающее ИЛИ
~ поразрядное дополнение(инверсия)
‹‹ сдвиг влево на n разрядов
›› сдвиг вправо

2.Логические операции(возвращают истина-ложь), используются главным образом в условных конструкциях проверки условий типа if.
! логическое отрицание
== проверка на равенство
&& логическое И
|| логическое ИЛИ
uk8amk вне форума  
 

Закладки
Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 03:28.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot