[ВХОД]

Главная | Содержание | Форум | Файлы | Поиск | Контакт
NAVIG
О форуме
Резонансные генераторы
Магнитные генераторы
Механические центробежные (вихревые) генераторы
Торсионные генераторы
Электростатические генераторы
Водородные генераторы
Ветро- и гидро- и солнечные генераторы
Струйные технологии
Торнадо и смерчи
Экономия топлива
Транспорт
Гравитация и антигравитация
Оружие
Нейтронная физика
Научные идеи, теории, предположения...
Прочие идеи (разные)
Новые технологии
Коммерческие вопросы
Барахолка
Патентный отдел
Сделай сам. Советы.
Конструкторское бюро
немобильная версия
Печатать страницу
Форум - Сделай сам. Советы. - Домашнему мастеру - Литровый контроллер - Стр.16
<][ 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 ][>
Post:#297467 Date:26.03.2011 (19:09) ...
andy8mm Пост: 297408 От 26.Mar.2011 (15:33)
ДедИван, да, пора наступить на мк-грабли.
Надеюсь подключатся спецы по контроллерам, живее будет и всем интереснее.


Давайте отделим котлеты от мух.
По контроллеру все сюда.
andy8mm | Post: 301349 - Date: 10.04.11(12:09)

пытаюсь расшифровать:
andy8mm Пост: 301338 От 10.Apr.2011 (11:12)
... медитировать над каждой строчкойДедаВаня.

.device tiny25

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

.include "tn25def.inc"

директива .include указывает имя дополнительного файла,
который должен быть использован в процессе ассемблирования.
добавить файл tn25def.inc

.def tm=R16

директива .def присваивает символИческое(то есть из символов) имя Регистру Общего Назначения (аббревиатура РОН).
РОН R16 теперь называется просто tm, по этой кличке мы его будем дальше обзывать в программе.

.cseg (читать c.106 atmelbook.djvu Гребнев В.В. 2002г 176с.)
директива .cseg определяет тип сегмента CSEG
(всего три типа сегментов:
1. CSEG программный сегмент;
2. ESEG ;
3. DSEG - сегмент данных.
В сегменте типа CSEG записываются мнемокоды команд и могут
записываться все директивы ассемблера кроме директивы .BYTE.

.org 0 директива распределяет память контроллера.
Вопрос: куда и кому нолик? (задает начальный адрес)

rjmp безусловный переход к метке reset (смотреть ниже в левой колонке, ещё есть метка timer0не путаем)
reset

.org 16


- Правка 10.04.11(19:07) - andy8mm
dedivan | Post: 301351 - Date: 10.04.11(12:23)
andy8mm Пост: 301349 От 10.Apr.2011 (13:09)
.org 0 директива распределяет память контроллера. ?


Это указание ассемблеру- чтобы он поместил эту команду именно по
адресу 0. Это не простой адрес.
с 0 по 15 ячейки зарезервированы под прерывания.
Каждый вид прерывания автоматически приводит контроллер к одной
из этих ячеек.
Сброс приводит всегда к нулевой.
Здесь и размещаем адрес перехода- куда должен перейти контроллер
после сброса- на 16 адрес- начало программы и настройка регистров.
Адрес 16- это просто первый свободный адрес после зарезервированных ячеек.

А если у нас сработает допустим аналоговый компаратор- АС,
то конроллер перекинет на 7 адрес. Там мы должны разместить
команду перехода на программу обслуживания компаратора.


_________________
я плохого не посоветую
andy8mm | Post: 301354 - Date: 10.04.11(12:34)
dedivan | Post: 301351
Спасибо!
ДедаВаня, мне стыдно отрывать тебя на объяснения ассемблера.
И я знаю что многие ребята стесняются тебя спрашивать,
что бы не отвлекать "по мелочам". Спасибо.

Система команд 8-разрядных RISC микроконтроллеров семейства AVR

cli "all interrapt diss".
функция cli - "Очистить флаг глобального прерывания"

clr стираем в РОН по имени tm все, то есть очищаем его
функция clr - "Очистить регистр"

ldi записываем в tm 0х90.
функция ldi - "Загрузить непосредственное значение"
ВОпрос: Что значит 0х90 и "подстройка тактового генератора"?

out
функция out - "Записать данные из регистра в порт I/O"

sei
(функция sei - "Установить флаг глобального прерывания")

slep
функция slep - "Установить режим SLEEP"
Вопрос: это режим минимального потребления тинькой?

- Правка 10.04.11(12:43) - andy8mm
queet | Post: 301355 - Date: 10.04.11(12:42)
Надо бы заметить, что при старте прерывания запрещены и инструкция CLI не обязательна.
Подстройка тактового - это индивидуально для каждого кристалла. Калибруется при изготовлении и подстройка нужна только если требуется изменить тактовую в некоторых пределах. В вышеприведенном коде первые 4 инструкции можно удалить без вреда.

dedivan | Post: 301356 - Date: 10.04.11(12:45)
andy8mm Пост: 301354 От 10.Apr.2011 (13:34)
функция cli - "Очистить флаг глобального прерывания"

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





Что значит 0х90 и "подстройка тактового генератора"?

Это внутренний RC генератор, частоту его можно изменять,
этой подстройкой мы получаем чтобы она точно была равна 8 Мгц.
От этого будут зависить периоды таймера и соответственно выходного
импульса.

_________________
я плохого не посоветую
dedivan | Post: 301359 - Date: 10.04.11(12:49)
queet Пост: 301355 От 10.Apr.2011 (13:42)
Надо бы заметить, что при старте прерывания запрещены и инструкция CLI не обязательна.
Вообще и регистры чистить необязательно-
вроде нули должны быть.
Но иногда что то бывает - сбоит.
Редко. Береженого бог бережот -сказала монашка надевая презерватив на морковку.

_________________
я плохого не посоветую
andy8mm | Post: 301360 - Date: 10.04.11(12:50)
queet, это только часть кода и мы только начали его изучать.
Думаю рано что то сокращать без понимания начАл. Спасибо за участие.

ВОпрос:"out osccal, tm" выдает на выход(out) значение tm?
На какую ногу тиньки?

- Правка 10.04.11(12:54) - andy8mm
queet | Post: 301361 - Date: 10.04.11(12:55)
ВОпрос:"out osccal, tm" выдает на выход(out) значение tm?

Нет. Эта инструкция отправляет значение tm в регистр, отвечающий за частоту внутреннего RC генератора. Изменяя это значение можно в некоторых пределах изменять частоту тактового генератора.

andy8mm | Post: 301366 - Date: 10.04.11(13:13)
ldi r16, 0b00010111

ldi - записываем в r16 значение 0b00010111
http://radiokot.ru/start/mcu_fpga/avr/06/
ldi - оператор присвоения константы РОН
Примеры:
ldi Temp1,14 - присвоение десятеричной константы (14)
ldi Temp1,0x0E - присвоение шестнадцатеричной константы (0E)
ldi Temp1,0b00001110 - присвоение двоичной константы (00001110)


- Правка 10.04.11(18:51) - andy8mm
dedivan | Post: 301368 - Date: 10.04.11(13:17)
queet Пост: 301355 От 10.Apr.2011 (13:42)
В вышеприведенном коде первые 4 инструкции можно удалить без вреда.

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

_________________
я плохого не посоветую
queet | Post: 301369 - Date: 10.04.11(13:17)
ldi r16, 0b00010111 ldi записываем в r16 pначение 0b00010111

Да.

- Правка 10.04.11(13:19) - queet
andy8mm | Post: 301392 - Date: 10.04.11(14:09)
cli - запрещаем контроллеру реагировать на прерывания.
global interrupt disable - глобальный запрет прерываний (по умолчанию).
Потом, после настройки - разрешим.


sei - разрешаем контроллеру реагировать на прерывания.
global interrupt enable - глобальное разрешение прерываний
Если появится прерывание уходим на другую часть кода,
если нет:
искрим во всех цилиндрах 2000мкс в режиме "ПУСК".
ВОпрос: где спрятаны 2000мкс - в каком регистре сравнения "3E80"?
2000/0,125=16 000 тактов. 1610= 3E80hex= 11111010000000bin




- Правка 10.04.11(20:20) - andy8mm
dedivan | Post: 301399 - Date: 10.04.11(15:04)
andy8mm Пост: 301392 От 10.Apr.2011 (15:09)
где спрятаны 2000мкс



А их тут нет вообще.
Искра идет постоянно- пока датчик холла не закроется.
Он выдаст нолик- сброс на контроллер- и генератор перестанет работать.
Как откроется снова- опять заискрит..

_________________
я плохого не посоветую
dedivan | Post: 301401 - Date: 10.04.11(15:13)
Это самый примитивный вариант пока.
Чтобы он не искрил всю дорогу- сделай еще кусок программы-
которая считает до 2000.
Только учти - контроллер у нас как первоклашка - только до 256 умеет считать.
Поэтому до 2000 считать он не умеет.
Надо заставить его считать например до 200 10 раз подряд.
Попробуй.
У нас есть еще один свободный таймер- можно на нем делать.
а можно чисто програмно.


_________________
я плохого не посоветую
andy8mm | Post: 301402 - Date: 10.04.11(15:28)
У нас есть еще один свободный таймер- можно на нем делать.
а можно чисто програмно.


mcucr - регистр управления микроконтроллером (MCUCR)

Искрим постоянно вариант-1, думаем как остановиться на 2000 - включить энергосбер-режим. Размер : 11.28 KB
Искрим постоянно вариант-1, думаем как остановиться на 2000 - включить энергосбер-режим.
- Правка 10.04.11(15:33) - andy8mm
<][ 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 ][>
У Вас нет прав отвечать в этой теме.
Форум - Сделай сам. Советы. - Домашнему мастеру - Литровый контроллер - Стр 16

Главная | Содержание | Форум | Файлы | Поиск | Контакт