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

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

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

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

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

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

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

Результаты опроса: Друзья, на какой плате будем учиться «строить монстров»?
Будем делать свою плату! 19 59.38%
Лут яд! http://starterkit.ru/html/index.php?...&op=view&id=27 13 40.63%
Голосовавшие: 32. Вы ещё не голосовали в этом опросе

 
Опции темы
Непрочитано 27.10.2010, 21:01  
Uragan90
Почётный гражданин KAZUS.RU
 
Аватар для Uragan90
 
Регистрация: 20.09.2009
Сообщений: 1,933
Сказал спасибо: 481
Сказали Спасибо 408 раз(а) в 255 сообщении(ях)
Uragan90 на пути к лучшему
По умолчанию Школа АRMрестлинга

Введение в ARMреслинг!
Сижу вот и думаю, сколько ж в нете для АВР процессоров обучалок написано, даже глаза разбегаются, а вот ARM как то обделен. Не порядок!!! И чтоб хоть как то поправить ситуацию решил свою обучалку написать.
-----------------------------------------------------------------------
Сразу чтоб не было в дальнейшем непонимания оговорюсь, что контроллеров этих я не знаю и буду признателен тем специалистам, которые поправят и укажут на ошибки и прегрешения по ходу текста, но только без фанатизма - я новичок! Так сказать от чайника и для чайника! Так что будут и неточности и ляпы первопроходца - АRMрестлинга. Все же постараюсь быть максимально точным и корректным потому как если другой новичок как я учится будет на этом легбезе то тут опасны не точности, прочитав быстро запомнится даже откравенная глупость, а вот прогнать ее потом будет сложно. Ну и, разумеется, грабли, на которые наступил указывать буду по ходу экспериментов. Кто больше шарит не стесняйтесь поправлять.
Нажмите на изображение для увеличения
Название: Рис_1.jpg
Просмотров: 154
Размер:	80.9 Кб
ID:	14087
На рисунке_1. Платка которую позже строить будем c поправкой на наш STM32 ну или NXP (LPC17..)!
-------------------------------------------------------------------------
Предыстория
Банда талантливых инженеров собралась как то попить пивка и решили они на пьяну голову сварганить свой собственный проц. Так родился ARM - Advanced Risc Machine. Своей фабрики у этих ребят нет и они просто жертвуют свою архитектуру всем кому не жаль денег на пиво этой банде. На сегодняшний день существует множество разных видов ядра ARM, отличаются они не особо сильно, скорей это специализации, под разные виды задач. Также нарисовалась отдельная группа ядер этой архитектуры — семейство Cortex которые как раз для нас с вами более интересны, собственно их мы и будем ковырять, программировать, строить платку для отладки и даже жечь иногда, последнее как раз не должно вас расстроить потому как стоимость данных камушков не так уж и велика, а именно STM32 порядка 200р. LPC13..-17.. и того мение (в разных местах по разному но отличия не велики). Поджог одного двух камней не сильно ударит по семейному бюджету, хотя я надеюсь, что наши эксперименты пройдут успешно - без дыма и огня!
Что-то отвлекся, а про что это мы??? А ну конечно чуть не забыл, тут ведь вот какая штука получается должен с прискорбием констатировать факт того что процессора ARM которое мы изучаем не существует и не было никогда. Есть камни с ядром ARM, а это не одно и тоже и это мы с вами путать не будем в будущем.
Общее ядро гарантирует то, что код с контроллера например фирмы NXP можно будет перекомпилить, например, на контроллер фирмы STM и он будет работать, но вот как он будет работать уже другой вопрос. Т.к. все адреса периферии, не относящиеся к ядру, будут совсем другими. Будет совершенно другое значение битов и функционал от такой операции клонирования. А вот программы легко переносятся между семействами (такая абстракция, позволяющая отделить функционал от железа) Так что при грамотно написанной программе портирование не создаст проблем. А также не особо папрягает переход с семейства на семейство, не отказывая себе ни в чем, скажу прямо мы этого достойны Это все сказанное выше относится и к написанию прог на ассемблере, впрочем на асме под арм пишут только не ординарные личности, далее по тексту - мухаморы,,, Шутка.
Тактовые частоты у ARM, даже у слабых моделей, достигают 60-70МГц, 32х разрядная архитектура позволяет быстрей считать большие числа, а также дает плоскую 4Гб адресацию, что дает четыре миллиарда ячеек под что угодно. Чтобы выставить конкретный бит достаточно записать любой ненулевой dword в соответствующий адрес. 32 мегабайта адресного пространства потратили на манипуляции с битами, с другой стороны у нас его 4гигабайта, есть где разгуляться. На борту у этих камушков бывает очень много периферии, ее хватит на что угодно начиная от приборов управления сложными аппаратами, к которым относятся промышленное оборудование заканчивая роботехникой. По крайней мере, тремя UART или SPI в комплекте с аппаратным USB и Ethernet, кучей таймеров и каналов ШИМ. Плюс надо учитывать, что в любительских разработках эта мощность по сути и не нужна. Но мы не откажем себе в удовольствии попробовать на зуб эту твердь под названием Cortex.
/////////////////////////////////////////////////////////////////////////////////
Так что же это такое Cortex?

Семейство ARM Cortex – это новое поколение процессоров со
стандартизованной архитектурой для решения широкого круга технологических задач. В отличие от других ядер ARM, семейство Cortex представляет собой законченное процессорное ядро со стандартным ЦПУ и системной архитектурой. Семейство Cortex имеет три основных профиля:
Cortex-A, процессоры для приложений со сложными операционными системами ОС и алгоритмами пользователя. Поддерживает системы команд ARM, Thumb и Thumb-2.
Cortex-R, профиль для систем реального времени. Поддерживает системы команд ARM, Thumb и Thumb-2.
Cortex-M, профиль для микроконтроллеров, оптимизированных по цене.
Поддерживает только систему команд Thumb-2.
Число в конце названия Cortex обозначает соответствующий уровень
производительности: от 1 - для минимального уровня, до 8 - для максимального. Микроконтроллеры STM32, LPC1... построены на базе процессоров Cortex-M3.
Cortex-M3 – это стандартизованное микроконтроллерное ядро, выходящее за пределы ЦПУ, представляющее собой законченное сердце микроконтроллера (включает систему прерываний, системный таймер, систему отладки и карту памяти). 4 Гбайта адресного пространства Cortex-M3 разделено на строго определенные области для кода приложения, SRAM, периферийных и системных устройств. В
отличие от ARM7, Cortex-M3 построен на базе Гарвардской архитектуры памяти и, следовательно, содержит множество шин, позволяющих выполнять операции параллельно, увеличивая общую производительность. По сравнению с ранними
архитектурами ARM, семейство Cortex может осуществлять доступ к
невыровненным данным, что гарантирует более эффективное использование встроенной SRAM. Семейство Cortex также поддерживает установку и сброс битов в пределах 1 Мбайта памяти с помощью метода, называемого «сегментация битов», при помощи которого осуществляется эффективный доступ к регистрам периферийных устройств и флагам, размещенным в SRAM, без привлечения полноценных булевых операций. Если попытаться охарактеризовать STM32 в двух словах, то это малопотребляющий,но в то же время высокопроизводительный микроконтроллер. Он может работать от источника напряжения 2 В с тактовой частотой ядра 72 МГц с включенныйми всеми периферийными устройствами и при этом потреблять только 36 мА. В режиме сниженного энергопотребления STM32 потребляет 2 мкА. Встроенный RC- осциллятор на 8 МГц позволяет быстро выходить из режимов сниженного
энергопотребления пока внешний осциллятор стабилизируется. Быстрый вход и выход из режимов сниженного потребления сокращает общую энергозатратность системы.
Продолжение следует!!! По мере буду дополнять и испровлять
Реклама:
__________________
Я бы изменил весь мир, но бог не дал исходников

Последний раз редактировалось Uragan90; 28.10.2010 в 08:43.
Uragan90 вне форума  
Эти 8 пользователя(ей) сказали Спасибо Uragan90 за это сообщение:
baiderin (20.11.2010), cupru (27.10.2010), gdtron (03.01.2011), GREGORI_DEMCHUK (22.08.2011), overslon (29.10.2010), vasilenko_pit (05.02.2012), wss60 (29.10.2010)
Непрочитано 27.10.2010, 21:13  
projects.org.ua
Заблокирован
 
Регистрация: 15.10.2010
Адрес: Kiev/Kharkov
Сообщений: 133
Сказал спасибо: 15
Сказали Спасибо 21 раз(а) в 21 сообщении(ях)
projects.org.ua на пути к лучшему
По умолчанию Re: Школа АRMрестлинга!

предлагаю базироваться на платке модуля ARM7MODA или же на самом модуле



на сайте http://projects.org.ua/ можно найти мои статьи под ARM7 микроконтроллеры семейства AT91SAM7S, а также по работе с этими микроконтроллерами под Linux

С своей стороны могу помочь тоже советом

Интересное предложение:
Если будете базироваться на модуле ARM7MODA и приводить результаты на нем с фото, плата модуля Вам в подарок.

.

Последний раз редактировалось projects.org.ua; 27.10.2010 в 21:35.
projects.org.ua вне форума  
Непрочитано 27.10.2010, 21:54  
avp94
Почётный гражданин KAZUS.RU
 
Аватар для avp94
 
Регистрация: 26.01.2007
Сообщений: 3,155
Сказал спасибо: 61
Сказали Спасибо 1,162 раз(а) в 627 сообщении(ях)
avp94 на пути к лучшему
По умолчанию Re: Школа АRMрестлинга!

Что бы было веселее "ковырять" и разбираться сходите на http://gaw.ru/ там на русском имеется информация по ARM и Cortex-M3
avp94 вне форума  
Сказали "Спасибо" avp94
Uragan90 (27.10.2010)
Непрочитано 27.10.2010, 22:29  
Uragan90
Почётный гражданин KAZUS.RU
 
Аватар для Uragan90
 
Регистрация: 20.09.2009
Сообщений: 1,933
Сказал спасибо: 481
Сказали Спасибо 408 раз(а) в 255 сообщении(ях)
Uragan90 на пути к лучшему
По умолчанию Re: Школа АRMрестлинга!

projects.org.ua, Вам огромное спасибо конечно за столь заманчивое предложение, но вы разбираете атмел, а моя цель STM32 и LPC13..-17.., и потом готовое изделие, в виде платы не есть хорошо для истинного "джедая" коим себя считаю.
__________________
Я бы изменил весь мир, но бог не дал исходников

Последний раз редактировалось Uragan90; 28.10.2010 в 09:21.
Uragan90 вне форума  
Непрочитано 27.10.2010, 23:54  
projects.org.ua
Заблокирован
 
Регистрация: 15.10.2010
Адрес: Kiev/Kharkov
Сообщений: 133
Сказал спасибо: 15
Сказали Спасибо 21 раз(а) в 21 сообщении(ях)
projects.org.ua на пути к лучшему
По умолчанию Re: Школа АRMрестлинга!

Сообщение от Uragan90 Посмотреть сообщение
projects.org.ua, Вам огромное спасибо конечно за столь заманчивое предложение, но вы разбираете атмел, а моя цель STM32 и LPC13..-17.., и потом готовое изделие, плате не есть хорошо для истинного "дждая" к коем себя считаю.
кстати, я сейчас тоже присматриваюсь к LPC13..-17.., в фоновом плавном режиме

Сообщение от Easyrider83 Посмотреть сообщение
Синтаксис не перевариваю. По мне, так совершенно не читаемый язык.
зря вы так, дело конечно ваше, но вы ошибаетесь.
Очень удобный и простой язык, тем более что самый низко уровневый, после него только асм.

Сообщение от Gnider Посмотреть сообщение
К счастью ассемблерные вставки в АРМах использовать не имеет смысла.
Да вы что? как раз очень даже имеет, особенно в прерываниях и ДМА
projects.org.ua вне форума  
Непрочитано 28.10.2010, 09:05  
Uragan90
Почётный гражданин KAZUS.RU
 
Аватар для Uragan90
 
Регистрация: 20.09.2009
Сообщений: 1,933
Сказал спасибо: 481
Сказали Спасибо 408 раз(а) в 255 сообщении(ях)
Uragan90 на пути к лучшему
По умолчанию Re: Школа АRMрестлинга!

Кто ты??? Сказал Василий, глядя в зеркало ранним утром
Процессор, который мы с вами будем мучить, выбрал, наконец-таки это LPC1768.
Название: 002.gif
Просмотров: 2045

Размер: 15.5 Кб
Ядро--------------------------------------------------Cortex-M3
F,МГц---------------------------------------------------от 1 до 100
Память: Flash,кБ----------------------------------------512
Память: RAM,кБ-----------------------------------------64
I/O (макс.),шт.------------------------------------------70
Таймеры: 32-бит,шт--------------------------------------4
Таймеры: Каналов ШИМ,шт-------------------------------1
Таймеры: RTC--------------------------------------------Да
Интерфейсы: UART,шт ----------------------------------4
Интерфейсы: I2C,шт--------------------------------------2
Интерфейсы: USB,шт-------------------------------------1
Интерфейсы: CAN,шт-------------------------------------2
Интерфейсы: Ethernet,шт---------------------------------1
Интерфейсы: DMA,шт------------------------------------8
Аналоговые входы: Разрядов АЦП,бит--------------------12
Аналоговые входы: Каналов АЦП,шт----------------------8
Аналоговые выходы: Разрядов ЦАП,бит------------------10
VCC,В---------------------------------------------------от 2.4 до 3.6
ICC,мА--------------------------------------------------100
Корпус -------------------------------------------------LQFP-100


По этому поводу подключаем интернет и выкачиваем «datasheet» на этот контроллер по следующей сыске:
http://www.nxp.com/documents/http://...6_65_64_63.pdf
Так же нам нужен «user manual» его тоже заливаем, не стесняясь по ссылке:
http://www.nxp.com/documents/user_manual/UM10360.pdf
Довольно кучерявый камушек мы выбрали, с горой периферии. Цена на него менее 10 американских рублей.
---------------------------------------------------
Что о нем можно сказать?
Не будем умничать и обратимся к информации, которой полно в нете по поводу этого микроконтроллера компании NXP Semiconductors, семейства LPC17.. Микроконтроллеры NXP на базе этой архитектуры имеют ряд преимуществ над предыдущими семействами. Они позволили преодолеть очередной барьер увеличения производительности и уменьшения энергопотребления, а благодаря новым технологиям позволили уменьшить их стоимость, что позволило им в короткий срок получить большую популярность среди разработчиков электроники и не оставили к себе равнодушными нас с вами. http://www.nxp.com/
Мы с вами, друзья как истинные «Джедаи» будем всеми возможными и не приличными способами изучать семейство контроллеров с гордым названием LPC17.. разработанное с использованием 140-нм технологического процесса, оно имеет производительное ядро Cortex-M3 работающее на частоте до 100 МГц. Большой объем встроенной Flash памяти (до 512 кБ) и статической ОЗУ (до 32 кБ) позволяют хранить код и данные и быстро их обрабатывать, не прибегая к использованию внешних модулей памяти. Серия микроконтроллеров LPC176. pin-to-pin совместима с линейкой микроконтроллеров на базе ARM7-ядра серии LPC23.. Большой набор периферийных модулей: USB 2.0 full-speed Device/Host/OTG, три интерфейса I2C, SPI, два SSP, I2S, четыре универсальных асинхронных приемопередатчика UART с поддержкой RS-485 интерфейса, четыре многофункциональных таймера, модули ШИМ с поддержкой управления трехфазного электромотора и квадратурный энкодер, два полнофункциональных CAN2.0B, модуль 12-битного аналогово-цифрового преобразователя с мультиплексированием на восемь каналов, 10-битный цифро-аналоговый преобразователь, 10/100 Ethernet MAC-модуль.
---------------------------------------------------
Что ж, понятно только одно что мы готовы принять на свою голову этот «камень» и в следующий раз построим-таки плату и даже попробуем ее изготовить своими не умелыми (пока) руками
До встречи!!!
__________________
Я бы изменил весь мир, но бог не дал исходников

Последний раз редактировалось Uragan90; 29.10.2010 в 18:42.
Uragan90 вне форума  
Эти 3 пользователя(ей) сказали Спасибо Uragan90 за это сообщение:
gdtron (03.01.2011), GREGORI_DEMCHUK (22.08.2011)
Непрочитано 28.10.2010, 10:42  
Petr_Dynin
Временная регистрация
 
Регистрация: 20.06.2007
Сообщений: 70
Сказал спасибо: 1
Сказали Спасибо 12 раз(а) в 11 сообщении(ях)
Petr_Dynin на пути к лучшему
По умолчанию Re: Школа АRMрестлинга!

Сообщение от Uragan90 Посмотреть сообщение
Процессор, который мы с вами будем мучить, выбрал, наконец-таки это LPC1768.
Для информации:
Если мучить LPC1768, то в природе имеются готовые подопытные кролики, например:
первый - mbed (http://mbed.org/)
второй - LPCXpresso Board for LPC1768 (http://ics.nxp.com/lpcxpresso/)
Petr_Dynin вне форума  
Непрочитано 28.10.2010, 18:59  
Uragan90
Почётный гражданин KAZUS.RU
 
Аватар для Uragan90
 
Регистрация: 20.09.2009
Сообщений: 1,933
Сказал спасибо: 481
Сказали Спасибо 408 раз(а) в 255 сообщении(ях)
Uragan90 на пути к лучшему
По умолчанию Re: Школа АRMрестлинга!

«СИ»мфония №1 для веалончели со скрипкой!
--------------------------------------------------------------------
Пока рождается плата поговорим немного о языках, на которых будем общаться с нашим «гигантом мысли». (по заявкам!)
Компилятор и среда разработки которую мы будем юзать называется
Real View MDK (ARM-Keil)
www.keil.com
Она небесплатная, но демо версия дает ограничение кода 32Кв этого нам хватит пока с головой. (И потом для тех, кто слышал про «гугл» даже это ограничение не преграда).

Итак, язык C - ярчайший представитель абстрактных языков программирования. А это значит, что его совершенно не интересует какого рода информацию мы будем обрабатывать в своей программе, будь то содержимое компьютерного файла или внутренние параметры работы микроконтроллера.
Минимальная программа на «Си» может быть такой:
Main (){}
В программе на языке Си - должна быть главная функция main что обязательно для любой программы.

Логические операции:

|| // "ИЛИ" - только "ложь" и "ложь" дают "ложь"
&& // "И" - только "истина" и "истина" дают "истина"
^ // "Исключающее ИЛИ" (XOR изменить бит напротив "1")
~ // "инвертирование битов" (INV изменить биты регистра)
! // "НЕ" - логическое отрицание
!(истина) // дает "ложь"
!(ложь) // дает "истина"

Арифметические операции:

x + y // сложение
x - y // вычитание
x * y // умножение
x / y // деление
x % y // остаток от деления

Операторы сравнения:

x ‹ y // X меньше Y
x › y // X больше Y
x ‹= y // меньше или равно
x ›= y // больше или равно
x == y // X равно Y
x != y // X не равно Y

В «Си» считается:
"Ложь" (False) только ноль.
"Истина"(True)- не ноль. (!0)

----------------------------------------------------------------------
Есть еще ходовые конструкции, но об них мы поговорим чуть позже!!!
Интересное на второе

----------------------------------------------------------------------
Основной объект программирования для классического Си - переменная. Это может быть одиночная переменная или группа особым образом объединённых переменных, например, массив. Переменная, по сути, есть некое хранилище для числа, имеющее своё имя и, как правило, допустимый диапазон значений, выходить за пределы которого крайне нежелательно. И первое что мы должны сделать перед тем как начать использовать её в тексте программы это познакомить программу с её свойствами. В языке Си этот процесс называется объявлением переменной. Объявление переменной, помимо присвоения переменной имени, компилятор разместить её по конкретному адресу в памяти микроконтроллера.
Правило для объявления следующее: до того как мы впервые употребим имя переменной в тексте нашей программы, необходимо размесить её объявление в следующем формате:

type name; // Комментарий пишется в одну строчку после двух косых.
/*Так пишется комментарий в несколько строк заключенный
между двумя звездочками и косыми*/
здесь:
name - произвольное имя переменной, лишь бы оно не начиналось с цифры, состояло только из латинских символов, и не совпадало со служебными словами языка Си

type - так называемый идентификатор типа переменной.

Для хранения объявленной переменной микроконтроллер использует ячейки памяти, размер которых определяется его разрядностью. Если ожидаемые значения переменной могут превысить это количество, то для её хранения понадобится две или более ячеек памяти. Поскольку Си, строго говоря, не представляет какие значения мы планируем присваивать переменной, то просит нас указать её тип, который задаёт допустимый диапазон значений. Это необходимо чтобы не зарезервировать за ней избыточный объём памяти, а так же предупреждать нас при попытке присвоить слишком большое значение переменной не способной хранить. Для микроконтроллеров наиболее часто употребимые целочисленные типы данных следующие:

1) способные хранить только положительные значения (беззнаковые):

unsigned char // 8-разрядный байт (1байт)
unsigned short // 16-разрядное полуслово (2байт)
unsigned int // 32-разрядное слово (4байт)
unsigned long // 32-разрядное слово (4байт)

2) способные хранить значения со знаком (знаковые):

signed char // 8-разрядный байт (1байт)
signed short // 16-разрядное полуслово (2байт)
signed int // 32-разрядное слово (4байт)
signed long // 32-разрядное слово (4байт)

Ключевое слово "unsigned" (беззнаковое), вообще говоря, можно не употреблять, поскольку в Си по умолчанию тип, для которого не указан этот признак считается беззнаковым.
Для работы с дробными числами в Си предусмотрены типы с плавающей точкой:
float – 32 бита, значения от ±1.18E-38 до ±3.39E+38
double – 32 (±1.18E-38…±3.39E+38 ) или 64 бита (±2.23E-308…±1.79E+308 ) в зависимости от настроек компилятора.

Ядро ARM использует классическую архитектуру load/store, т.е. в качестве операндов могут использоваться только значения, загруженные в 32-разрядные регистры процессора. Поэтому хотя в системе команд представлены операции чтения из памяти и записи в память со всеми целочисленными типами данных, в том числе со знаковым и беззнаковым расширением, при операциях с 8- и 16-разрядными переменными (char или short), необходимость преобразования типов может приводить к заметному увеличению размера кода.
Например, для функции:

PHP код:
short f(short a)
{
if (
› 1)
/* некоторый код */

будет сгенерирован следующий код:
PHP код:
помещаем знаковый бит
в старший разряд

MOV R1
,R0,LSL #16
знаковое расширение
MOV R1
,R1,ASR #16
CMP R1,#1 
А для функции
PHP код:
int f(int a)
{
if (
› 1)
/* некоторый код */

соответствующий код будет состоять из одной инструкции
PHP код:
CMP R1,#1 
Поэтому в отличие от 8-разрядных архитектур, рекомендуется по возможности использовать тип int для параметров и локальных переменных, которые размещаются в регистрах.

Для того чтобы перед началом использования переменной она уже имела конкретное значение, к объявлению часто дописывается инициализатор:
" = " // знак равенства (в Си это оператор присваивания, а не равенство!!!) и начальное значение переменной.
Например:

int A=100;

Если например планируется написать программу, мигающую светодиодом 10 раз. Для подсчёта числа миганий потребуется переменная, значение которой, очевидно никогда не будет отрицательным и не выйдет за пределы диапазона от 0 до 255, а значит, в этом случае вполне достаточно использовать однобайтовый тип char:

unsigned char Miganiy=0;

Следует иметь в виду, что в системе команд ARM/Thumb есть инструкции знакового и беззнакового умножения, но отсутствуют инструкции деления (оно реализуется программно). Поэтому рекомендуется вместо операций деления использовать операции сдвига, где это возможно. При разработке систем реального времени следует принимать во внимание, что инструкции ARM являются «атомарными», т.е. исполнение инструкции не может быть прервано обработчиком прерывания. Если в одной инструкции осуществляется запись в большое
число регистров, использование инструкций чтения и записи группы регистров может существенно увеличивать время реакции на возникновение прерывания. Эти инструкции обычно генерируются компилятором в прологе и эпилоге функций с целью сохранения и восстановления регистров, используемых для размещения локальных переменных функции. Во избежание таких задержек следует сокращать количество локальных переменных в функции (тогда почти все они могут быть размещены в scratch-регистрах). Кроме того, некоторые компиляторы имеют специальную опцию, позволяющую ограничить количество сохраняемых/восстанавливаемых регистров.

В начале любой программы на Си мы можем видеть строки типа:
#include ‹file1.h›
#include // - это директива, заставляющая среду разработки поместить в это место нашей программы содержимое файла с именем file1.h. Файлы с расширением .h называются заголовочными или h-файлами. Мы с вами можем создавать собственные h-файлы и помещать их содержимое в любое место программы.
__________________
Я бы изменил весь мир, но бог не дал исходников

Последний раз редактировалось Uragan90; 29.10.2010 в 19:05.
Uragan90 вне форума  
Эти 2 пользователя(ей) сказали Спасибо Uragan90 за это сообщение:
noxyucm (26.11.2012), sergeyye (04.12.2013)
Непрочитано 28.10.2010, 19:11  
kison
Почётный гражданин KAZUS.RU
 
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
kison на пути к лучшему
По умолчанию Re: Школа АRMрестлинга!

Сообщение от Uragan90 Посмотреть сообщение
Если например планируется написать программу, мигающую светодиодом 10 раз. Для подсчёта числа миганий потребуется переменная, значение которой, очевидно никогда не будет отрицательным и не выйдет за пределы диапазона от 0 до 255, а значит, в этом случае вполне достаточно использовать однобайтовый тип char:
Для общего развития - использовать переменные с разрядностью меньше разрядности процессора нужно только если это реально необходимо. Иначе лишние действия. Увеличить на 1 32 битную переменную - 1 команда, 8-ми битную - две. Процессор будет эмулировать переполнение.
kison вне форума  
Сказали "Спасибо" kison
Uragan90 (28.10.2010)
Непрочитано 28.10.2010, 19:15  
projects.org.ua
Заблокирован
 
Регистрация: 15.10.2010
Адрес: Kiev/Kharkov
Сообщений: 133
Сказал спасибо: 15
Сказали Спасибо 21 раз(а) в 21 сообщении(ях)
projects.org.ua на пути к лучшему
По умолчанию Re: Школа АRMрестлинга!

Сообщение от Uragan90 Посмотреть сообщение
unsigned int - два байта, значения 0...65535
вообщето у типа переменной int - 2 байта чаще на пиках и аврах, а на армах 4 байта
projects.org.ua вне форума  
Сказали "Спасибо" projects.org.ua
Uragan90 (28.10.2010)
 

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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Книги dosikus Делимся опытом 11242 29.12.2015 23:45
Си - это сложно и непонятно или нет? Easyrider83 Микроконтроллеры, АЦП, память и т.д 146 29.10.2010 01:17


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


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