Четверг, 25.04.2024, 13:29
Вы вошли как Гость | Группа "Гости"Приветствую Вас Гость | RSS
Главная | Пропорциональное управление на МК с нуля - Страница 9 - Форум | Мой профиль | Регистрация | Выход | Вход
Обитель RC-инженера
Форма входа
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Модератор форума: ВитГо  
Форум » Разработка электронных устройств » Разрабатываю ! » Пропорциональное управление на МК с нуля (пошаговое строительство пропорционального управления с нуля)
Пропорциональное управление на МК с нуля
ВитГоДата: Суббота, 09.03.2013, 00:42 | Сообщение # 121
Полковник
Группа: Администраторы
Сообщений: 2422
Репутация: 20
Статус: Offline
ну в принципе это уже тебе решать..
в принципе каждое значение АЦП это 2 байта, так что зная адрес начала таблицы значений АЦП не сложно вычислить адрес нужного значения..

сейчас тебе нужно просто сделать генерацию ppm сигнала
можно даже сделать так:
1. считываем значение текущего канала АЦП и выдаем его в OCR регистр для генерации импульса
2. запускаем следующее преобразование следующего канала АЦП
3. переход к пункту 1 если не все каналы передали
4. если все каналы переданы, то запускаем преобразование самого первого канала АЦП и передаем пока паузу между пачками ppm
5. переходим к пункту 1

ну или во время передачи паузы между пачками ppm считать все каналы АЦП (времени хватит!) и тогда уже выдавать каналы беря значения АЦП из памяти..


Виталий (аka ВитГо)
 
uwrteyДата: Суббота, 09.03.2013, 01:24 | Сообщение # 122
Генерал-майор
Группа: Администраторы
Сообщений: 3270
Репутация: 11
Статус: Offline
вот заготовка, засыпаю уже....
попробую на работе украсть немного времени
Прикрепления: 32.asm (5.0 Kb)


не успеваю за своими мыслями......
 
ВитГоДата: Суббота, 09.03.2013, 07:54 | Сообщение # 123
Полковник
Группа: Администраторы
Сообщений: 2422
Репутация: 20
Статус: Offline
нее, не так.

для передачи тебе нужно поднять T1 !
и уже в прерывании T1 решать какой канал передавать ! а не в главном цикле...

а главный цикл у тебя будет занят выводом данных на дисплей например :-)


Виталий (аka ВитГо)
 
uwrteyДата: Суббота, 09.03.2013, 08:04 | Сообщение # 124
Генерал-майор
Группа: Администраторы
Сообщений: 3270
Репутация: 11
Статус: Offline
Я думал что запишу данные в озу. А в главном цикле проверяю все ли каналы АЦП я опросил.. Я не решаю в главном цикле что передавать..
или что? что то я недопонял похоже что то... smile


не успеваю за своими мыслями......
 
uwrteyДата: Суббота, 09.03.2013, 10:15 | Сообщение # 125
Генерал-майор
Группа: Администраторы
Сообщений: 3270
Репутация: 11
Статус: Offline
вот как то так, а потом в главном цикле нужно запустить Т1 ... наверно.. dry че то я сам теперь не уверен
Прикрепления: 9443288.asm (5.0 Kb)


не успеваю за своими мыслями......

Сообщение отредактировал uwrtey - Суббота, 09.03.2013, 11:37
 
ВитГоДата: Суббота, 09.03.2013, 12:00 | Сообщение # 126
Полковник
Группа: Администраторы
Сообщений: 2422
Репутация: 20
Статус: Offline
вот смотри, главный цикл
Код

loop_wait:    ; цикл опроса каналов АЦП

  cpi Temp5, 3   ; прочитали все три канала ?
  brne loop_wait   ; если нет, то циклимся

;*****************************************************************************************************
; прерывание по АЦП
;*****************************************************************************************************



то есть когда temp5 станет равен 5 - то попадем в прерывание и получим сброс :-(


Виталий (аka ВитГо)
 
ВитГоДата: Суббота, 09.03.2013, 12:02 | Сообщение # 127
Полковник
Группа: Администраторы
Сообщений: 2422
Репутация: 20
Статус: Offline
может быть поменять логику программы ?

в главном цикле делать ацп преобразования с ожиданием флага готовности (без прерываний!!) и сохранять результаты в ОЗУ

а в прерывании по совпадению CTC OCR1A toggle делать генерацию ppm


Виталий (аka ВитГо)
 
uwrteyДата: Суббота, 09.03.2013, 12:10 | Сообщение # 128
Генерал-майор
Группа: Администраторы
Сообщений: 3270
Репутация: 11
Статус: Offline
Цитата
то есть когда temp5 станет равен 5 - то попадем в прерывание и получим сброс :-(

дак он ни когда на станет равен 5.
у меня всего три канала 0, 1 и 2

АЦП - однократное.
Сначала читаем три канала АЦП и записываем в ОЗУ

потом ... настраиваем таймер и ... и что то еще делаем biggrin пока не придумал.. biggrin

Цитата
может быть поменять логику программы ?

может быть... очень даже может быть.

надо как то синхронизировать... что то я с мыслями не могу собраться... ( я на работе сейчас... )

о-о, а еще можно настроить режим CTC и в прерывание по таймеру менять настройку АЦП ( АЦП сделать по этому же таймера )


не успеваю за своими мыслями......

Сообщение отредактировал uwrtey - Суббота, 09.03.2013, 13:04
 
ВитГоДата: Суббота, 09.03.2013, 15:12 | Сообщение # 129
Полковник
Группа: Администраторы
Сообщений: 2422
Репутация: 20
Статус: Offline
Цитата (uwrtey)
дак он ни когда на станет равен 5.
у меня всего три канала 0, 1 и 2


ну это я описался, конечно 3

Цитата (uwrtey)
надо как то синхронизировать... что то я с мыслями не могу собраться... ( я на работе сейчас... )


нужно не над синхронизацией думать, а над созданием как бы изолированных автоматов (конечных автоматов). которые будут работать независимо друг от друга..

первый процесс считывает данные с ацп и записывает в память

второй процесс выдает данные ацп в формате ppm (читает из памяти и выдает ! и ему по большей части все равно что он выдает, об этом пусть первый процесс думает)

третий процесс - организует интерфейс с пользователем (дисплей, меню, таймеры полета и т.д.)


Виталий (аka ВитГо)
 
uwrteyДата: Суббота, 09.03.2013, 16:01 | Сообщение # 130
Генерал-майор
Группа: Администраторы
Сообщений: 3270
Репутация: 11
Статус: Offline
угу. попробую еще после работы покумекать.

не успеваю за своими мыслями......
 
uwrteyДата: Суббота, 09.03.2013, 16:32 | Сообщение # 131
Генерал-майор
Группа: Администраторы
Сообщений: 3270
Репутация: 11
Статус: Offline
черновик пока сюда положу
Прикрепления: 8479792.asm (6.6 Kb)


не успеваю за своими мыслями......
 
ВитГоДата: Суббота, 09.03.2013, 22:23 | Сообщение # 132
Полковник
Группа: Администраторы
Сообщений: 2422
Репутация: 20
Статус: Offline
Цитата

; если прочитали все каналы АЦП, то инитим таймер


такой подход не совсем верен !

запускай таймер передачи сразу !! в значения каналов запиши какие нить начальные значения...


Виталий (аka ВитГо)
 
uwrteyДата: Суббота, 09.03.2013, 22:40 | Сообщение # 133
Генерал-майор
Группа: Администраторы
Сообщений: 3270
Репутация: 11
Статус: Offline
есть вопрос

можно ли чтение ADC*

IN temp, ADCL ; читаем значение канала АЦП и сохраняем их в оперативке по порядку
ST Z+, temp ;
IN temp, ADCH ;
ST Z+, temp ;

сделать со старшего байта ?

IN temp, ADCH ; читаем значение канала АЦП и сохраняем их в оперативке по порядку
ST Z+, temp ;
IN temp, ADCL ;
ST Z+, temp ;

Добавлено (09.03.2013, 22:40)
---------------------------------------------

Цитата (ВитГо)
запускай таймер передачи сразу !! в значения каналов запиши какие нить начальные значения...


я не могу в голове выстроить последовательность sad
wacko


не успеваю за своими мыслями......
 
ВитГоДата: Суббота, 09.03.2013, 22:59 | Сообщение # 134
Полковник
Группа: Администраторы
Сообщений: 2422
Репутация: 20
Статус: Offline
Цитата (uwrtey)
можно ли чтение ADC*

IN temp, ADCL ; читаем значение канала АЦП и сохраняем их в оперативке по порядку
ST Z+, temp ;
IN temp, ADCH ;
ST Z+, temp ;

сделать со старшего байта ?

IN temp, ADCH ; читаем значение канала АЦП и сохраняем их в оперативке по порядку
ST Z+, temp ;
IN temp, ADCL ;
ST Z+, temp ;


как там у классиков ? - можно, но деньги вперед ! :-)

в чтении 16ти битного значения с таймера участвует буферный регистр..

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


Виталий (аka ВитГо)
 
ВитГоДата: Суббота, 09.03.2013, 23:00 | Сообщение # 135
Полковник
Группа: Администраторы
Сообщений: 2422
Репутация: 20
Статус: Offline
Цитата (uwrtey)
я не могу в голове выстроить последовательность


ОК, тогда сначала напиши передачу в формате PPM через прерывания...
значения бери из памяти...


Виталий (аka ВитГо)
 
Форум » Разработка электронных устройств » Разрабатываю ! » Пропорциональное управление на МК с нуля (пошаговое строительство пропорционального управления с нуля)
Поиск:


Copyright MyCorp © 2024
Сделать бесплатный сайт с uCoz