[image]

Краткий Курс - программирование AVR - часть VII

 
1 2 3 4 5 6 7 12
RU termostat #11.10.2005 01:21
+
-
edit
 

termostat

аксакал

Осталось лишь найти в хелпе VMLAB сообщение что
он поддерживает Мегу8535 -

я такого не нашел.

====

Юзайте Мегу16 и выше, они "правильней".
   

Yuran

опытный

Я тут наткнулся в даташите на то что при переключении ног с ввода на вывод и обратно на Меге(8) есть особенность
(
Поскольку одновременная запись в регистры DDRx и PORTx невозможна, то при переключении между третьим состоянием ({DDxn, PORTxn} = 0b00) и выводом лог. 1 ({DDxn, PORTxn} = 0b11) должно возникнуть промежуточное состояние или с подключенным подтягивающим резистором ({DDxn, PORTxn} = 0b01) или с выводом лог. 0 ({DDxn, PORTxn} = 0b10). Как правило, переход через состояние с подключением подтягивающего резистора эквивалентно состоянию вывода лог.1, если вывод микроконтроллера связан с высокоимпедансным входом. В противном случае, необходимо установить бит PUD регистра SFIOR для выключения всех подтягивающих резисторов на всех портах
)

Кто нибудь натыкался на проблемы совместного использования ног на ввод и вывод? Какие есть особенности?

Походу напоролся на что то подобное в своём УСБ девайсе когда читаю порты, сделал вывод дебаг информации на КОМ порт всегда зачитывается 1, по всей видимости где то налажал либо я либо компилер =) сегодня буду править =)

P.S. помню заходила речь про внутренний кварц, господа, если не хотите иметь закорючков при передаче по КОМ порту вешайте внешний кварц! сначала поленился не стал подключать разные экземпляры мег писали буковки по своему, впаял кварц всё как рукой сняло на любых экземплярах ! =)
   
Это сообщение редактировалось 11.10.2005 в 12:02
RU termostat #11.10.2005 12:05
+
-
edit
 

termostat

аксакал

PORTB=!PORTB;
 


не очень хорошо для изменения одного бита PB0,
так как записывает данные во все 8 бит PORTB

лучше как в курсе:

PORTB^=1;

или в общем виде для бита N
PORTB^=(1<<N);

подробней для разных компиляторов в задаче 1 курса:

avr123.nm.ru/mkkurs01.htm


karavaev >
... после зашивки в MEGA8535, естественно, железка PB0 не меняет.
 


т.е. VMLab тут не при чем.
   
RU termostat #11.10.2005 12:17
+
-
edit
 

termostat

аксакал

Yuran> P.S. помню заходила речь про внутренний кварц, господа, если не хотите иметь закорючков при передаче по КОМ порту вешайте внешний кварц!
 


Дык! там жешь НЕ КВАРЦ ! там жешь RC-генератор ! у него стабильность по моему обещана ±3% и написано применять его в приложениях не требовательных к таймингу.

Хотя можно откалибровать его по соответсвующим АппНоутам Atmel.

Но кварц он и в африке кварц.
   
RU karavaev #11.10.2005 12:30  @termostat#11.10.2005 01:21
+
-
edit
 

karavaev

новичок
termostat> Осталось лишь найти в хелпе VMLAB сообщение что
termostat> он поддерживает Мегу8535 -
termostat> я такого не нашел.
termostat> ====

1. Я специально обновлял VMLab 3.10 до 3.11, писали, что он m8535 поддерживает. При создании проекта в чекбоксе выбора контроллера m8535 появился, сейчас посмотрел, в хелпе, действительно, его в списке поддерживаемых нет, хотя хелп тоже обновляется.
DrDoom, вы на каком VMLab-е симулировать пробовали ?

2. Еще я грешным делом на список "электрических узлов" в проекте посмотрел для m8535, там есть несколько ног PExx, порта A вообще нет, похоже, VMLab его с кем-то путает.

3. Попробовал зашить в камень hex, который получился для m8535 (код в первом моем сообщении, где эмулятор в прерывание никогда не заходит). Вы будете смеяться, контроллер перебрасывает напряжение на PB0 ИНОГДА не периодически.

В общем, ясно, что с m8535 кто-то из VMLab и WinAVR корректно не работает, но хотелось бы понять кто.

termostat> Юзайте Мегу16 и выше, они "правильней". [»]

Хотел, не было в магазине, расхватали.

   
RU karavaev #11.10.2005 12:48  @termostat#11.10.2005 12:05
+
-
edit
 

karavaev

новичок
termostat>
termostat> PORTB=!PORTB;
termostat>
 

termostat> не очень хорошо для изменения одного бита PB0,
termostat> так как записывает данные во все 8 бит PORTB
termostat> лучше как в курсе:
termostat> PORTB^=1;
termostat> или в общем виде для бита N
termostat> PORTB^=(1<<N);
termostat> подробней для разных компиляторов в задаче 1 курса:
termostat> avr123.nm.ru/mkkurs01.htm
termostat>
karavaev >
termostat> ... после зашивки в MEGA8535, естественно, железка PB0 не меняет.
 

termostat> т.е. VMLab тут не при чем. [»]

Скорее всего, действительно, виноват WinAVR, но остается вариант, что он белый и пушистый, а VMLab ему неправильно данные о контроллере в makefile передает (или через чего они там общаются)? Можно такие тесты проделать: 1. на чистом WinAVR корректно код скомпилировать и попробовать проэмулировать в Студии (или мне hex пришлите, я его зашью в железку и сообщу результат)
2. проэмулировать в VMLab результат компиляции кода в каком - нибудь надежном компиляторе (IAR хвалят вроде?)
Я к сожалению ни с ИАРом ни со студией дела почти не имел, так потыкался в рамках священного талмуда (avr123.nm.ru), поэтому, быстро сам не смогу реализовать, зато если кто-то пришлет hex могу мгновенно зашить и результат сообщить.
   
RU termostat #11.10.2005 15:10
+
-
edit
 

termostat

аксакал

ну вот вам из CodeVisionAVR

... и уже громче: ЮЗАЙТЕ МЕГУ16 -32 -64 -128 -256
Прикреплённые файлы:
 
   
RU termostat #11.10.2005 15:12  @karavaev#11.10.2005 12:30
+
-
edit
 

termostat

аксакал

[QUOTE]
karavaev> Хотел Мегу16, не было в магазине, расхватали. [»] [QUOTE]

Ну дак! вот m8535 и лежат в магазине.

   
RU karavaev #11.10.2005 18:05  @termostat#11.10.2005 15:10
+
-
edit
 

karavaev

новичок
termostat> ну вот вам из CodeVisionAVR

HEX зашил, контроллер работает. Буду менять софт.

termostat> ... и уже громче: ЮЗАЙТЕ МЕГУ16 -32 -64 -128 -256 [»]

Буду юзать.
   
+
-
edit
 

DrDoom

новичок
DrDoom, вы на каком VMLab-е симулировать пробовали ?
 

На VMLab 3.11. Попробуйте использовать связку CodeVision и AVRStudio.
   
RU termostat #11.10.2005 18:22
+
-
edit
 

termostat

аксакал

Еще раз повторю! в VMLab 3.11 в хелпе в списке поддерживаемых моделей

НЕТ Мега8535! зачем же ждать от него правильной симуляции ???

Есть МЕГи16 -32 -64 -128 - на них можно сделать все что нужно.

   
+
-
edit
 

DrDoom

новичок
Еще раз повторю! в VMLab 3.11 в хелпе в списке поддерживаемых моделей
 

Да не переживайте, VMLab - действительно отличная программа, просто привык к AVRStudio.
   

SAA

втянувшийся


termostat> Так как юзер моделям в VMLAB запрещено потреблять ток то нужен внешний токоизмерительный резистор.

С этого момента поподробней. У меня конечно несколько иного плана образование и я не профи, но в рамках своей специальности электротехнику знаю (или знал лет 10 назад :) ). Что значит что юзер компоненту запрещено потреблять ток?

Т.е. пользовательский компонент не может менять потенциалы на входах-выходах. Грубо говоря нельзя на входе в компонент поменять потенциал, имитируя просадку напряжения? Если говорить о "просадке", так это только в случае когда потребляемый ток от источника не обеспечивается . В рамках проекта VMLab в "априори" можно считать что все токи обеспечиваются ИП без падения напряжения. По сути даже в "реале" не существует приборов меряющих ток напрямую (ну все наверное знают что амперметр меряет ток как падение напряжение на шунте). Если для VMLab к примеру описывать модель резистора (хотя она уже есть) то ток через него легко расчитать, верно? Так что ты хотел сказать фразой что в VMLab запрещено потреблять ток?

termostat> Я не знаю как сделать иначе.
termostat> В других симуляторах нет ограничения по непотреблению тока.

Все таки в чем это выражается?

termostat> Конденсатор славится имеено своим РЕАКТИВНЫМ сопротивлением которое тем ниже чем выше частота. Соответсвенно ток через конденсатор зависит от скорости изменения напряжения на нем.

А ток через конденсатор не зависит от заряда?

termostat> termostat: Без ОУ не могу обойтись, потому что я не знаю какое в начале симуляции напряжение должно быть на обкладках конденсатора, знаю только что между ними 0.
termostat> SAA: Почему не знаешь? В начале симуляции есть возможность запросить потенциал на любой ноге юзер компонента.
termostat>
 

termostat> Ну например к одному концу конденсатора подключены 2 резистора по 10 кОм на +5 и на землю а к другому концу 10 кОм на землю.
termostat> Какое напряжение ты запросишь в начале симуляции?
 


Единственно возможное на входа-выходах пользовательского компонента (пусть это будут А и Б) связанных с обкладками конденсатора.

и кто в начале симуляции виртуально замкнет концы конденсатора чтоб VMLAB мог просчитать что ЕСТЬ конденсатор и через него течет ток?
 


Так я и замкну если на то пошло в пользовательском компоненте в процедуре
void On_simulation_begin(); Точнее симулирую замыкание, в результате как я понимаю на ногах компонента А и Б должно установится какое то одно напряжение Ubeg.

termostat> Я вижу такой "замыкатель" в виде диф. ОУ с плавающей землей.
termostat> Я не говорю что нельзя по другому сделать, я просто так придумал, если кто придумает с меньшим колич деталей то я ЗА !
 


Ты считаешь что ОУ нельзя симитировать внутри пользовательского компонента?

termostat> Мне хочется модель правильно работающую - какой она будет не суть важно.
 


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

termostat> дождаться новой версии VMLAB где компонент сможет потреблять ток.
termostat> и надеятся что лекарство будет доступно.
 


Хмм, скажи а чем тебя привлекает именно VMLab?

termostat> Не описывать, ведь ни какая графика и чек боксы не нужны, а емкость задавать как параметр при объявлении в проекте.
 


Да это верно.

Я долго занят был потому обстоятельно ответить не мог, извиняюсь ;)
termostat> А так хороший бизнес был бы написать такой симулятор для
termostat> популярных ARM7 ARM9 - щас это в тему было бы.
 


Видимо я твои слова услышал, до того как ты их сюда написал :). Исключительно в собственных интересах конечно, коммерческие обстоятельства меня не интересуют. ;)
   
RU termostat #12.10.2005 10:06
+
-
edit
 

termostat

аксакал

SAA >
Что значит что юзер компоненту запрещено потреблять ток?
 


в usercomp.pdf написано так:

Any analog/digital subsystem, with the following restrictions:
- Infinite impedance in inputs, either analog or digital. Current flow through pins is not
allowed in this release.
-
-
 


т.е. входы имеют бесконечное сопротивление и ток через них не протекает.

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

SAA >
Грубо говоря нельзя на входе в компонент поменять потенциал, имитируя просадку напряжения?
 


нет. у входа бесконечное входное сопротивление.

SAA >
По сути даже в "реале" не существует приборов меряющих ток напрямую (ну все наверное знают что амперметр меряет ток как падение напряжение на шунте).
 


Ты не прав.

Измерить можно только ток !

Ток создает различные физические явления которые используются для измерения.

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

SAA >
Если для VMLab к примеру описывать модель резистора (хотя она уже есть) то ток через него легко расчитать, верно?
 


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

SAA >
Хмм.., я показал твою модель своему другу электронщику по специальности, ты знаешь он говорит что не все чисто с твоей моделью.
 


конкретно что ?

SAA >
Его слова "в случае с конденсатором нужно рассуждать о заряде, а не о напряжение".
 


Круто...

Если посмотреть школьный учебник физики то увидим: Q = C * U


Ты б сделал что я написал в описании к схеме, если время будет.
   

SAA

втянувшийся

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


А двунаправленные вход-выход pin компонентов в этом случае не работают?

termostat>
SAA >
termostat> Грубо говоря нельзя на входе в компонент поменять потенциал, имитируя просадку напряжения?
 

termostat> нет. у входа бесконечное входное сопротивление.

Даже если это вход-выход?

termostat>
SAA >
termostat> По сути даже в "реале" не существует приборов меряющих ток напрямую (ну все наверное знают что амперметр меряет ток как падение напряжение на шунте).
termostat>
 

termostat> Ты не прав.
termostat> Измерить можно только ток !
termostat> Ток создает различные физические явления которые используются для измерения.
 


Хмм, ну ты сам и ответил все таки ток как уопрядоченное движение электронов измерить нельзя, не в состоянии человечество посчитать колво эллектронов за dt прошедщих к примеру через участок L проводника. Хотя бы из за квантовых ограничений ;) Ток меряют косвенно, в том числе и по эл-магнитым явлениям:

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


Ну вот еще раз ответил, измерение проводится косвенно и меряют на самом то деле величину МЕХАНИЧЕСКОЙ СИЛЫ, точнее силы Ампера пораждаемой протеканием тока по проводнику. Fa=I*dL*B*sinA. Слишком грубое измерение тока согласен? А по поводу вольтметра я хотел сказать только одно что и разность потенциалов и ток протекающий через шунт меряется именно вольтметром, так как именно на шунте получают разницу потенциалов. Только вот прибор вольтметр с включенным к нему параллельно эталонным шунтом называется амперметром.

А на самом то деле тебе чуть раньше батарейки нужно было опыт раскрыть и показать где там ток ;) опыт с султаничками и электроскопом, с нитью кулона. Вообщем все сводится в итоге к элементарной частице имеющей заряд ;)

Но мы удаляемся от сущности наших "баранов". ;)

termostat>
 

termostat> Если резистор соединен с землей или питанием то ток расчитать легко, а модель будет такая же сложная как для конденсатора.
termostat>
SAA >
termostat> Хмм.., я показал твою модель своему другу электронщику по специальности, ты знаешь он говорит что не все чисто с твоей моделью.
 


termostat> конкретно что ?

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

termostat>
SAA >
termostat> Его слова "в случае с конденсатором нужно рассуждать о заряде, а не о напряжение".
termostat>
 

termostat> Круто...
termostat> Если посмотреть школьный учебник физики то увидим: Q = C * U

Сказанное им относилось к части поста с твоими рассуждениями про реактивную составляющую сопротивления конденсатора и зависимости его от скорости изменения и величине напряжения на обкладках. А согласись U для этого случая имеет вид намного сложнея чем просто Uc, как бы там еще и "омега тэ" не участвовала и кое какая тригонометрическая функция. Но это все не по теме. К сожалению мой приятель "темнила" и из него трудновато вытянуть что то что он сам полностью себе не разжевал.
Впрочем и из тебя тоже.

termostat> =============
termostat> Ты б сделал что я написал в описании к схеме, если время будет.

Вот как?! Это значит уже без раговоров, а то надоел понимаешь объяснять не буду делай как написано и не задавай лишних вопросов ;)) ну-ну.

Я же обещал, значит сделаю, дело не в том что я "не хочу", наоборот я тоже "хочу" пользоваться конденсатором. Только пользоваться а не гемороится ;) с трех этажным описанием его модели в VMLab (!!!!!!!!!). Если варинтов не останется сделаю за день, но для этого как минимум нужна модель для VMLab - опиши и прицепи а то мне не с чем работать. А описание его реализации в VMLab я понял с трудом, поэтому и обратился к третьей стороне. ;)
   

SAA

втянувшийся

У кого нибудь случайно не завалялось неболшьих кусочков кода под ARM7DTMI (желательно без THUMB кода), если есть в ассемблере то замечательно в двойне. Если есть бинарник то хотелось бы точно знать что делает.
Вчера излазил все апноуты на Atmel и ARM - The Architecture For The Digital World с нулевым результатом, проверяю свой эммулятор ядра ARM7 и очень нужна подобного рода помощь. Было бы очень хорошо если у кого есть куски с арифметикой и предикатами.
   
RU termostat #13.10.2005 10:13
+
-
edit
 

termostat

аксакал

Здесь спроси:



только вопрос конкретней изложи.
   

SAA

втянувшийся

termostat> Здесь спроси:
termostat> Error 404

Спасибо.


P.S. Так что по поводу модели VMLab для конденсатора, мне же проверять то на чем то нужно. Сам я к сожалению повторить твой рисунко в VMLab не смогу, не доконца понимаю.
   
RU termostat #13.10.2005 12:26
+
-
edit
 

termostat

аксакал

SAA, вот:

Исходные данные для создания модели плавающего конденсатора - называется FCAP.

Пользовательский компонент для моделирования "плавающего" конденсатора имеет:

2 входа: in1 in2

2 выхода: Out1 Out2

плюс 6 резисторов и Операц.Усилитель (ОУ) в проекте VMLAB.

===== Теория :

Так как модель ОУ в VMLAB идеальная и резисторы R2-R5 равны то
напряжения относительно напряжения в точке in2 будут:

CA = Out1 - Out2

in2 - это виртуальная земля диф. усилителя на ОУ с коэф. усиления -1

=====

Плавающий моделируемый конденсатор имеет выводы CA и CB
(к ним добавляется номер в проекте VMLAB - например СА1 СВ1)

1) в начале симуляции конденсатор разряжен и на Out1 и Out2 нужно вывести одинаковое напряжение - по 2.5 вольт - т.е. напряжение на CA будет равно напряжению на in2 и практически равно CB

2) компонент измеряет разность напряжений in2 - in1 и делит ее на сопротивление 0.1 Ом (т.е. реально умножает на 10) получается ток через конденсатор.

3) интегрируя ток по времени определяется накопленый заряд в конденсаторе в кулонах.

4) поделив накопленый заряд на емкость конденсатора вычисляет напряжение V на его обкладках

5) НЕ ОБЯЗАТЕЛЬНЫЙ ! - учитывается падение напряжение на токоизмерительном резисторе:
V = V + CB - in2; или V = V + in1 - in2;

6) вычисленное напряжение V на конденсаторе выводится в виде разности напряжение между Out1 и Out2

Out1 = 2.5 + V/2;
Out2 = 2.5 - V/2;

ВСЁ ! теперь между обкладками моделируемого конденсатора CA и CB напряжение V


R2 - R5 по 100 кОм

R6 1 Ом


Так как VMLAB не работает с напряжениями выходящими за рамки питания, нужно осознано применять модель конденсатора!

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

Для проверки работы модели конденсатора сделал прошивку FCAP.hex - она заставляет МК ATmega16 изменять уровень на PB0 каждые 32766 мкСек.

Схема ниже голубой линии описана в файле проекта для VMLAB - vm_cap.prj

Это создает фронты и спады на выводе CA1 моделируемого конденсатора С1. При этом на ножке CB1 должны происходить аналогичные резкие перепады и затем плавныое возвращение напряжения к уровню 2.5 вольт.
Прикреплённые файлы:
_fCAP.rar (скачать) [18,4 кБ]
 
 
   
Это сообщение редактировалось 13.10.2005 в 15:50

=NIK=
NIK2

новичок
Подскажите пожалуйста, есть ли где-нибудь в сети рускоязычные варианты хелпов к си-компеляторам. У меня с английским туго :(
   

SAA

втянувшийся

=NIK=> Подскажите пожалуйста, есть ли где-нибудь в сети рускоязычные варианты хелпов к си-компеляторам. У меня с английским туго :( [»]

А к каким компиляторам?

   

SAA

втянувшийся

Подскажите про VMlab.
Есть ли возможность имиттировать отключение питания на MCU?
В 3.11 можно использовать несколько MCU при симуляции?
Какими способами можно симулировать линию переменного тока 220В?

To Термостат:

Ты вроде бы заикался про описание диода? А транзистор могешь? ;) Кондером занимаюсь но из-за загруза времени маловато, постараюсь на этой неделе сделать.
   
RU termostat #19.10.2005 10:39
+
-
edit
 

termostat

аксакал

SAA >
Есть ли возможность имиттировать отключение питания на MCU?
 


Нет.

но можно наверно исхитрится. Попробовать подать "0" на ресет - при этом состояние МК будет очень похоже на "нет питания"

SAA >
В 3.11 можно использовать несколько MCU при симуляции?
 


Да. два МК.

SAA >
Какими способами можно симулировать линию переменного тока 220В?
 


ни как. можно симулировать почти меандр получающийся после резистора 10-20 МОм подключеного к 220 вольт. Обычно так делают детекция перехода через 0 сетевого напряжения.

SAA >
Ты вроде бы заикался про описание диода?
 


нет я четко выговаривал - ДИОД

SAA >
А транзистор могешь?
 


Могу конечно - только идеальный, как и все модели в VMLAB.

Если нужно опишу.

Но модели таких (силовых, исполняющих) элементов не нужны, ведь у нас не симулятор аналоговых схем.

VMLAB симулятор МК.
Т.е. достаточно увидеть что МК делает с базой или затвором транзистора. При этом база-эмитер это по сути диод а затвор это конденсатор на землю.

Более точно поведение силовых и иных анлогово-цифровых цепей можно промоделировать в MicroCap или OrCAD PROTEL и еще в куче всего.

=======

Диод идеальный - модель нужна, потому как позволяет симулировать популярные схемы клавиатур с диодами и множество полезных схемм на ОУ.

=======

Я б еще хотел модели тех ПОПУЛЯРНЫХ компонентов, примеры работы с которыми идут в комплекте компилятора CodeVisionAVR и отсутствуют в моделях VMLAB.

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

=======

и обязательно ! Логгер того что на ногах МК и в любых узлах в файл. Это супер средство.
потому что результаты симуляции можно будет анализировать влюбой проге! хоть в ЛабВьюв хоть в МатЛаб МАтКаде да и в Екселе даже.
   

Lioxa

втянувшийся
Помогите кто может плс.
Есть два контроллера (мега8) с одного на другой надо передать информацию по USART.
Соеденил TX c RX установил одинаковый битрэйт. Посылаю одни числа получаю совсем другие, может кто знает что за фигня ?
   
AD Реклама Google — средство выживания форумов :)

Yuran

опытный

Lioxa> Помогите кто может плс.
Lioxa> Есть два контроллера (мега8) с одного на другой надо передать информацию по USART.
Lioxa> Соеденил TX c RX установил одинаковый битрэйт. Посылаю одни числа получаю совсем другие, может кто знает что за фигня ? [»]

Во первых используй кварцы одинаковые на двух Мегах, и перепроверь регистры отвечающие за UART может не заенейблил что то или U2X выбрал режим.
   
1 2 3 4 5 6 7 12

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