Спасибо, заработало.Леонид Иванович писал(а):Бит CS21 расположен в регистре TCCR2B.
Мелкие вопросы по МК и ПЛИС.
Re: Мелкие вопросы по МК и ПЛИС.
- Реклама
Re: Мелкие вопросы по МК и ПЛИС.
Здравствуйте, с микроконтроллерами немного знаком, но не сильно, вопрос возник - что такое JTAG отладчик/прорамматор ?
Почитал ВиКи но не очень понял, можно как-нибудь по простому или ккакую-нибудь статейку на эту тематику, большое спасибо.
Почитал ВиКи но не очень понял, можно как-нибудь по простому или ккакую-нибудь статейку на эту тематику, большое спасибо.
- Gudd-Head
- Друг Кота
- Сообщения: 20092
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: Мелкие вопросы по МК и ПЛИС.
JTAG — протокол/стандартjazz393 писал(а):что такое JTAG отладчик/прорамматор ?
отладчик позволяет смотреть что на самом деле творится в МК: текущая команда, данные в ОЗУ, состояние периферии, выводов и т.д.
прорамматор позволяет заливать прошивку в МК.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Re: Мелкие вопросы по МК и ПЛИС.
спасибо!
1)А что такое ядро микроконтроллера? я уже несколько раз читал про архитектуру микропроцессоров и т.п. , но для себя так особо и не понял, это что-то очень абстрактное... вот есть АЛУ, которое выполняет различные команды над данными в памяти(у каждого АЛУ есть своя система команд как я понял в зависимости от ядра т.е. АЛУ по сути и есть ядро...?), у него есть регистры (кажется FRC или FRU), есть различная переферитя типа таймеров, ADC, DMA итп (которая как я понимаю к ядру уже не относится).
2)Вот ещё, для того чтобы написать какую-нибудь мигалку, надо подключить заголовочный файл, который будет это ядро инициализировать - т.е. настраивать все эти FRU регистры, я правильно понимаю?(И кстати бывает ли так что необходимо несколько хедеров только для того чтобы залить пустую прогу на мк, без gpio итп?).
3) А вот к примеру есть такая штука как бутлоадер, она отвечает за загрузку операционной системы(как я понял из чтива), а в atmega8 к примеру он вообще есть? Или на stm32f407? там же на него не поставить linux какой-нибудь ... тоже какая-то для меня абстрактная штука ... как ей пользоваться для чего она не понимаю...
1)А что такое ядро микроконтроллера? я уже несколько раз читал про архитектуру микропроцессоров и т.п. , но для себя так особо и не понял, это что-то очень абстрактное... вот есть АЛУ, которое выполняет различные команды над данными в памяти(у каждого АЛУ есть своя система команд как я понял в зависимости от ядра т.е. АЛУ по сути и есть ядро...?), у него есть регистры (кажется FRC или FRU), есть различная переферитя типа таймеров, ADC, DMA итп (которая как я понимаю к ядру уже не относится).
2)Вот ещё, для того чтобы написать какую-нибудь мигалку, надо подключить заголовочный файл, который будет это ядро инициализировать - т.е. настраивать все эти FRU регистры, я правильно понимаю?(И кстати бывает ли так что необходимо несколько хедеров только для того чтобы залить пустую прогу на мк, без gpio итп?).
3) А вот к примеру есть такая штука как бутлоадер, она отвечает за загрузку операционной системы(как я понял из чтива), а в atmega8 к примеру он вообще есть? Или на stm32f407? там же на него не поставить linux какой-нибудь ... тоже какая-то для меня абстрактная штука ... как ей пользоваться для чего она не понимаю...
Re: Мелкие вопросы по МК и ПЛИС.
jazz393
Нет. По каждому пункту не правильно.
1. Ядро - это грубо говоря аппаратная штука выполняющая инструкции. Оно состоит из разных частей, в том числе ALU, которое выполняет простейшие арифметические и логические операции. Может быть FPU, который выполняет операции над числами с плавающей точкой. Скорей всего есть какой-нибудь Barrel Shifter как в ARM, который выполняет битовый сдвиг. Есть конвейер команд, который "разбивает" выполнение одной команды на несколько этапов в целях ускорения. В общем есть много всего и все это вместе выполняет твои инструкции и называется ядром.
Еще у ядра есть регистры - ячейки памяти, которыми оперируют ALU и иже с ними. Некоторые архитектуры ядра подразумевают, что операции могут выполняться только над этими регистрами, поэтому сначала приходится загружать данные из памяти в эти регистры, там их складывать/вычитать, а потом обратно сохранять в память. У каждой архитектуры может ыть разный набор этих регистров с разным назначением, а что такое FRC и FRU я понятия не имею, по крайней мере в ARM до версии 7 такого не встречал.
Чуть не забыл. Периферия в ядро не входит, это совершенно независимая штука. Периферия плюс ядро равно микроконтроллер, ну или микропроцессор. Это зависит от того какая периферия и какое ядро.
В общем тебе тут нужно почитать какую-нибудь хорошую книжку, потому что судя по вопросам ты тут совсем плаваешь. Мне лично помогла "Чарльз Петцольд: Код - Тайный язык информатики". Там доступным языком рассказывается собственно о том, как "тупой набор транзисторов" исполняет твои программы.
2. Даже не знаю как отвечать. Ты тут тоже очень плаваешь и я бы порекомендовал тебе прочитать какую-нибудь книжку по Си, можно классику Кернигана и Ричи. А так заголовочные файлы - это... хм... заголовочные файлы. Просто подключив их у тебя ничего не "настроится" и не заработает. Обычно в этих файлах находятся объявления регистров периферии (не путать с регистрами ядра), а ты уже в файлах исходного кода, подключив эти заголовочные файлы, записываешь в регистры определенные значения, или там читаешь, в общем настраиваешь как надо и далее с ними работаешь.
3. Bootloader в контексте микроконтроллеров - это обычно небольшая программа, которая может записать твою прошивку в микроконтроллер по различным интерфейсам (UART, CAN, USB), а затем просто передать ей управление. Для работы совершенно не обязательная штука, просто позволяет в отсутствии отладчика перепрошить МК.
Нет. По каждому пункту не правильно.
1. Ядро - это грубо говоря аппаратная штука выполняющая инструкции. Оно состоит из разных частей, в том числе ALU, которое выполняет простейшие арифметические и логические операции. Может быть FPU, который выполняет операции над числами с плавающей точкой. Скорей всего есть какой-нибудь Barrel Shifter как в ARM, который выполняет битовый сдвиг. Есть конвейер команд, который "разбивает" выполнение одной команды на несколько этапов в целях ускорения. В общем есть много всего и все это вместе выполняет твои инструкции и называется ядром.
Еще у ядра есть регистры - ячейки памяти, которыми оперируют ALU и иже с ними. Некоторые архитектуры ядра подразумевают, что операции могут выполняться только над этими регистрами, поэтому сначала приходится загружать данные из памяти в эти регистры, там их складывать/вычитать, а потом обратно сохранять в память. У каждой архитектуры может ыть разный набор этих регистров с разным назначением, а что такое FRC и FRU я понятия не имею, по крайней мере в ARM до версии 7 такого не встречал.
Чуть не забыл. Периферия в ядро не входит, это совершенно независимая штука. Периферия плюс ядро равно микроконтроллер, ну или микропроцессор. Это зависит от того какая периферия и какое ядро.
В общем тебе тут нужно почитать какую-нибудь хорошую книжку, потому что судя по вопросам ты тут совсем плаваешь. Мне лично помогла "Чарльз Петцольд: Код - Тайный язык информатики". Там доступным языком рассказывается собственно о том, как "тупой набор транзисторов" исполняет твои программы.
2. Даже не знаю как отвечать. Ты тут тоже очень плаваешь и я бы порекомендовал тебе прочитать какую-нибудь книжку по Си, можно классику Кернигана и Ричи. А так заголовочные файлы - это... хм... заголовочные файлы. Просто подключив их у тебя ничего не "настроится" и не заработает. Обычно в этих файлах находятся объявления регистров периферии (не путать с регистрами ядра), а ты уже в файлах исходного кода, подключив эти заголовочные файлы, записываешь в регистры определенные значения, или там читаешь, в общем настраиваешь как надо и далее с ними работаешь.
3. Bootloader в контексте микроконтроллеров - это обычно небольшая программа, которая может записать твою прошивку в микроконтроллер по различным интерфейсам (UART, CAN, USB), а затем просто передать ей управление. Для работы совершенно не обязательная штука, просто позволяет в отсутствии отладчика перепрошить МК.
- Реклама
Re: Мелкие вопросы по МК и ПЛИС.
спасибо за овтеты
1) тогда не понимаю, что подразумевается под ядром Linux - я так думал что это нечто программное, что как раз таки инициализирует то аппаратное ядро.
2) ну я это вообщем-то и имел ввиду, что подключается хедер, в котором объявляются регистры... переферия подключается отдельно, а есть 1 или несколько главных заголовочных файлов в которых идёт настройка как раз таки ядра...
я знаю С/С++ поэтому врядли книги начального уровня мне что-то дадут, мне надо как раз про то как транзисторы тупо это всё выполняют))
я уже с QT вовсю воюю и потихоньку winAPIшные штуки разбираю, просто хочу не только уметь пользоваться языком как инструментом, но и понимать что при этом происходит на уровне железа...
3) т.е. бутлоадер это программа в памяти самого мк, которую туда зашивают или не зашивают производители?
1) тогда не понимаю, что подразумевается под ядром Linux - я так думал что это нечто программное, что как раз таки инициализирует то аппаратное ядро.
2) ну я это вообщем-то и имел ввиду, что подключается хедер, в котором объявляются регистры... переферия подключается отдельно, а есть 1 или несколько главных заголовочных файлов в которых идёт настройка как раз таки ядра...
я знаю С/С++ поэтому врядли книги начального уровня мне что-то дадут, мне надо как раз про то как транзисторы тупо это всё выполняют))
я уже с QT вовсю воюю и потихоньку winAPIшные штуки разбираю, просто хочу не только уметь пользоваться языком как инструментом, но и понимать что при этом происходит на уровне железа...
3) т.е. бутлоадер это программа в памяти самого мк, которую туда зашивают или не зашивают производители?
- Gudd-Head
- Друг Кота
- Сообщения: 20092
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: Мелкие вопросы по МК и ПЛИС.
Да. Бутлоадер позволяет прошивать МК, не имея спец. программатора. Например, через USB или ещё как.jazz393 писал(а):3) т.е. бутлоадер это программа в памяти самого мк, которую туда зашивают или не зашивают производители?
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Re: Мелкие вопросы по МК и ПЛИС.
Читаю ДШ на Мегу8 и не вдуплю - что у проца может быть всего 2 прерывания с внешних ног INT0 и INT1?
У Тини2313 чуть ли не любой ноги можно генерить асинхронное прерывание... Что же она круче меги? 
Re: Мелкие вопросы по МК и ПЛИС.
Разве только количество входов внешнего прерывания определяют «крутизну»?aam писал(а):Что же она круче меги?
Re: Мелкие вопросы по МК и ПЛИС.
Понятно - скоро светодиод будем включать с помощью кнопки и Атмега128...
Значит, я правильно понял, что нет их.
Вот пытаюсь понять что у меня прогу так раздуло... Выясняется, что очень тяжелая функция rand() и моя функция, в которой использую операцию "%" совместно с rand().
Также нелегка апроксимация экспоненты (программная реализация переменника с логарифмической характеристикой), которую я записал так:
Библиотека для пульта RC-5 весит 441 байт.
Ну и т. п... Так вот и набежало 3,5 кило на RGB-мигалке...
Кто-нибудь в курсе, как сделать в IAR AVR ассемблерную вставку больше чем на 1 строчку? Приемы из CodeVision не канают(( Если писать много раз asm("команда"), то где гарантия, что команды пойдут подряд и как ставить метки и константы с дефайнов?
Значит, я правильно понял, что нет их.
Вот пытаюсь понять что у меня прогу так раздуло... Выясняется, что очень тяжелая функция rand() и моя функция, в которой использую операцию "%" совместно с rand().
Также нелегка апроксимация экспоненты (программная реализация переменника с логарифмической характеристикой), которую я записал так:
Код: Выделить всё
unsigned char Lin_2_Exp(unsigned char lin)
{
static unsigned char const __flash Table[]={0,2,6,12,23,44,80,145,255};
unsigned char index;
unsigned int dy, exp;
index=lin>>5;
dy=Table[index+1]-Table[index];
exp=(((lin-(index<<5))*dy)>>5)+Table[index];
return (unsigned char)exp;
}Ну и т. п... Так вот и набежало 3,5 кило на RGB-мигалке...
Кто-нибудь в курсе, как сделать в IAR AVR ассемблерную вставку больше чем на 1 строчку? Приемы из CodeVision не канают(( Если писать много раз asm("команда"), то где гарантия, что команды пойдут подряд и как ставить метки и константы с дефайнов?
- КРАМ
- Друг Кота
- Сообщения: 25368
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: Мелкие вопросы по МК и ПЛИС.
Если не секрет, а зачем Вам обилие прерываний с ног?aam писал(а):Читаю ДШ на Мегу8 и не вдуплю - что у проца может быть всего 2 прерывания с внешних ног INT0 и INT1?У Тини2313 чуть ли не любой ноги можно генерить асинхронное прерывание... Что же она круче меги?
И что за нужда иметь на каждую ногу свой вектор?
Просуммируйте все внешние на одну ногу внешнего прерывания и кроме того подайте их каждый на свою.
Семафор, полагаю, Вас не нужно учить писать?
Re: Мелкие вопросы по МК и ПЛИС.
Типа изменение на ноге отслеживать. У меня 2 питания - одно для ленты, другое для светодиодов. А контроллер от обоих по ИЛИ питается, т.е. работает если запитан хотя бы один из источников света или оба сразу. Соответственно если одного из питаний нет, то ЭТИМ управлять не стоит, т.к. ЭТО не запитано и должны быть заблокированы соответствующие кнопки чтоб дров не наломать беспорядочным тырканьем. Если же питание появилось, то надо включить соответствующее устройство программно (БП светодиодов или каналы RGB).КРАМ писал(а):Если не секрет, а зачем Вам обилие прерываний с ног?
Вот и завел я 2 питания на 2 ноги. Щас программно опрашиваю и есть переменная пред. значения. Может семафор и проще...
- КРАМ
- Друг Кота
- Сообщения: 25368
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: Мелкие вопросы по МК и ПЛИС.
Изменения питания происходят за единицы или десятки МИЛЛИсекунд, а латентность прерываний составляет максимум десяток машинных циклов, т.е. пару сотен НАНОсекунд.aam писал(а):Типа изменение на ноге отслеживать.КРАМ писал(а):Если не секрет, а зачем Вам обилие прерываний с ног?
Еще раз вопрос: ЗАЧЕМ Вам столь высокая скорость отслеживания? И что мешает считывать состояние ног по таймеру?
ЗЫ. Кстати, лень смотреть даташит на Мегу, но практически все МК имеют обилие асинхронных прерываний от ног по их ИЗМЕНЕНИЮ, но не для обычного использования, а для ПРОСЫПАНИЯ ИЗ СЛИПА, ибо обычные синхронные прерывания не способны разбудить нетактируемый контроллер...
Последний раз редактировалось КРАМ Пт фев 07, 2014 20:05:15, всего редактировалось 1 раз.
Re: Мелкие вопросы по МК и ПЛИС.
Скорость не нужна, проге нужен факт изменения. Т. е. грубо говоря не if(есть питание==1),
а if(появилось питание==1). Вот и ввел щас флаг пред. состояния, с корым сравниваю имеющееся, и если изменилось - значит был нажат выключатель.
а if(появилось питание==1). Вот и ввел щас флаг пред. состояния, с корым сравниваю имеющееся, и если изменилось - значит был нажат выключатель.
- КРАМ
- Друг Кота
- Сообщения: 25368
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: Мелкие вопросы по МК и ПЛИС.
Вот и считывайте по системному таймеру. Им и мигалки всякие можно сделать, и от дребезга защититься, и порты прочесть на предмет изменений. И на все про все ОДИН ТАЙМЕР...
Re: Мелкие вопросы по МК и ПЛИС.
посоветуйте книгу по ассемблеру хорошую
Re: Мелкие вопросы по МК и ПЛИС.
- AVR Microcontroller and Embedded Systems
Beginers introduction to the Assebly Language of ATMEL-AVR Microprocessors (Gerhard Schmidt,2004, англ)
Tell Me The Truth
Re: Мелкие вопросы по МК и ПЛИС.
а на русском нету?
Re: Мелкие вопросы по МК и ПЛИС.
jazz393, конечно есть, но рекомендовать вам от себя ничего не стану т.к. в свое время мне ни один из них не подошол и пришлось собирать инфу из разных источников по крупицам
дам вам добрый совет: потихоньку подучивайте англицкий
дам вам добрый совет: потихоньку подучивайте англицкий
Tell Me The Truth
Re: Мелкие вопросы по МК и ПЛИС.
jazz393, все зависит от вашего уровня. Я, например, когда только начал осваивать процы, чииал Белов "Создаем устройства на микроконтроллерах". Там начинается с подключения светодиода и заканчивается схемамами байтбластера для прошивки. Все примеры на ассемблере и на Си. Все подробно разжевано, что называется, для школьников/чайников. Речь о процах AVR.


