roboforum.ru

Технический форум по робототехнике.
Текущее время: 01 ноя 2024, 14:17

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




Начать новую тему Ответить на тему  [ Сообщений: 2149 ]  На страницу Пред.  1 ... 126, 127, 128, 129, 130, 131, 132 ... 144  След.
Автор Сообщение
 Заголовок сообщения: Re: МикроКонтроллер AVR начинающим - общие вопросы
СообщениеДобавлено: 15 май 2012, 12:41 
Не в сети
Аватара пользователя

Зарегистрирован: 10 ноя 2011, 12:02
Сообщения: 5691
Откуда: Turku, Finland
Skype: elmot73
прог. языки: Java и все-все=все
ФИО: Илья
dccharacter писал(а):
Я кстати смотрю на витрины и на репозитории и с неудовольствием отмечаю, что LPC-шки попопулярнее будут. Хотя те, кто сравнивал LPC и STM говорят, что ЛПС-шки - это ад и там черт ногу сломит...

Значит будем сидеть на непопулярных стмах, гнуть пальцы на lpc и хихикать над фьюзострадальцами :friends:
Холивар-холивар, ня-ня-ня-ня-ня!
Ща мне еще малинка приедет - я тут над всэми ржать в голос буду. :P


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МикроКонтроллер AVR начинающим - общие вопросы
СообщениеДобавлено: 15 май 2012, 12:54 
Не в сети
Аватара пользователя

Зарегистрирован: 15 сен 2007, 13:03
Сообщения: 6338
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович
когда начинал - не убил не одного.. покоцал чем-то потом.. тоже порты вроде..

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

_________________
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МикроКонтроллер AVR начинающим - общие вопросы
СообщениеДобавлено: 15 май 2012, 13:01 
Не в сети
Аватара пользователя

Зарегистрирован: 10 дек 2010, 13:16
Сообщения: 4995
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей
Duhas писал(а):
когда начинал - не убил не одного.. покоцал чем-то потом.. тоже порты вроде..

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

та же фигня :-(((

_________________
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МикроКонтроллер AVR начинающим - общие вопросы
СообщениеДобавлено: 27 май 2012, 11:01 
Не в сети

Зарегистрирован: 24 апр 2010, 14:47
Сообщения: 736
Откуда: Уфа
прог. языки: avr asm
Ассемблер.
Задача - преобразовать двухбайтное двоичное число в десятичное для последующего вывода на блок семисегментных индикаторов. Ткните носом, пожалуйста, как оно по уму делается? Максимум, до чего я додумался, это пройтись по битам числа, раскладывая веса битов по нескольким регистрам, каждый из которых будет представлять собой один разряд десятичного числа, а затем выполнить переносы, если число в регистре больше 9. Но это как-то долго и ресурсоемко.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МикроКонтроллер AVR начинающим - общие вопросы
СообщениеДобавлено: 27 май 2012, 14:15 
Не в сети
Аватара пользователя

Зарегистрирован: 20 сен 2007, 11:44
Сообщения: 491
Откуда: Харьков
Skype: Victorovych_FF
прог. языки: ASM
ФИО: Иван ВикторОвич
я обычно так и делал, если придумаешь что-то менее ресурсоемкое - напиши


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МикроКонтроллер AVR начинающим - общие вопросы
СообщениеДобавлено: 27 май 2012, 14:40 
Не в сети
Аватара пользователя

Зарегистрирован: 13 янв 2011, 15:25
Сообщения: 8033
Откуда: Санкт-Петербург
legion писал(а):
Задача - преобразовать двухбайтное двоичное число в десятичное для последующего вывода на блок семисегментных индикаторов.

Десятичная коррекция делается сдвигом регистра влево и команда "десятичная коррекция"
И так n-раз (n-ширина корректируемого слова)
В интел51 это "daa". msp430 - "dadd"
искать и курить: BIN2BCD
вот для мсп430:
Код:
;------------------------------------------------------------------------------
BIN2BCD;     Subroutine for converting 16 bit binary to BCD
;              Input: R12 is 16 bit binary
;            Working: R15 is used and not saved
;             Output: R14|R13 5 digit BCD
;------------------------------------------------------------------------------
             mov #16,R15
             clr R14
             clr R13
L$1          rla R12
             dadd R13,R13
             dadd R14,R14
             dec R15
             jnz L$1
             ret
                                             ;

В микроконтроллерах, где отсутствует эта команда, ее делают программно

Добавлено спустя 2 минуты 10 секунд:
ой :shock: , в мсп430 круче сделано, там сложение с десятичной коррекцией :oops:

Вот нашел подробное описание:
http://chipmk.ru/index.php?option=com_c ... &Itemid=61


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МикроКонтроллер AVR начинающим - общие вопросы
СообщениеДобавлено: 27 май 2012, 17:11 
Не в сети

Зарегистрирован: 24 апр 2010, 14:47
Сообщения: 736
Откуда: Уфа
прог. языки: avr asm
Дмитрий, спасибо огромное, по ссылке отличная статья! Собрался уже ваять код, а гугл вдруг невзначай вывел на такой документ: Application notes AVR204: BCD Arithmetics.

UPD: Еще один вариант. По сравнению с подпрограммой из апноута требует меньше программной памяти и регистров, заявленная скорость выполнения в 3+ раз выше.
UPD2: Во втором варианте результат в неупакованном виде. Для упакованного вот. В два раза меньше регистров и еще быстрее, но кода больше на целых три слова.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МикроКонтроллер AVR начинающим - общие вопросы
СообщениеДобавлено: 28 май 2012, 08:19 
Не в сети

Зарегистрирован: 24 апр 2010, 14:47
Сообщения: 736
Откуда: Уфа
прог. языки: avr asm
UPD3: Хитрая подпрограмма для преобразования 1 двоичного байта в трехзначный неупакованный BCD формат. 15 слов, 18 тактов, 3 старших регистра, смотреть внизу страницы.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МикроКонтроллер AVR начинающим - общие вопросы
СообщениеДобавлено: 28 май 2012, 12:04 
Не в сети
Аватара пользователя

Зарегистрирован: 07 окт 2009, 00:29
Сообщения: 6028
Откуда: СПб
Вы бы написали, для какого конкретно проца вы хотите эту шнягу (AVR-ки тоже разные бывают) и по каким параметрам оптимизировать - время выполнения или размер флешки.
Ну и самый-то возможно актуальный вопрос - нафига упираться и оптимизировать вывод на индикатор, если человек в любом случае не воспримет эти циферки чаще, чем несколько раз в секунду? :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МикроКонтроллер AVR начинающим - общие вопросы
СообщениеДобавлено: 28 май 2012, 13:04 
Не в сети

Зарегистрирован: 24 апр 2010, 14:47
Сообщения: 736
Откуда: Уфа
прог. языки: avr asm
Я алгоритм искал. А так - базово-ширпотребная мега48. Оптимизировать сейчас не собираюсь, выложил то, что нашлось по запросу AVR BCD, чтобы раскрыть вопрос для тех, кто будет искать ответ в будущем.

Ну и, а вдруг мк будет загружен по самое не могу, а тут еще и выводить на индикатор надо? :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МикроКонтроллер AVR начинающим - общие вопросы
СообщениеДобавлено: 28 май 2012, 13:23 
Не в сети
Аватара пользователя

Зарегистрирован: 07 окт 2009, 00:29
Сообщения: 6028
Откуда: СПб
legion писал(а):
Я алгоритм искал.

Вы искали алгоритм, а сравниваете реализации. В AT90S (из аппноута) умножения нет, например, а в последнем примере оно используется.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МикроКонтроллер AVR начинающим - общие вопросы
СообщениеДобавлено: 28 май 2012, 17:48 
Не в сети

Зарегистрирован: 24 апр 2010, 14:47
Сообщения: 736
Откуда: Уфа
прог. языки: avr asm
Я их не то чтобы сравниваю, я их описываю. Хмм, а где сказано, что апноут для AT90S?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МикроКонтроллер AVR начинающим - общие вопросы
СообщениеДобавлено: 27 июн 2012, 22:11 
Не в сети

Зарегистрирован: 24 апр 2010, 14:47
Сообщения: 736
Откуда: Уфа
прог. языки: avr asm
Да чтож такое. Пытаюсь использовать Input Capture на меге16а, а оно беспрерывно генерит Input Capture прерывания, хотя не должно. Уже вроде все что можно попробовал. На ICP1 включил внутреннюю подтяжку, оставлял пин без провода, снаружи к плюсу подтягивал. Noise canceler включил, выключил на всякий пожарный компаратор и даже AIN1 к плюсу подтянул, менял фронт срабатывания. Ну никак.
В гугле нашел несколько случаев такой проблемы, но без решений. Бывало у кого-нибудь так?

UPD: Выяснил, что начинает спамить прерыванием после первого переполнения счетчика. Что это значит пока не понял.
В ходе выяснения обнаружил баг студии. В режиме WGM = 12 в студии таймер не считает, если OCR1A = 0, т.к. срабатывает флаг прерывания по сравнению на первом же счете. Сразу показалось, что это не правильно, так оно и вышло. В МК в этом режиме таймер как минимум не обращает внимания на флаг по сравнению. Непонятно пока до куда считает. По даташиту вроде должен обнуляться при Input Capture Flag.

UPD1: Так... не может же оно обнуляться на первом же такте после переполнения из-за того, что ICR1 = 0? И ставить флаг ICF1. Это же нелогично? :shock:
До первого переполнения вроде никак на уровень на ноге ICP1 не реагирует.

Код инициализации и прерывания:
OUTI - макрос, пишет константу в I/O через регистр R17 (OSRG).
Код:
      OUTI   DDRB,   1<<PB0
      
      OUTI   ACSR,   1<<ACD

      OUTI   PORTD,   1<<PD6

      OUTI   TCCR1B,   1<<WGM12|1<<WGM13|1<<CS10|1<<CS12
      IN      OSRG,   TIMSK
      ORI      OSRG,   1<<TICIE1
      OUT      TIMSK,   OSRG


Код:
TIMER1_CAPT:      CLI
         PUSH   OSRG   

         SBI      PORTB,   0            ; моргаем
         SBIC   PINB,   0
         CBI      PORTB,   0

         OUTI   UDR,   111

         POP      OSRG
         SEI
         RETI


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МикроКонтроллер AVR начинающим - общие вопросы
СообщениеДобавлено: 28 июн 2012, 09:31 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
В PROTEUS попробуйте и уточните по какому событию у вас прерывание настроено.

_________________
Читайте !


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МикроКонтроллер AVR начинающим - общие вопросы
СообщениеДобавлено: 28 июн 2012, 10:26 
Не в сети

Зарегистрирован: 24 апр 2010, 14:47
Сообщения: 736
Откуда: Уфа
прог. языки: avr asm
С протеусом не работал, чувствую, если сейчас начну, то еще и баги протеуса пособираю. :crazy: При симуляции в студии код работает отлично, прерывание срабатывает только при надлежащем изменении PD6.

Прерывание по фронту/спаду (пробовал и так и эдак) сигнала на ноге Input Capture (PD6). В даташите говорится, что вроде еще по компаратору это прерывание работает, пробовал его выключать, не помогло. Нога PD6 притянута к + внутренней подтяжкой и снаружи через резистор. Может, внутренняя подтяжка мешает? Не помню, пробовал ли без нее.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 2149 ]  На страницу Пред.  1 ... 126, 127, 128, 129, 130, 131, 132 ... 144  След.

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


Кто сейчас на конференции

Сейчас этот форум просматривают: Bing [Bot] и гости: 4


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

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO