Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Asm для начинающих > AVRStudio. ATMega128


Автор: Scratok 10.4.2015, 21:15
Atmel AVR assembler, AVR simulator, ATMega128.
Тема: широтно-импульсный регулятор интенсивности светодиода, управляемый переменным резистором.
Проблема: не могу начать что-то существенное написать в коде. Если кто-то разбирается в этой сфере, подскажите, с чего начать хотя бы?

Автор: Alexei 12.4.2015, 10:26
Цитата(Scratok @  10.4.2015,  21:15 Найти цитируемый пост)
с чего начать хотя бы?

С задания вопроса в "правильном" разделе форума.
Изучения документации и составлении алгоритма.

Думаю, вам надо мерить напряжение на движке резистора (АЦП) и соответственно программировать таймер.

Автор: Scratok 25.4.2015, 19:56
В общем получилось составить код только вот для двух кнопок, которые отвечают за увеличение и уменьшение интенсивности светодиода. А вот, чтобы эта интенсивность управлялась переменным резистором, у меня не выходит(
Есть идеи?
Код

.include "m128def.inc"


 .cseg
 .org 0
  
  ldi r16,low(ramend)  
  out spl,r16
  ldi r17,high(ramend)
  out sph,r17
  
  sbi portc,0   
  sbi portc,1
  
  sbi ddrb,4 ;на выход
  sbi portb,4 ;подкл подтягивающий резистор
  
  ldi r16,0b01111001 ; настройка счетика , без делителя, режим fast PWM
  out tccr0,r16
  ;ldi r16,0b00001001
  ;out tccr1B,r16
  ;ldi r16,0;
  ldi r16,0      ;начально значения регистра сравнения
  ;out ocr1Ah,r16
 out ocr0,r16
  ldi r22,0xff  ;для сравнения
  k: call button
     call delay
     rjmp k
  
 button:
 clr r18
 sbic pinc,0     ;здесь опрос кнопки+
 rjmp two
     dec r18    ; задержка от дребезга
     brne pc-1
 sbic pinc,0    ; опрашиваем еще раз, чтобы наверняка
 rjmp two
 in r28,ocr0   
 cpse r28,r6   ;начинаем проверять предел +
 rjmp norm       ;если еще не достигнут- продолжим уменьшать
 rjmp end
 norm: sbiw r28,0xf ; для 10 значений скважности , отниваем F
 out ocr0,r28
two:clr r18    
    sbic pinc,1  ;опрос кнопки - и далее как для первой кнопки
    rjmp end
      dec r18
      brne pc-1
    sbic pinc,1
    rjmp end
    in r26,ocr0
    cpse r26,r22    ;начинаем проверять предел -
     rjmp norm_2
   rjmp end
 norm_2:
    adiw r26,0xf ; приращения
    out ocr0,r26
 end:
 ret
 
delay:     ; подпрограмма задержки
   ldi r20,1
   ldi r29,5
   dec r18
   brne pc-1
   dec r19
   brne pc-3
   dec r20
   brne pc-5
   ret

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)