[image]

Курс: программирование AVR - часть IV

 
1 6 7 8 9 10 11 12

AAS

новичок
coolnik> по поводу предыдущего поста,
>>Ну я не знал что размер кода отрабатываемого в самом худшем
>>случае (т.е. 5мкс + 10мкс + 50 мкс, произойдет тогда когда будет
>>уже 9 вхождений) укладывается в 5 мкс.
coolnik> а разве можно сделать так, чтобы период был 5 мкс, а код в обработчике, например 15мкс? И никаких глюков по фронтам?

Ну не совсем так, абсолютно синхронно будет приходить 5 мкс фронт, остальные фронты будут запаздывать на +вход/выход из прерывание и длину кода отрабатывающего 5мкс. Что при этом важно !!! При этом важно что бы стек был довольно большим. Вот как будет выгдяеть вход в обработчик:

EVENT0: // + 2 такта
код процедуры обработки 5 мкс // + X тактов
if(status.not_stopped == 1) SKIP // +1,2,3 такта
reti // +4 такта
10mks:
if(counter10mks == rNULL) SKIP // +1,2,3 такта
rjmp 50mks // +2 такта
10mks_count -> counter10mks // +1
status &= bitset_10mks|bitset_notstopped // +1
//======================================
код процедуры обработки 10 mks // +Y тактов
//======================================
status & =bitclear_10mks&bitclear_notstopped // +1
50mks:
if(counter50mks == rNULL) SKIP // +1,2,3 такта
reti
50mks_count -> counter10mks // +1
status &= bitset_50mks|bitset_notstopped // +1
//======================================
код процедуры обработки 50 mks
//======================================
status & =bitclear_50mks&bitclear_notstopped // +1
reti

Такакя бяка называется реентерабельным прерыванием и используется для того что бы никогда не происходило потери прерывания, что в Linux например явление
частое (политика отложенных прерываний) при возникновении онных чаще чем
может обеспечить механизм обработки. Происходит следующее 5мкс отрабаытвается независиом находится обработчик в 10 мкс процедуре, 50 мкс процедуре. Но после отработки 5 мкс происходит возврат в прерванную часть прерывания. Таким образом 5 мкс приходит гарантированно а вов фронты 10мкс и 50 мкс периодически могут гулять (при условии что 10мкс + 50 мкс по тактам превысит 5 мкс) в сторону увеличения периода на 6+Х тактов, где Х-тактов длительность процедуры 5 мкс. Причем!!! процедура надо понимать в виде макропроцедуры, т.е. без вызова (и так тактов мало) и возврата.

Что важно если ты затянешь 10 мкс и 50 мкс на непрогнозируемое значение
то стек просто переполнится и в отличии от PC где это можно контролировать через систему исключений, микроконтроллерное ядро просто рухнет по непрогнозируемому ветктору.

А бритва Оккама навязывает нам (что абсолютно правильно) не множить сущности без достаточной на это необходимости ж-) Так что это так мозги поразминать ж-)

>>Открыть даташит и на последней странички есть табличка в конце каждой строки приведены такты.
coolnik> как обычно :) понял. Посмотрел... Только я на асме не пишу... так что опять же реально оценить не получится :( [»]

Ну тогда VAR Algorithm Builder прямой тебе помощник, мало чем от Си отличается д аеще и удобный такой - отладка с мониторингом по тому же интерфейсу по которому и шьешь. А интерфейс еще проще чем PonyProg.

   
RU termostat #15.01.2005 04:56
+
-
edit
 

termostat

аксакал

Опять дискутируют активно с чего начать АСМ или Си


Телесистемы - миниатюрные аудио и видео устройства

Телесистемы - миниатюрные аудио и видео устройства

// telesys.ru
 



мнения как всегда разделились...

Кстати проскочила ссылочка на отличнй учебник по Си - Таганский универ, он-лайн версия:

404 Not Found

советую!
   
RU termostat #15.01.2005 05:23
+
-
edit
 

termostat

аксакал

+AlS+> на CV AVR только вывод на экран одной строчки (стандартными функциями) занял порядка 1,5К (с оптимизацией по длинне кода).
+AlS+> Хотя ты все это прекрасно знаешь. :-)
 


Нехорошо! думаю и ты сам прекрасно знаешь почему столько памяти съело и на что эта память потрачена! ведь по твоим постингам видно что ты не новичок.

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

Не пользуйся услугой компилятора, форматируй сам вывод данных и память будет целей.

А то получается что CV такой глупый и прожорливый - но это не так.
   
RU termostat #15.01.2005 05:28
+
-
edit
 

termostat

аксакал

coolnik> контакт такой - с вращающейся частью вращается медная втулка, изолированная от корпуса двигана. По ней скользят две неподвижные пластины, на которые подается напряжение.
 


Можно использовать щетки графитовые от генератора автомобильного - работать будет практически вечно - они ведь так в машине и работают по медным кольцам.
   
+
-
edit
 

Yuran

опытный

termostat> Кстати проскочила ссылочка на отличнй учебник по Си - Таганский [»]

Тамбовский !
=)
   

KIT.

новичок
На Renesas M16C Design Contest 2005
Началась раздача китов на платформе м16с.
Если кто разжует мне как пройти тест на профпригодность, чтоб получить сие чудо буду признателен)
   
RU termostat #16.01.2005 04:48
+
-
edit
 

termostat

аксакал

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

ser

новичок

KIT.> Если кто разжует мне как пройти тест на профпригодность, чтоб получить сие чудо буду признателен)

А какие там вопросы задают ?
   
+
-
edit
 

Yuran

опытный

termostat> Техника простая - смотри для чего рекомендует применять компонент производитель, и пиши что хочешь сделать подобное. [»]

И надо быть готовым заплатить за растаможку =)
Не все вендоры делают это за тебя!
примерно 40-50% оценочной стоимости.
   

KIT.

новичок
KIT.>> Если кто разжует мне как пройти тест на профпригодность, чтоб получить сие чудо буду признателен)
ser> А какие там вопросы задают ? [»]

В том то и дело что до вопросов я не дошел :(
   
RU Андрей Суворов #16.01.2005 20:07  @ser#16.01.2005 09:06
+
-
edit
 

Андрей Суворов

координатор

KIT.>>> Если кто разжует мне как пройти тест на профпригодность, чтоб получить сие чудо буду признателен)
ser>> А какие там вопросы задают ? [»]
KIT.> В том то и дело что до вопросов я не дошел :( [»]

Там надо сделать виртуальную лабораторную работу, для чего зарезервировать себе время на неё - притом ближайшие три дня уже очень плотно заняты. Только после этого дают отвечать на вопросы. Отвечая на них, следует держать даташит открытым.
   
Вопрос по SPI интерфейсу. В апноуте написано, что чтобы устройства, повешанные на SPI не мешали программированию, их нужно через резисторы цеплять. Я попробовал без них, все вроде работает. А может такое быть, что когда работает, а когда нет?
И такой же вопрос про обвязку ресета. Там схема мудренная, но вроде без неё работает.
   
+
-
edit
 

+AlS+

новичок
termostat>
+AlS+>> на CV AVR только вывод на экран одной строчки (стандартными функциями) занял порядка 1,5К (с оптимизацией по длинне кода).
+AlS+>> Хотя ты все это прекрасно знаешь. :-)
termostat>
 

termostat> Нехорошо! думаю и ты сам прекрасно знаешь почему столько памяти съело и на что эта память потрачена! ведь по твоим постингам видно что ты не новичок.
termostat> Ты использовал форматированый вывод, т.е. в твой код программы компилятор добавил целиком функцию обеспечивающую различный формат вывода данных.
termostat> Не пользуйся услугой компилятора, форматируй сам вывод данных и память будет целей.
termostat> А то получается что CV такой глупый и прожорливый - но это не так. [»]

Нет, на самом деле я не знаю что такое "форматированный ввод". Если можно сдесь поподробнее..... Плиииз

Позже я пересмотрел этот пример второй раз и не понял откуда взялась цифра в 1,5К. Этот код весил около 300 байт и незначительно увеличивался при добавлении новых строк кода. Т.е. можно сделать вывод о том, что при увеличении кода (сложности программы) компилятор просто делает ссылки на элементарнык подпрограммы, которые уже встречались ранее.

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

С другой стороны Algorithm Builder как я понимаю частная разработка и как только автор перестанет поддерживать свой продукт, или у него его кто то перекупит и угробит к примеру эту прогу(ну так что бы убрать конкурента), весь опыт программирования в этой среде будет не нужен. Предется переходить на что то другое.

Извеняюсь за все написанное, просто я не знаю на чем остановиться. Нужно наверно по немножку понимать все!

Кстати написал небольшую прогу на Algorithm Builder, которая позволяет видеть на экране нажатую цифру(букву) на клавиутуре 4х4 на знакосинтезирующем LCD индикаторе. Может не профессионально, но работает :-) Если кому нужно, оставьте заметку, выложу.




   

+AlS+

новичок
А кто нибуть писал программу для обработки RC-5 для AVR на CV AVR?
Если да, то не могли бы поделиться исходником?

Или хотя бы подскажите простой алгоритм как отловить код нажатой клавиши AVR-кой.

Я нашел документ AVR410: RC5 IR Remote Control Receiver, но может что попроще есть. Просто не совсем понятно зачем там идет синхронизация по каждому перепаду принятого импульса. Может можно обойтись без этого.

   
AD Реклама Google — средство выживания форумов :)
RU termostat #18.01.2005 13:08
+
-
edit
 
1 6 7 8 9 10 11 12

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru