Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить

уяснение для себя из обучалки местной

Чт сен 21, 2006 18:44:36

Итак, как вы помните, в нашем контроллере 16 РОН (регистров общего назначения): R16…R31. С любым из них мы можем сделать все что угодно. Просто полная анархия! Однако, я бы не рекомендовал злоупотреблять количеством используемых регистров. Это очень усложняет процесс написания программы. Я обычно использую 4 или 5 регистров - только самое необходимое в данный момент. Остальное - в оперативке (ОЗУ).

- а какие тогда регистры относятся к оперативке??
- и как узнать сколько у меня этих регистров
- у меня клавиатура имеет 40 кнопок, я должен их отследивать
где я их должен хранить?? (или где они хранятся сами)
как мне получить значение "0" если у меня кнопка нажалась с порта скажем "А"????

Пт сен 22, 2006 03:50:01

Прочитай внимательно и вдумчиво обучалку. Там очень хорошо все написано :)))

Пт сен 22, 2006 09:36:24

2 Mamonth
уважаемый Заядлый эл,
обычно я сам справляюсь и обращаюсь за помощью в крайних случаях, но ввиду какой-то огранниченности или рассеянности, я не смог разобраться, посему выписал только эти вопросы КРАТКО и, как мне кажется, ЯСНО.

Если не затрудняет плз втолкните в меня эти знания :?
буду очень признателен, а то я такими темпами до 1 ноября не здам запрограмированный ATmega162
(меня шеф посадил за это в надежде что я смогу разобраться во всем)
это конечно радует, что обо мне хорошего мнения, но откровенно не зная даже элементарных озов схемотехники, построения логической схемы работы МК - это задница..

НАДЕЮСЬ на Вас друзья

Пт сен 22, 2006 19:00:09

По пунктам:
1. к оперативке относятся переменные. Напр:

.dseg

CountRate: .byte 1
MelAddL: .byte 1
MelAddH: .byte 1

2. из датащита на микросхему. Сколько в данном случае - не знаю.
3. смотри динамическую индикацию. аналогично считывается и клавиатура. Там наверно даже есть про динамический опрос клавы (лень смотреть)

Re: уяснение для себя из обучалки местной

Сб сен 23, 2006 06:36:03

CyberMerlin писал(а):
Итак, как вы помните, в нашем контроллере 16 РОН (регистров общего назначения): R16…R31.


бред! читайте даташит.

Сб сен 23, 2006 07:32:53

CyberMerlin писал(а):2 Mamonth
уважаемый Заядлый эл,
обычно я сам справляюсь и обращаюсь за помощью в крайних случаях, но ввиду какой-то огранниченности или рассеянности, я не смог разобраться, посему выписал только эти вопросы КРАТКО и, как мне кажется, ЯСНО.

Если не затрудняет плз втолкните в меня эти знания :?
буду очень признателен, а то я такими темпами до 1 ноября не здам запрограмированный ATmega162
(меня шеф посадил за это в надежде что я смогу разобраться во всем)
это конечно радует, что обо мне хорошего мнения, но откровенно не зная даже элементарных озов схемотехники, построения логической схемы работы МК - это задница..

НАДЕЮСЬ на Вас друзья


Ну во-перых, статус присваевается не по знаниям а по количество постов :)
Во-вторых,
1. Оперативка - это оперативка. Если ты объявляешь переменную то данные хранятся в оперативной памяти.
Ты можешь обозвать регистр по-своему, тогда будешь работать именно с РОН и данные будут храниться там. Например:

.def Temp=R16
Определяет имя РОНу, т.е. существует только для удобства программирования, транслятор потом сам все заменит. А человек удобнее работать с чем-то определенным.

Digit: .byte 4
Обявление переменной в опреативной памяти

MyArray:
.db 1,15,4,9,12,145,67,90
Обявляется массив с именем MyArray в памяти программ.

2. У оперативки нет понятия регистров, есть понятие область. Начиная с адреса такого-то и заканчивая таким-то.

3. Используй отбор по маске, это один из самых простых способов. Есть ещё способ с использованием АЦП, но здесь он не освещался. С одной стороны он достаточно удобен, с другой не слишком надежен при большом количестве кнопок и нестабильном питании.

И смотри, есть прямая а есть косвенная адресация. Если ты програмил на языках высокого уровня, то там есть переменная, и есть переменная-указатель. Просто переменная хранит значение, а переменная-указатель адрес (ну и длину) на ячейку памяти компа.
Здесь аналогично, просто все это на асме. Использование косвенной адресации позволяет работать с блоками данных (аля массивы) на уровне адресации.

Ну вот примерно так. Надеюсь не очень сумбурно.

Пн сен 25, 2006 09:56:23

1. как я понял у меня с R0-r31 - РОН причем из них R26-R31 - X-Z- регистры косвенной адресации
Digit: .byte 4
Обявление переменной в опреативной памяти
MyArray:
.db 1,15,4,9,12,145,67,90
Обявляется массив с именем MyArray в памяти программ


(а как же так получается, ведь лово стоящее до знака ":" - метка
т.е. в данном случает метки MyArray: И Digit: -)
или если я правильно понял, просто по этой метке прога будет обращаться к этой команде, а там... этот массив??
3. (по поводу клавиатуры)
я узнал что есть способ матричного расположения кнопок на портах клавы, т.е. через один порт вывод скажем единички и на другом порту (ввод) смотрится результат, если нолик - кнопка нажата

Ну вот примерно так. Надеюсь не очень сумбурно

да нет очень даже нормально - я таким же образом мыслю

Пн сен 25, 2006 11:34:34

Советую скачать и посмотреть АпНоуты AVR обязательно и PIC хотябы список.

Пн сен 25, 2006 11:37:07

CyberMerlin писал(а):1. как я понял у меня с R0-r31 - РОН причем из них R26-R31 - X-Z- регистры косвенной адресации
Digit: .byte 4
Обявление переменной в опреативной памяти
MyArray:
.db 1,15,4,9,12,145,67,90
Обявляется массив с именем MyArray в памяти программ


(а как же так получается, ведь лово стоящее до знака ":" - метка
т.е. в данном случает метки MyArray: И Digit: -)
или если я правильно понял, просто по этой метке прога будет обращаться к этой команде, а там... этот массив??


А вот теперь тебя точно надо в обучалку ВНИМАТЕЛЬНО читать и почитать что-нить про косвенную адресацию.
И XYZ регистры, но не только косвенной адресации... и вполне прямой тоже.

Пн сен 25, 2006 11:45:20

avr123
appnotes - скачан и он один всего, но там как понял стандартная настройка портов и всякого чего я пока не знаю

Гость
- не ну конечно не только, простоэтоя уже понял, просто там последний ВЫВОД (последняя строчка) в которой так и написано что это именно косвенной адресации, ну не сцуть
все равн спасиб, за уточнение
ОБУЧАЛКУ, то читаю, т.е. изучаю...
а мне туды только по поводу Регистров x-Z посмотреть или то что про метки написано???
т.е. я чего-то не допонял про метки, объявление епремнных и массивов??типа про косвенную адресацию?

Пн сен 25, 2006 16:15:29

CyberMerlin писал(а):avr123
appnotes - скачан и он один всего


Фантастика! я штук 40 видел ... и у ПИК штук 600.

Пн сен 25, 2006 16:37:01

тактактактак
чего-то не пойму( из обучалки ясно было, что в пакете tavrasm directories - appnotes и в ней есть аппноут - открыл, а таммм.. как понял просто конфигурирование по умолчанию МК
тогда скажи мне чего такео аппноут?? я совсем убьюсь иначе

и вопрос 2
- в обучалке сказано
Все векторы расположены в самом начале адресного пространства, и занимают первые 11 адресов ПЗУ (с $000 по $00A

чего-то не пойму, у меня таблица Reset & Interrup Vectors содержит 28 строки последний адрес 0х036 - восстановление готовности памяти программ (если правильно перевел)
или это нормальое течение вещей???
и вопрос 3
- чем отличается собственно RJMP & JMP????
первое Перейти относительно, а вторая - просто ПЕРЕЙТИ (это из gaw.ru взял) а какова разница между сим и сим????

Пн сен 25, 2006 18:53:37

CyberMerlin писал(а):скажи мне чего такео аппноут??


апноут - это "апликейшн ноут" - пример применения компонента публикуемый его производителем.

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

Спроси пожалуйста у админа если действительно интересно.

или посмотрите соседний топик "с чего начать" ну или на мой ник обратите внимание.

Вт сен 26, 2006 10:30:23

апноуты разные бывают, видимо. авр123 прав, апноут есть файлик, ПДФный скорее всего, с конкретными схемами включения, дополнительными параметрами и с примерами использования. Но видимо есть второе значение слова апноут - то самое, в котором ты и запутался

Вт сен 26, 2006 10:35:30

avr123
а я это еще вчера понял и посмотрел, только поздно было уже
спасибо большое
И КСТАТИ, а почему на ВЫ???? я лично буду на это смотреть (чтоб на ВЫ обращались) только после 75 лет... а пока мне меньше, плз на ТЫ
угу?? :-)
ОДНА книга - хорошо, а тысяча - обременительно по времени :-)
две - самое-то!!!!!
так тактак пока уйду в себя, займусь обучением, после завтра загляну, мож дае после после завтра ))

- А ЧЕГО ПО ВОПРОСАМ 2 И 3??????????

Вт сен 26, 2006 17:35:36

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


И в большинстве случаев еще и с .ZIP архивом с готовыми РАБОТАЮЩИМИ исходниками программ ! для МК.

Обязательно нужно иметь их.

Вт сен 26, 2006 17:36:36

список названий (на русском языке) апноутов по АВР есть на gaw.ru

Ср сен 27, 2006 09:01:59

угу спасибо с нотами разобрался
еще...
и вопрос 2
- в обучалке сказано
Цитата:
Все векторы расположены в самом начале адресного пространства, и занимают первые 11 адресов ПЗУ (с $000 по $00A

чего-то не пойму, у меня таблица Reset & Interrup Vectors содержит 28 строки последний адрес 0х036 - восстановление готовности памяти программ (если правильно перевел)
или это нормальое течение вещей???
и вопрос 3
- чем отличается собственно RJMP & JMP????
первое Перейти относительно, а вторая - просто ПЕРЕЙТИ (это из gaw.ru взял) а какова разница между сим и сим????

еще вопросик по таймеру

Ср сен 27, 2006 11:14:45

1- в обучалке существует только OCIE1A бит регистра TIMSK
у меня же в ATmega162 есть еще OCIE1B, OCIE2, OCIE0.
это тоже компараторы таймера??
и в случае ОБУЧАЛКИ какой мне можно использовать??
2- почему используем TCCR1B, а не TCCR1А????

-как я понимаю используется 16-битный компаратор, а почему мы не используем 8-битный???

Ср сен 27, 2006 14:13:30

почему в примерах ОБУЧАЛКИ используется ret для выхода из подпрограммы
а поцему мы не можем воспользоваться nop????
а Rcall не использовать????
Ответить