|
Таймер, Непонятно, как можно так писать? |
|
|
|
Feb 1 2007, 18:55
|

Ambidexter
    
Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282

|
Цитата(bodja74 @ Jan 31 2007, 20:49)  Цитата(smk @ Jan 31 2007, 21:03)  Все философское хорошо, но выучить ассемблер нужно. Только прога нужна, работающая раньше, чем ассеблер выучен будет. Вот кто сможет предложить ассемблерную вставку, обеспечивающую на ноге 4000 Гц при тактовой 128000 Гц и длительностью 0,25 с ????
Код ldi R21,$32 LABEL1: ldi R20,$06 nop LABEL2: sbi portB,1 subi R20,$01 brne LABEL2 ldi R20,$05 nop nop LABEL3: cbi portB,1 subi R20,$01 brne LABEL3 nop nop nop subi R21,$01 brne LABEL1 Дергаем на ноге portB.1 С Вас пиво. Влезу чуток. Кроме того, что у вас длительность единицы составляет 34 такта вместо 16, а длительность нуля - 27 вместо 16, там еще требуется обеспечить 1000 циклов, а не 50, так что это с вас поллитра пива, каждому, кто читал эту ветку(:-).
--------------------
Делай сразу хорошо, плохо само получится
|
|
|
|
|
Feb 1 2007, 20:52
|

Ambidexter
    
Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282

|
Цитата(bodja74 @ Feb 1 2007, 17:23)  2GM Здесь 0 и 1 ровно 32 такта ,за остальное пардон,пока считать не научился ,вечно блох ловлю    Как вы считаете такты? Надеюсь, вы согласны. что единица начнётся после строчки LABEL2: sbi portB,1 Длительность цикла 3+4+4+4+4+3=30 плюс 4 команды ldi R20,$05 nop nop LABEL3: cbi portB,1 Здесь начнётся нуль. Всего будет 34 такта. Также и с нулём можно посчитать. На самом деле, надо 16 тактов для 1 и 16 тактов для 0, поскольку период клока равен 7,8125 мкс (128 кГц клок), а период у сигнала с частотой 4000 Гц равен 250 мкс. Т.е. 250/7,8125=32 такта на период, по 16 тактов на 1 и 0 соответственно.
--------------------
Делай сразу хорошо, плохо само получится
|
|
|
|
|
Feb 1 2007, 21:44
|
Знающий
   
Группа: Свой
Сообщений: 543
Регистрация: 22-10-05
Пользователь №: 9 984

|
Цитата(=GM= @ Feb 1 2007, 20:52)  Как вы считаете такты? Надеюсь, вы согласны. что единица начнётся после строчки LABEL2: sbi portB,1 Длительность цикла 3+4+4+4+4+3=30 плюс 4 команды ldi R20,$05 nop nop LABEL3: cbi portB,1 Здесь начнётся нуль. Всего будет 34 такта. Также и с нулём можно посчитать. Ну что тут скажеш ,это конечно сильно  особенно вот это. Цитата 3+4+4+4+4+3=30    Делаем расклад LABEL2: sbi portB,1 =2 subi R20,$01 =1 brne LABEL2 =2 (и =1 в конце) итого 5+5+5+5+5+4=29 ldi R20,$05 =1 nop =1 nop =1 итого 32 LABEL3: cbi portB,1 Далее немного сложнее ,так как нужно выполнить еще одно условие ,но в том же духе. Цитата На самом деле, надо 16 тактов для 1 и 16 тактов для 0, поскольку период клока равен 7,8125 мкс (128 кГц клок), а период у сигнала с частотой 4000 Гц равен 250 мкс. Т.е. 250/7,8125=32 такта на период, по 16 тактов на 1 и 0 соответственно. Я уже это понял.
|
|
|
|
|
Feb 1 2007, 23:38
|

Ambidexter
    
Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282

|
Цитата(bodja74 @ Feb 1 2007, 18:44)  Цитата(=GM= @ Feb 1 2007, 20:52)  Как вы считаете такты? Надеюсь, вы согласны. что единица начнётся после строчки LABEL2: sbi portB,1 Длительность цикла 3+4+4+4+4+3=22 плюс 4 команды ldi R20,$05 nop nop LABEL3: cbi portB,1 Здесь начнётся нуль. Всего будет 27 тактов. Также и с нулём можно посчитать.
Ну что тут скажешь, это конечно сильно  особенно вот это. Цитата 3+4+4+4+4+3=30    Делаем расклад LABEL2: sbi portB,1 =2 subi R20,$01 =1 brne LABEL2 =2 (и =1 в конце) итого 5+5+5+5+5+4=29 ldi R20,$05 =1 nop =1 nop =1 итого 32 LABEL3: cbi portB,1 Далее немного сложнее ,так как нужно выполнить еще одно условие ,но в том же духе. Черт, прошу пардону, у меня табличка старенькая по командам отпечатана, так там sbi и cbi по одному такту(:-(. Ну а тут, 3+4+4+4+4+3=30, оправдаться нечем, рука пронесла (:-)!
--------------------
Делай сразу хорошо, плохо само получится
|
|
|
|
|
Feb 2 2007, 10:13
|

Местный
  
Группа: Свой
Сообщений: 345
Регистрация: 10-10-05
Пользователь №: 9 459

|
Собственно фрагмент книги, из-за которого создана тема.(Мортон Д. - Микроконтроллеры AVR. Вводный курс) см. вложен:
--------------------
Если задачу можно решить, то не надо тревожиться. А если нельзя решить, то тревожиться бесполезно.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|