roboforum.ru

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

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




Начать новую тему Ответить на тему  [ Сообщений: 2149 ]  На страницу Пред.  1 ... 37, 38, 39, 40, 41, 42, 43 ... 144  След.
Автор Сообщение
 Заголовок сообщения: Re: МикроКонтроллеры начинающим - общие вопросы
СообщениеДобавлено: 10 июл 2008, 18:30 
Не в сети

Зарегистрирован: 16 июн 2008, 13:12
Сообщения: 15
Помогите разобраться. В книге написано что большинство операции (инструкции) в avr выполняются за один машинный цикл который равен одному такту. У меня atmega128, ради интереса написал вот такой код:
Код:
void main(void)
{
DDRB=0x20;
     while(1)
      {
        PORTB.5 = 1;           
        PORTB.5 = 0;           
      }
}

установил частоту тактирования мк 16МГц. В proteusе подключил oscilloskope посмотрел период 400 пикосекунд. получилась частота 2.5 МГц. Почему так мало?


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

Зарегистрирован: 29 апр 2008, 21:15
Сообщения: 4130
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич
1. Большинство, но не все
2. Строка на C в общем транслируется не в одну инструкцию ассемблера
3. На организацию цикла тоже нужно время

PS. 400пс период это 2.5 ГГц

_________________
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!



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

Зарегистрирован: 16 июн 2008, 13:12
Сообщения: 15
Да, я ошибся нс, а пс. Спасибо за исправление. Замерил поточнее 375 нс что соответствует 2666666.667 герц. Если 16000000/2666666.667 то получается 6, соответственно по 2 такта на каждую операцию(лог.1 лог.0 и цикл). Наверное так.


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

Зарегистрирован: 14 май 2008, 15:49
Сообщения: 1585
Откуда: Москва
ФИО: Алексей
На самом деле:
1) На большинство операций. Операции условного ветвления (оные участвуют в цикле) занимают, если память не изменяет 2 или 3 цикла, в зависимости от условия
2) Проверяется просто - любой компилятор Cшный умеет генерить листинг ассемблерного кода, который он будет дальше компилировать. Вы берте этот листинг, открываете хелп к авр-студии, смотрите хелп по каждой из комманд, там указано сколько тактов на ее выполнение. Если не нравица - оптимизируете рукми )

_________________
У меня в голове опилки и длинные слова меня только огорчают.


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

Зарегистрирован: 16 июн 2008, 13:12
Сообщения: 15
пример программного шим с дискретностью шим 10% и частоты 1 герц , только одна проблема, максимальная частото для atmega при частоте тактирования 16МГц около 10КГц... моей затеи на таком медленном камне не реализовать. Выложить не получается. (Если кому интересно могу прислать по почте, так как я начинающий была бы интересна критика)

Добавлено спустя 1 минуту 31 секунду:
Я хотел сказать что написал пример, а выложить не получилось :(


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

Зарегистрирован: 01 июн 2008, 08:48
Сообщения: 63
Откуда: Новосибирск
прог. языки: С++, Asm, PHP
а может ктонить доступно объяснить в чем прелесть использовать кварц скажем на 14.7456 МГц ? для чего это) а то чтото не понимаю... вот скажем надо выдержать 1.5мс для сервы ) както нацело неделится....


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

Зарегистрирован: 21 дек 2006, 19:56
Сообщения: 4468
Откуда: Украина, г.Одесса
прог. языки: Delphi и С
Есть такие специальные кварцы для протоколоа RX232 именно при таких не целых частотах наименьшее число ошибок при любой скорости передачи данных.


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

Зарегистрирован: 01 июн 2008, 08:48
Сообщения: 63
Откуда: Новосибирск
прог. языки: С++, Asm, PHP
и это единственное оправдание в их пользу?)


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

Зарегистрирован: 29 апр 2008, 21:15
Сообщения: 4130
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич
Какое еще оправдание? Это их назначение

_________________
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!



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

Зарегистрирован: 24 окт 2007, 14:31
Сообщения: 14
Вопросы к AVR123.
1) Можете подробней описать строку из урока 05а: WHILE (PINB &(1<<n)). Вроде как выражение типа <<n или >>n на Си означает сдвиг чего-то на N позиций?

2) При изучении STEP03 в VMLAB не понял при каком событии происходит вызов процедуры NMI_SERV? Судя по окну "Registers/flags"прерывания отключены. Что означает "TO DO" в комментариях STEP0x VMLAB?

3)К задаче z02 есть задание - сделать индикацию числа горящими светодиодами. Я вместо PORTA++ сделал декремент, т.е. PORTA--. Визуально счет идет горящими светодиодами, но верно ли я сделал?


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

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
1 и 3 ДА. а 2 не понял откуда ?


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

Зарегистрирован: 24 окт 2007, 14:31
Сообщения: 14
1)Что означает выражение 1<<n ?

2)В VMLAB в STEP03 после инициализации код такой:

Код:
   MAIN
   LDI WDT, 0FFH  ; Watchdog refresh
   CALL SUB_1     ;
   INC VAR_1
   DEC VAR_2      ; Some doing-nothing stuff
   LD A, VAR_1
   LD PA, A       ; Just transfer the VAR_1 to port
   JP MAIN

SUB_1
   CALL SUB_2
   RET

SUB_2
   NOP
   RET

; NMI service routine: produce 4 pulses in PB0
; --------------------------------------------
;

NMI_SERV
   LD A_SAVE, A      ; Save accumulator
   LDI X, 4          ; Load nr. of pulses
LOOP
   RES 0, PB_COPY
   LD A, PB_COPY     ; Loop to generate the pulses
   LD PB, A          ; Use the SET/RES on copy register
   SET 0, PB_COPY    ; and transfer later
   LD A,  PB_COPY
   LD PB, A
   DEC X
   JRNZ LOOP
   LD A, A_SAVE      ; Restore accumulator
   RETI


программа гоняет в основном в MAIN, а в какой-то момент перескакивает на NMI_SERV. Я не пойму по какому событию возникает этот переход.

3) про TO DO - это вроде то что надо сделать.

Для листингов программ и прочих текстов есть тег [ code ]!
<Digit>


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

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
Ринатик писал(а):
1) Что означает выражение 1<<n ?


Сдвиг на n позиций влево - "Си для МК" http://avr123.nm.ru/05.htm

Изображение

Ринатик писал(а):
2) В VMLAB в STEP03 после инициализации код такой:

Эти примеры в VMLAB для микроконтроллера ST6210 от http://www.ST.com


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МикроКонтроллеры начинающим - общие вопросы
СообщениеДобавлено: 23 июл 2008, 14:49 
Не в сети

Зарегистрирован: 24 окт 2007, 14:31
Сообщения: 14
avr123.nm.ru писал(а):
Ринатик писал(а):
1) Что означает выражение 1<<n ?


Сдвиг на n позиций влево

Это я понял. Но это используется для переменной или регистра (или нет?) Получается 1<<n это сдвиг единицы на сколько-то битов (позиций). Я запутался, что означает выражение PINB&(1<<n)? :cry:

avr123.nm.ru писал(а):
Ринатик писал(а):
2) В VMLAB в STEP03 после инициализации код такой:

Эти примеры в VMLAB для микроконтроллера ST6210 от http://www.ST.com

Я знаю откуда это взято. Я их прохожу. Ткните пальцем, кто знает, каким макаром происходит переход на NMI_SERV???


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

Зарегистрирован: 18 сен 2006, 12:26
Сообщения: 18018
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич
сдвиг единицы на n позиций влево

например: есть единица "1"
тоесть 00000001
сдвигаем её влево на 5 позиций
получаем 00010000
тоесть 10000
и уже это число можно писать в порт и включать выключать нужную ногу)

_________________
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 2149 ]  На страницу Пред.  1 ... 37, 38, 39, 40, 41, 42, 43 ... 144  След.

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


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5


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

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