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

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

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

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

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

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

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

 
Опции темы
Непрочитано 14.11.2007, 11:47  
dimonbest
Гражданин KAZUS.RU
 
Аватар для dimonbest
 
Регистрация: 30.04.2006
Сообщений: 984
Сказал спасибо: 5
Сказали Спасибо 18 раз(а) в 14 сообщении(ях)
dimonbest на пути к лучшему
По умолчанию

Сообщение от EXIS
И еще вопрос как разрезать long в CodeVisionAVR побайтно, там для этих целей какие-то операторы типа % используются. Нужно разрезать на байты чтобы послать в USART.
Я например делаю это так:
Код:
unsigned long int a=0x12345678;
a=a & 0x000000FF //самый младший байт
a=(a››8)& 0x000000FF// следующий байт
a=(a››8)& 0x000000FF// следующий байт
a=(a››8)& 0x000000FF// последний байт
Реклама:
dimonbest вне форума  
Непрочитано 14.11.2007, 12:52  
nokazus
Вид на жительство
 
Регистрация: 05.09.2006
Сообщений: 360
Сказал спасибо: 0
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
nokazus на пути к лучшему
По умолчанию

Сообщение от dimonbest
Сообщение от EXIS
И еще вопрос как разрезать long в CodeVisionAVR побайтно, там для этих целей какие-то операторы типа % используются. Нужно разрезать на байты чтобы послать в USART.
Я например делаю это так:
Код:
unsigned long int a=0x12345678;
a=a & 0x000000FF //самый младший байт
a=(a››8)& 0x000000FF// следующий байт
a=(a››8)& 0x000000FF// следующий байт
a=(a››8)& 0x000000FF// последний байт
Я думаю, что Вы так не делаете. Во третей строке кода будет a=0.
Удачи.
nokazus вне форума  
Непрочитано 14.11.2007, 13:24  
dimonbest
Гражданин KAZUS.RU
 
Аватар для dimonbest
 
Регистрация: 30.04.2006
Сообщений: 984
Сказал спасибо: 5
Сказали Спасибо 18 раз(а) в 14 сообщении(ях)
dimonbest на пути к лучшему
По умолчанию

Сообщение от nokazus
Я думаю, что Вы так не делаете. Во третей строке кода будет a=0.
Удачи.
Я написал идею, а не кусок кода со своей программы...
Код:
unsigned long int a=0x12345678; 
unsigned char temp;
temp=a & 0x000000FF //самый младший байт 
temp=(a››8)& 0x000000FF// следующий байт 
temp=(a››8)& 0x000000FF// следующий байт 
temp=(a››8)& 0x000000FF// последний байт
Так работать будет
dimonbest вне форума  
Непрочитано 14.11.2007, 14:01  
nokazus
Вид на жительство
 
Регистрация: 05.09.2006
Сообщений: 360
Сказал спасибо: 0
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
nokazus на пути к лучшему
По умолчанию

Сообщение от dimonbest
Я написал идею, а не кусок кода со своей программы...
Код:
unsigned long int a=0x12345678; 
unsigned char temp;
temp=a & 0x000000FF //самый младший байт 
temp=(a››8)& 0x000000FF// следующий байт 
temp=(a››8)& 0x000000FF// следующий байт 
temp=(a››8)& 0x000000FF// последний байт
Так работать будет
Идея хорошая, но и так работать не будет. У Вас в 4, 5 и 6 строках стоит сдвиг на 8, а само "a" не меняется, поэтому в строках 4, 5 и 6 будет одинаковое значение temp.
Удачи.
nokazus вне форума  
Непрочитано 14.11.2007, 15:04  
tempora
Почётный гражданин KAZUS.RU
 
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
tempora на пути к лучшему
По умолчанию

Сообщение от nokazus
Идея хорошая, но и так работать не будет.
Душишь творчество на корню!
tempora вне форума  
Непрочитано 14.11.2007, 15:28  
nokazus
Вид на жительство
 
Регистрация: 05.09.2006
Сообщений: 360
Сказал спасибо: 0
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
nokazus на пути к лучшему
По умолчанию

Сообщение от tempora
Сообщение от nokazus
Идея хорошая, но и так работать не будет.
Душишь творчество на корню!
Никапельки. Просто хотел сказать, что не стоит спешить. Основные заковыристые ошибки программист (и не только) делает по невнимательности. Найти их очень трудно, т.к. "простой" участок просматриваешь бегло. Поэтому нужно воспитывать в себе внимательность.
2 EXIS
Обратите внимание на режим таймера CTC (сброс при совпадении). Тогда перезагрузку счетчика таймера вручную делать не надо.
Удачи.
nokazus вне форума  
Непрочитано 14.11.2007, 16:09  
dimonbest
Гражданин KAZUS.RU
 
Аватар для dimonbest
 
Регистрация: 30.04.2006
Сообщений: 984
Сказал спасибо: 5
Сказали Спасибо 18 раз(а) в 14 сообщении(ях)
dimonbest на пути к лучшему
По умолчанию

Сообщение от nokazus
Никапельки. Просто хотел сказать, что не стоит спешить. Основные заковыристые ошибки программист (и не только) делает по невнимательности. Найти их очень трудно, т.к. "простой" участок просматриваешь бегло. Поэтому нужно воспитывать в себе внимательность.
Код:
unsigned long int a=0x12345678; 
unsigned char temp; 
temp=a & 0x000000FF //самый младший байт 
temp=(a››8)& 0x000000FF// следующий байт 
temp=(a››16)& 0x000000FF// следующий байт 
temp=(a››24)& 0x000000FF// последний байт
Прошу прощения, действительно из-за спешки
dimonbest вне форума  
Непрочитано 14.11.2007, 17:00  
tempora
Почётный гражданин KAZUS.RU
 
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
tempora на пути к лучшему
По умолчанию

Сообщение от nokazus
Поэтому нужно воспитывать в себе внимательность.
То была шутка юмора.
tempora вне форума  
Непрочитано 14.11.2007, 20:33  
Panda_Y2k
Временная регистрация
 
Аватар для Panda_Y2k
 
Регистрация: 30.08.2005
Адрес: Ротовска йобласть
Сообщений: 84
Сказал спасибо: 2
Сказали Спасибо 3 раз(а) в 2 сообщении(ях)
Panda_Y2k на пути к лучшему
По умолчанию

в авр время реакции на прерывание 4 такта плюс сюда добавить время обработки одного прерывания. если на время обработки прерывания запретить это же прерывание, то при больших частотах может быть не правильное значение частоты, если не запретить, стек сорвать можно. от сюда и считайте верхнюю граничную частоту измеряемую
Panda_Y2k вне форума  
Непрочитано 15.11.2007, 09:00  
nokazus
Вид на жительство
 
Регистрация: 05.09.2006
Сообщений: 360
Сказал спасибо: 0
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
nokazus на пути к лучшему
По умолчанию

Сообщение от Panda_Y2k
в авр время реакции на прерывание 4 такта плюс сюда добавить время обработки одного прерывания. если на время обработки прерывания запретить это же прерывание, то при больших частотах может быть не правильное значение частоты, если не запретить, стек сорвать можно. от сюда и считайте верхнюю граничную частоту измеряемую
Я предложил измерять частоту тайиером/счетчиком, а не программно по внешним прерываниям. И тогда максимальная частота равна половине тактовой. Если по каждому фронту уходить в прерывание, то действительно МК нужно принять запрос, среагировать на него, обработать прерывание, выйти. Еще и основной код должен когда-то отрабатываться. Об этом было написано выше в теме.
Что касается
Цитата:
если на время обработки прерывания запретить это же прерывание, ... , если не запретить, стек сорвать можно.
ИМХО это бред. Экспериментально на AVR такую ситуацию не пробовал. Но точно знаю, что во многих процессорах ядро не станет обрабатывать прерывание, пока обрабатывается прерывание с таким же приоритетом. Например, в MSC-51 есть скрытый регистр, запрещающий реакцию на прерывания (с таким же или низшим приоритетом) на время от начала реакции (занесения в стек адреса возврата) до исполнения команды reti. За счет этого следующее прерывание отрабатывается только после того, как закончится текущее, будет выполнен возврат к основному коду, выполнится один оператор основного кода. Такой алгоритм обработки прерываний наблюдается у многих процессоров Intel. Я не думаю, что в AVR сильно отличается. Поэтому никакого сорванного стека, если висит запрос на прерывание, быть не может. Просто прерывание будет обработано позже, или вообще не будет, если запрос на прерывание (флаг) был снят до окончания обработки текущего прерывания. Стек можно сорвать если неправильно выходить из прерывания и подпрограмм.
Удачи.
nokazus вне форума  
 

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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Схема на частотомер smg123 Измерительное оборудование 5 08.09.2007 02:48
Частотомер Ч3-34А Modul-x Поиск схем. Делимся схемами 0 24.08.2007 23:00
Частотомер ЦД2120.1 Slava_shp Поиск схем. Делимся схемами 0 10.08.2007 21:18
Частотомер KLMZ Измерительное оборудование 4 12.01.2007 12:06


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


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