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

 
1 6 7 8 9 10 11 12
+
-
edit
 

Serge77

модератор

Измерил частоту через конденсатор 0.1 мкф. Показывает 0. Это получается, что на выходе МК просто постоянное напряжение?

Попробую перепрошить, может прошивка испортилась.
+
-
edit
 

Serge77

модератор

Перепрошил, не помогает.
Что же делать? Как ещё можно проверить?
+
-
edit
 

Serge77

модератор

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

В общем, всё работает. Блин, со вчерашнего обеда мучался!
RU termostat #12.11.2005 18:15  @Serge77#12.11.2005 16:01
+
-
edit
 

termostat

аксакал

Serge77> Как всегда, причина была очень проста. Я всего лишь перепутал, как включается режим записи, а как - передачи данных. Т.е. когда я думал, что включил передачу, на самом деле шла запись.
Serge77> В общем, всё работает. Блин, со вчерашнего обеда мучался! [»]
 


А я ж предупреждал: БРЭО должно сообщать о своем состоянии понятными человеку сигналами.

Стандарт это: красный = запись зеленый = воспроизведение.

Ну и опять же я предлагал алгоритм для 007 - в режиме записи данных пусть они тоже выводятся в КОМ порт. это удобно!

Можно всегда на ПК посмотреть что он там меряет, и если захочется радиоканал подключить, то его действительно останется только подключить!

RU termostat #12.11.2005 18:23
+
-
edit
 

termostat

аксакал

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


Человеческий фактор !





+
-
edit
 

Serge77

модератор

termostat> А я ж предупреждал: БРЭО должно сообщать о своем состоянии понятными человеку сигналами.

Да, это я тогда оставил недоделанным. Оставил всего один светодиод, а сделать для него разные варианты свечения не успел. Буду делать.

Запись 32 измерений на точку работает! Сейчас сделал 64, поиспытываю и напишу результаты.
RU termostat #12.11.2005 19:29
+
-
edit
 

termostat

аксакал

Столько записей на точку или измерений с последующим усреднением ? Усреднение в МК или потом в ПК ?

А почему ты на АСМе правишь ? исходный девайс на АСМе был ?
RU termostat #12.11.2005 19:31
+
-
edit
 
+
-
edit
 

Serge77

модератор

termostat> Столько записей на точку или измерений с последующим усреднением ? Усреднение в МК или потом в ПК ?

В секунду записывается 61 точка, каждая точка содержит сумму 32, а теперь уже 64 измерений АЦП. К сожалению, больше 64 в два байта не влазит.

Наверняка же есть библиотека для работы с длинными целыми (4 байта) ? Где поискать?

Все остальные вычисления будут на ПК.

termostat> А почему ты на АСМе правишь ? исходный девайс на АСМе был ?

Исходник Lioxa сделал в VMlab.
RU termostat #12.11.2005 22:58
+
-
edit
 

termostat

аксакал

Serge77> Наверняка же есть библиотека для работы с длинными целыми (4 байта) ?
 


Да есть: Си и Бэйсик называются :-)))))


Serge77> Где поискать?
 


по моему в АпНоутах АВР есть математика на АСМе.

Yuran

опытный

А лучше всего сразу перейти на CodeVision AVR, и писать на сях. Второй вариант скачать AVRStudio последний, и WinAVR они теперь проинтегрены. На сях писать удобнее, сложные алгоритмы можно использовать, да и возможности с арифметикой помощнее избавляют от ошибок и ускоряют процесс разработки B)
 
+
-
edit
 

Serge77

модератор

Yuran> А лучше всего сразу перейти на CodeVision AVR, и писать на сях.

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

Я вроде уже и сам разобрался, как складывать трёхбайтовые числа. Проверять пока не буду ;^))
RU Андрей Суворов #12.11.2005 23:40  @Serge77#12.11.2005 20:06
+
-
edit
 

Андрей Суворов

координатор

Serge77, 12.11.2005 21:06:04:
termostat> Столько записей на точку или измерений с последующим усреднением ? Усреднение в МК или потом в ПК ?

В секунду записывается 61 точка, каждая точка содержит сумму 32, а теперь уже 64 измерений АЦП. К сожалению, больше 64 в два байта не влазит.
 


Серж, а зачем? Зачем больше 64 измерений?

Serge77, 12.11.2005 21:06:04:
Наверняка же есть библиотека для работы с длинными целыми (4 байта) ? Где поискать?
 


Это не нужно. Если ты хочешь повысить точность данных, осредняя шумы, нужно помнить, что удвоение количества независимых измерений даёт лишь пол-разряда. Т.е. 64 измерения дают три разряда, а 256 - четыре.

Так что можно смело перед последним суммированием делить на два сдвигом

Serge77, 12.11.2005 21:06:04:
Все остальные вычисления будут на ПК.

termostat> А почему ты на АСМе правишь ? исходный девайс на АСМе был ?

Исходник Lioxa сделал в VMlab.
[»]
 


 
+
-
edit
 

Serge77

модератор

А.С.> Серж, а зачем? Зачем больше 64 измерений?

А почему нет, если можно?
Хочу попробовать и посмотреть, что получится.

А.С.> Если ты хочешь повысить точность данных, осредняя шумы, нужно помнить, что удвоение количества независимых измерений даёт лишь пол-разряда. Т.е. 64 измерения дают три разряда, а 256 - четыре.
А.С.> Так что можно смело перед последним суммированием делить на два сдвигом

Делить можно не перед, а после суммирования:

Enhancing ADC resolution by oversampling
doc8003.pdf

А можно и не делить. Главное, нужно где-то хранить сумму. Трёх байтов достаточно.

SAA

втянувшийся

termostat>> строчку: beta = 100;
termostat>> компилятор сделал так:
termostat>> LDI R30,LOW(100)
termostat>> MOV R1,R30 [»]
Serge77> Да, на этой ниве сплошные загадки ;^))

да нет я думаю все просто

LDI Rd, K

организация маш.слова 1110KKKKddddKKKK

на Rd остается 4 бита в машинном слове - что выливается в ограничение по кол-ву комбинаций итого 16 регистров. Ну а верхнии или нижнии уже дело предпочтения ;)

И другие команды так же не могут использовать нижнии регистры, выкладываю архив Instruction в котором показаны все слова.

Serge77> В описании регистров про их различие ничего не сказано, но потом я нашёл в описании функции ldi, что она работает только с 16-го регистра.

Не только она! Будь внимателен. В новых ядрах есть возможность хотя бы нулить и FF регистры нижней половины одной коммандой, великий плюс.

Serge77> Как можно проверить, выдаёт ли что-то МК на СОМ порт? Я измерял напряжение между землёй и выходом в порт, получается 5.05 В, точно как между питанием и землёй. Такие же значения получаются и в той схеме, которая передаёт нормально. Измерял цифровым мультиметром.
Serge77> Вообще МК вроде работает, во всяком случае светодиод загорается и гаснет, как положено по программе.
Serge77> Что делать?

Может проводочки позвонить? Общий оторвался может быть?

 

SAA

втянувшийся

описание маш. слов AVR, после скачки переименовать в .rar
[attachmentid=21021]
Прикреплённые файлы:
 
 
RU termostat #14.11.2005 10:04
+
-
edit
 
+
-
edit
 

Serge77

модератор

Serge77>> Да, на этой ниве сплошные загадки ;^))
SAA> да нет я думаю все просто

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

SAA> Может проводочки позвонить? Общий оторвался может быть?

Проблема уже решилась ;^))
RU termostat #14.11.2005 11:52
+
-
edit
 

termostat

аксакал

Serge77 > Это просто, когда всё досконально знаешь, вплоть до организации маш.слова. А когда пишешь оператор, который вроде должен работать, а он не работает, хотя точно такой же рядом работает, то становится грустно.
 


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


SAA

втянувшийся

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

termostat> Вот потому то и востребованы машинно не зависимые языки типа Си паскаль Бэсик. Чтоб не забивать голову всякой чепухой, а делать конкретную работу. [»]

Да все правильно ;) Только вот посмотришь в подстрочник ассемблеровский и волосы дыбом встают ;) Вот пример надо сделать счетчик оборотов/мин, ну проще чем на Си как бы и быть не может. Беру WinAVR, поскольку считаю его сильно продвинутым в оптимизации, и начинаю делать. Сделал - 1,5 Кб ;-E, волосы лезут на затылок.... Открываю lst, смотрю и замечаю очень много явных ляпов, начинаю их ликвидировать переношу глобальные переменные в регистры (может быть он и сам могет - но ключей таких что то не нашел)... Уже лучше 1Кб. Смотрю еще раз нахожу еще несуразности в частности в использовании регистров нижней половины, как могу переделываю, скажем вот такой фокус:

t = 0xFA;

При условии что t неопределен как регистровая переменная превращается в следующее:

eor r3,r3 ; использует r3 вместо t
subi r3, 6

Все хорошо согласен, с оптимизировал исключительно, но глупо ;) беру и завожу глобальную переменную t в регистре r16. Мне не жалко было бы конечно кода или памяти, так как чип ATMega 8515, но он это лепит в прерывание и еще другое лепит - такое что за голову берешься. Ну после всех моих выкрутасов получилось - 900 Кб. Если поизвращаться с startup-ом будет 800 Кб. Но это же охрененный оверхед, как бы раз не в 7-8. Ну жалко мне товарищи, жалко, причем видно же что просто еще не научились оптимизировать автоматом толком.
 
UA SashaM2005 #19.11.2005 23:20
+
-
edit
 

SashaM2005

новичок
На телесистемах в проэктах лежит видеоконтролер.
Не могу его перенести под CVAVR.
Может у кого есть? Или помогите перенести.
Я только начинаю и знаний не хватает.
 
RU termostat #20.11.2005 03:36
+
-
edit
 

termostat

аксакал

Ну тыбы ссылку то дал:


Телесистемы - миниатюрные аудио и видео устройства

Телесистемы - миниатюрные аудио и видео устройства

// telesys.ru
 



проект - Генерация видеосигнала на AVR.

архив с исходниками:

http://telesys.ru/.../VGA_PAL_adapter_AvrFreaks_v_1_22_with%20_src.zip

====


попробуй скачать последнюю версию бесплатного компилятора WinAVR в котором сделан проект:

Atmel Home- Atmel Corporation Technical Library/software/3rd_party/software/WinAVR/WinAVR-20050214-install.exe
(13 Mb)

чтоб не делать МЭЙК-файл вручную можешь работать из VMLAB - там есть пример интеграции.

==

или скачай новейшую AVR-студию - она тоже интегрирована с WinAVR

http://atmel.com/dyn/resources/prod_documents/aStudio4b460.exe (45 Mb)
Это сообщение редактировалось 20.11.2005 в 03:42
RU termostat #20.11.2005 03:56
+
-
edit
 

termostat

аксакал

Вообще не важно ИМХО в каком компиляторе делать,

просто начальный код конфигурации МК удобно сделать с помощью код-мастеров ICC или CodeVisionAVR.
RU termostat #20.11.2005 23:01
+
-
edit
 

SAA

втянувшийся

Господа объясните убогому, что то я туплю. Мега 8515, при тактовой SCK/1024 на Timer0 получается 32768 Гц на срабатывание таймера по AVRBuilder. Перепроверяю точно так, но уже на практике. Стоит внутренний RC на 8MHz. Как не делю на 1024, получается 7812,5 Гц. Блин, где я не понимаю? Что то раньше такого не замечал.
 
1 6 7 8 9 10 11 12

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