Курс: программирование МК AVR "с нуля"

 
1 6 7 8 9 10 11 12
+
-
edit
 

coolnik

новичок
termostat, 01.03.2004 19:13:45 :
Сбрасывать их или нет звисит от устройства МК (читать ДШ) и собственно программы.
 


Извиняюсь, конечно, но никак не могу догнать, где можно в даташите про это прочитать и как это может зависеть от проги. Ну, если не в лом, объясните, please, в моем случае это нужно или нет. МК AT90S8535.
 
RU termostat #01.03.2004 21:52
+
-
edit
 

termostat

аксакал

Когда читаешь что-то в Акробате то нажми "бинокль" и введи например Flag и поиск. Все надется. Если твоя прога работает так как ты хочешь без сбросов флагов - значит не нужно.

так же поиском ты мог найти "KSPS" когда искал частоту АЦП.
+
-
edit
 
to Coolnik: насчёт как работать с флагами... Попробуй как и с pin'ом...
GIMSK.1=0 //может так и сбросит...

Тут тебе надо табличку регистра прерываний GIMSK... ну и если для таймера, то GITSK (вроде не так написал :P )... Там всё побитно расписано... Если нужно - обращайся залью тебе... ;) В datasheet'ах его не искал... может быть он там и есть...

p.s: Насчёт "сбрасывать флаг прерывания или нет?". Ты что! ;) Вспомни лекции по архитектуре ЭВМ... Когда ты начинаешь обрабатывать прерывание флаг I (англ.буква И ;) ) сбрасывается... это означает что т.к. пришёл запрос на прерывание необходимо запретить все другие возможные прерывания... А то представь пришло прерывание и вдруг ещё одно прёт поверх этого... я думаю МК этого не выдержит :D Когда обработчик "сделал дело и слез с тела" флаг поднимаем и разрешаем прерывания... Тут вроде всё просто...

p.s: если что-то ну никак не идёт на Си в CodeVision... делай асмовские вставки... там всё наглядно...

Поднять флаг (любой какой тебе нужен) на Асме:

sex (где x - это имя флага) :D:lol::P (прикольный пример получился)

"Опустить" флаг:

clx (где x - флаг)

Команды смотри в datasheet'ах...

Вроде всё разжевал... :D

Удачи!
 
+
-
edit
 
ещё...

to Coolnik: лови ссылочки:
//Тут около 100 страниц... Я тут просто на гл.страничке circuitcellar ввёл в поиске "Free Samples" и мне выдало
//кучу ссылок



Я искал так... Можно ещё на Atmel Home- Atmel Corporation поискать... В форме поиска пиши "Free samples"... так в этом форуме Termostat советовал... действительно дельный совет! :) Потом поищи в altavista... вводи Free Samples...

Вот ещё сайт... тут я термодатчики заказал и ещё всякого добра...

Analog, linear, and mixed-signal devices from Maxim

Over 6600 analog and mixed signal ICs in 29 categories. Design tools, free samples, and thousands of application notes.

// www.maxim-ic.com
 



А больше не знаю...
 
RU termostat #02.03.2004 12:41
+
-
edit
 

termostat

аксакал

[ViNCE:],02.03.2004 11:15:53
Вот ещё сайт... тут я термодатчики заказал и ещё всякого добра...

Analog, linear, and mixed-signal devices from Maxim

Over 6600 analog and mixed signal ICs in 29 categories. Design tools, free samples, and thousands of application notes.

// www.maxim-ic.com
 



А больше не знаю...
 


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


\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\


AVR KIT еще будут!!!

Заходите иногда н страничку:


Nothing found for Avr2004 Kit

The page you are looking for has not been found.

// www.circuitcellar.com
 



обещают что еще поступят.

Lioxa

втянувшийся
Написал софт для mega8535 МК для акселерометра (ADXL250).
Задача измерить аналог. сигнал 15 раз в секунду данные записать в EEPROM.
Запускаю timer0/1024 (3.6864meg).
Запускаю ADC измеряю сигнал.
Пишу в память.
Когда вся память заполнена впадаем в спячку.
При нажатии на кнопку, просыпаемся и сливаем данные в com порт (через UART).

Программа написана (на ASM) скоро запишу в МК, посмотрю будет работать или нет :-) Кому интересно могу прислать VMLAB проект.

Спасибо Termostat http://www.avr123.by.ru отличный ресурс.

P.S.
Учится програмировать для МК ПРОСТО УЖАС, и неверьте никому кто вам скажет обратное, НО, когда вы начинаете "понимать" МК и ASM оторваться от программирования просто невозможно :))
 
+
-
edit
 

Serge77

модератор

> Написал софт для mega8535 МК для акселерометра (ADXL250).

И мне такое надо! Уже давно продумываю, собираю информацию. Для себя придумал такой алгоритм:

устройство используется только для записи параметров полёта, никаких сигналов оно не выдаёт. (Выброс парашюта производится автономным магнитным датчиком). Записываются ускорение и давление воздуха, причём сохраняются непосредственно величины, полученные с АЦП, т.е. просто содержимое регистров. Все вычисления производятся после загрузки данных в компьютер.

Устройство имеет переключатель режимов: "запись" и "передача данных".

При включении проверяется положение переключателя. Если это "передача данных", то всё содержимое памяти передаётся на СОМ-порт. Память не стирается, чтобы можно было сделать несколько попыток передачи.

Если переключатель установлен на "запись", то в течение 5 секунд мигает красный светодиод, в это время можно выключить устройство, если запись включена ошибочно. Через 5 секунд начинается запись текущих параметров в память, причём запись идёт в небольшую область памяти как бы циклически до тех пор, пока показания акселерометра не начнут изменяться, т.е. ракета стартует. После этого запись идёт последовательно до полного исчерпания памяти. При этом получается сохранённым и небольшой участок покоя перед стартом, т.е. нулевая линия, причём время ожидания старта неограничено.



А ты датчик давления не будешь использовать? Он лучше высоту измеряет, чем акселерометр. Нам подходит MPX4115 или 4100, они с термокомпенсацией и усилителем, на 1.15 атмосфер и на 1.05. Их можно напрямую к АЦП контроллера соединять, они выдают сигнал от 0.5 до 4.5 В на полную шкалу измеряемого давления.

И ещё - я не понял, у тебя запись в память начинается сразу при включении устройства? Значит его нужно включать в момент старта?

> Программа написана (на ASM) скоро запишу в МК, посмотрю будет работать или нет :-) Кому интересно могу прислать VMLAB проект.

Очень интересно, особенно когда будет работать ;^))
+
-
edit
 
Termostat, можеть ты договоришься об отдельном разделе на форуме?
 
+
-
edit
 

Serge77

модератор

[ViNCE:],03.03.2004 11:32:28
Termostat, можеть ты договоришься об отдельном разделе на форуме?
 


Так всё-таки есть желание сделать специальный подфорум? Балансер спрашивал, а никто не отреагировал.

Lioxa

втянувшийся
чегото я не понимаю ....... ADC на Mega8 10 бит.
Максимальная величина
bin 00000011 11111111
Hex 2FD
Dec 765

4.8828*765=3735 =3,735 В
В даташите написанно
ADC Input Voltage Range 0 - VCC
как можно получить величину от3,735 до 5 В ?????
 
?? Poputchik #03.03.2004 20:20
+
-
edit
 

Poputchik

новичок
Lioxa, 03.03.2004 15:22:09 :
чегото я не понимаю ....... ADC на Mega8 10 бит.
Максимальная величина
bin 00000011 11111111
Hex 2FD
Dec 765

4.8828*765=3735 =3,735 В
В даташите написанно
ADC Input Voltage Range 0 - VCC
как можно получить величину от3,735 до 5 В ?????
 


Шаг считается
Vcc-Vgnd/ADCbit

получаем

В нашем случае шаг Vcc/ADCbit
comprehend?

PS:
bin 00000011 11111111

равен
hex 3FF
dex 1023
 
RU termostat #03.03.2004 21:27
+
-
edit
 

termostat

аксакал

ViNCE>
Termostat, можеть ты договоришься об отдельном разделе на форуме?
 



Serge77>
Так всё-таки есть желание сделать специальный подфорум? Балансер спрашивал, а никто не отреагировал.
 



Ребят, я просто не могу взять на себя ответсвенность за отдельный форум. Мне кажется, что и этот топик не перегружен. я страюсь отвечать по мере сил.

Я готовлю к открытию отдельный топик по дата логеру - называться будет "007 micro"
RU termostat #03.03.2004 21:31
+
-
edit
 

termostat

аксакал

Lioxa, 03.03.2004 15:22:09 :
чегото я не понимаю ....... ADC на Mega8 10 бит.
 



дак ты почитай задачу курса по АЦП - там все расписано.

А начинающим советую Си.
RU termostat #04.03.2004 00:01
+
-
edit
 

termostat

аксакал

У меня мысль появилсь - сделать "мастер класс" в Чате форума. Вживую прогу писать по дата логер с пояснениями и вопросами по ходу, с абсолютного начала.

Примерно 1 час по времени. Если будут желающие то можно время соглсовать - по моему не плохо?

Жаль сеть не скоростная а тоб в режиме мультимед. конференции. Ведь еслиб собраться на 3-4 часа, то я уверен что последние сомневющиеся смело делали б для себя электронику на МК.

RU termostat #04.03.2004 00:27
+
-
edit
 

termostat

аксакал

Poputchik >

Шаг считается Vcc-Vgnd/ADCbit
 


НЕТ ! всегда читайте ДатаШит! особенно когда что-то не понятно.

Шаг для AVR считается вот так:

AREF - Vgnd / (2 ^ ADCbit) и т.к. Vgnd = 0

то шаг будет: AREF / 1024



(Lioxa @ 03.03.2004 )

В даташите написанно
ADC Input Voltage Range 0 - VCC
как можно получить величину от3,735 до 5 В ?????
 


ADC Input Voltage Range - это просто диапазон "безвредного" напряжения для входа АЦП.

А диапазон измерения для AVR будет от 0 до AREF. если AREF < Vcc то напряжения >= AREF будут преобрзовываться в код 1023 (без учета ошибок конечно!)

Поэтому "нормально" померить аналоговые выходы акселерометра и ОСОБЕННО датчика давления MPX4115 4100 можно только внешним АЦП от 12 бит с ошибкой до 1 бита.

Я планирую применить источник опорного напряжения и постоянно включать в результаты код его напряжения, так я избавлюсь от ошибки АЦП AVR ±2 бита, и НАДЕЮСЬ останется только нелинейность в ± 0.5 бит.

Либо датчики давления диференциальные взять н 10 кПа, но там нужно будет перед стартом один выход затыкать.

Что бы прояснить ситуацию по MPX41xx оцените его выходное напряжение в диапазоне высот полета вашей ракеты и посмотрите сколько шагов АЦП это составит. Наверно даже старший байт результата будет неизменным.
+
-
edit
 

timochka

опытный

>Поэтому "нормально" померить аналоговые выходы акселерометра и ОСОБЕННО датчика давления MPX4115 4100 можно только внешним АЦП от 12 бит с ошибкой до 1 бита.
>Я планирую применить источник опорного напряжения и постоянно включать в результаты код его напряжения, так я избавлюсь от ошибки АЦП AVR ±2 бита, и НАДЕЮСЬ останется только нелинейность в ± 0.5 бит.

Идея состоит в том чтоб датчик поставить в мост, и мерять дисбаланс моста. А мост питать от прецизионного источника опорного напряжения. Для уменьшения ошибки можно мерять несколько раз (раз десять) и считать среднее. Тогда ошибка сильно уменьшится (желающие могут посчитать по таблице коеффициентов Стьюдента выигрыш:)).



>Либо датчики давления диференциальные взять н 10 кПа, но там нужно будет перед стартом один выход затыкать.

2 termostat А ты не прикидывал конструкцию баластного объема и крана затычки ?

>Что бы прояснить ситуацию по MPX41xx оцените его выходное напряжение в диапазоне высот полета вашей ракеты и посмотрите сколько шагов АЦП это составит. Наверно даже старший байт результата будет неизменным.

Это для системы спасения? или для измерения общей высоты полета? Можно сделать финт ушами, для определения общей высоты полета поделить выходной сигнал раза в 3-4 и мерять его с большой погрешностью. А для системы спасения сделать логарифмирующий усилитель на диоде и на начальном участке будем иметь нормальную точность. Мерять конечно 2 сигнала отдельно придется. Я, честно говоря, прикидывал на 8-бит АЦП и вроде хватало с таким подходом. Для определеение высоты полета пробовал скользящее среднее.
 
Вот начал сочинять прогу для ПК, управляющую моим контроллером и с удивлением :) обнаружил, что не хватает мне линий LPT. Так что пришлось исключить отдельный сигнал подтверждения приема значений. Теоретически, его функции можно возложить на сигнал прерывания. Когда нахожусь в обработчике прерывания по завершении АЦП бит I регистра SREG все равно аппаратно сброшен. Так что сигнал на INT0 будет не сигнал прерывания, а просто уровень на PD2. Вот только пришлось вернуться к нашим баранам. Как сделать так, чтобы этот сигнал не ставился в очередь на обработку прерывания, то есть на время сделать его не сигналом прерывания, а просто уровнем на ноге. И еще раз повторю свой старый, коронный вопрос: для чего в программе нужно сбрасывать и устанавливать флаги в GIFR. Насколько я понял из даташита он просто отображает наличие события для прерывания и ничего больше.
[Vince] про глобальный бит разрешения прерывания я и сам знаю. :D
 
Забыл войти под своим ником. Всё выше написанное принадлежит мне т.е. Coolnik-у.
 
RU termostat #05.03.2004 09:36
+
-
edit
 

termostat

аксакал

timochka, 04.03.2004 14:26:31 :
 


Идея состоит в том чтоб датчик поставить в мост, и мерять дисбаланс моста. А мост питать от прецизионного источника опорного напряжения.
 


Ну это как Лупой попытаться увеличить точность измерения штангенциркулем. Чтоб сотки мерить нужно брать микрометр а микроны - штихмас.

2 termostat А ты не прикидывал конструкцию баластного объема и крана затычки ?
 


затыкать один вывод я советую перед стартом - т.е. дома, раз и навсегда. Так как до старта мы меряем показания диф. манометра и пинимаем это за давление на уровне старта. Нам ведь достаточно знать высоту относительно точки старта, а не абсолютную величину. Чтоб воздух в заткнутой емкости датчика не менял температуру за не большое время полета нужно датчик в пенопластовую скорлупу поместить.
RU termostat #05.03.2004 10:26
+
-
edit
 

termostat

аксакал

Вот начал сочинять прогу для ПК, управляющую моим контроллером и с удивлением обнаружил, что не хватает мне линий LPT.
 


Во первых, я тебе предлагал перейти на КОМ порт - два провода всего и земля. Как принимать и отправлять байты есть в задачах курса и есть эмуляция терминала в VMLAB.

Во вторых, че ты уперся в LPT? это ж в музейных компьютерах только сохранилось да в моем ноутбуке. Все ПК теперь поддерживают расширеные режимы EPP ECP - там все 8 линий работают на вход и навыход и еще 4 линии от LPT сохранены. Вот по 8-ми линиям принимай данные а 4 линии у тебя для упрвления устройством - более чем достаточно.

Не поленись переписать прогу для МК - это лишнее упражнение, да и сам увидишь она уже лучше будет. Только постарайся как бы с начала писать а не переделывать.



Как сделать так, чтобы этот сигнал не ставился в очередь на обработку прерывания, то есть на время сделать его не сигналом прерывания, а просто уровнем на ноге.
 


нужно взглянуть в ДШ на рисунок-схему логики прерываний, и сразу станет ясно что очерди нет так как логика там без памяти. Есть приоритетность.
И есть отдельный бит разрешения-запрещения для каждого прерывания.


И еще раз повторю свой старый, коронный вопрос: для чего в программе нужно сбрасывать и устанавливать флаги в GIFR. Насколько я понял из даташита он просто отображает наличие события для прерывания и ничего больше.
 



И еще раз повторю свой старый, коронный ответ:

Если твоя прога работает без сброса флагов - значит сбрасывать их тебе не нужно.

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

Прерывание реально нужно - если ты хочешь максимально быстро отреагировать на событие, а флаг позволяет узнать было ли это событие со времени последнего сброса флага.
RU termostat #05.03.2004 10:26
+
-
edit
 

termostat

аксакал

Повторю предложение.

Кто желает попробовать (он-лайн в чате форума) поучится писать "с нуля" програму на Си для МК AVR at90s8535 прошу сообщать мне "личными сообщениями" или здесь.

Я предлагаю 10 марта с 20 до 21 часа.

\\\\

Устройство: Дата Логер измеряющий ускорение и давление через рвные промежутки времени. Действует по алгоритму на подобие описаного выше Сергеем.


Желающим принять участие в мероприятии, кроме удачи,пожелаю поштудировать мой курс avr123.by.ru до задач и особенно почитать задачи курса. Вопросы сразу фиксируйте и затем направляйте мне.

Для участия понадобится ДатаШит на МК AVR at90s8535.И представление о работе акселерометра ADXL150 от Analog.com и датчиков давления Моторола: MPX4100 MPX4115 - в смысле что они дают на выходе - т.е. тоже ДШ поштудировать.
+
-
edit
 

Serge77

модератор

termostat, 05.03.2004 09:26:40 :
Кто желает попробовать (он-лайн в чате форума) поучится писать "с нуля" програму на Си для МК AVR at90s8535 прошу сообщать мне "личными сообщениями" или здесь.
Я предлагаю 10 марта с 20 до 21 часа.
 


Я готов, хотя и не уверен, смогу ли чего-то внести полезного.
Документация по 8535 и обеим датчикам у меня как раз давно распечатана и почти почитана ;^))

А вообще мне кажется что совместное проектирование лучше получится на форуме, чем в чате. Но давайте попробуем.

Lioxa

втянувшийся
А мне в програмировании МК самое тяжолое это "в каком направлении думать" команды вроде понятны но вот что с ними делать неясто, иду на http://www.avr123.by.ru читаю описание процесса .......... остаётся только прикинуть как это выглядит в ASM. Уверен что без этого "направления" ничего бы у меня неполучилось а так сижу пишу одну программу за другой :)

P.S.

В (он-лайн в чате форума) участвовать наверное небуду :( моя твоя непонимает ASM не C++ .
 
RU termostat #05.03.2004 11:54
+
-
edit
 

termostat

аксакал

Lioxa, 05.03.2004 11:40:19 :
В (он-лайн в чате форума) участвовать наверное небуду :( моя твоя непонимает ASM не C++ .
 


Ну дак ты поприсутствуй - может и ощутишь чевой то народ деньги платит за компиляторы Си.
AD Реклама Google — средство выживания форумов :)
RU termostat #05.03.2004 12:24
+
-
edit
 

termostat

аксакал

Serge77, 05.03.2004 11:30:17 :
1. Я готов, хотя и не уверен, смогу ли чего-то внести полезного.

2. мне кажется что совместное проектирование лучше получится на форуме, чем в чате. Но давайте попробуем.
 


ВНОСИТь ни чего не нужно!

Я пиглашаю всех ВЫНЕСТИ ! из он-лайн часа знания и хочу показать ПЕРвейшие шаги.

Посмотрите сколько сообшений типа: "я нчал писать прогу, и пошло... не оторваться"

Вот я и хочу побудить к "Начал ..."

\\\\\\

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

Наверно открою временный топик - вот именно для этого 1 часового эксперимента - а результат уже перенести в "007 ... "

Сергей, если ты будешь один - то урок все равно состоится.

Хочется как то оживить выдачу информации. Наверно почаще надо кнопку "обновить нажимать"

Блин! не ужто нет такой технологии? Что-то типа групповой разработки. Или ограничения только по скорости сети?

Время (Московское! Кхе.. кхе... ) и дату урока можно уточнять - предлагайте. "регистрацию" нчнем за 10 минут до нчала.
1 6 7 8 9 10 11 12

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