Срочно нужна помощь Tiny15 PWM

Обсуждаем контроллеры компании Atmel.
Ответить
Встал на лапы
Аватара пользователя
Сообщения: 137
Зарегистрирован: Сб апр 04, 2009 04:12:23

Сообщение Arik »

Всем привет! Написал программу, но в железе проверить нет возможности и протеуса тоже нет :-( Помогите пожалуйста проверьте в железе и если нужно подправьте плиз прогу. Она должна работать так: если на PB.3 лог 0 то на PB.1 выдается нарастающий шим (моторчик набирает скорость а если лог 1 то шим не выдается Проверьте на моторчике пожалуйста срочно надо! Спасибо!

Код: Выделить всё

.include "..\avr_assembler\appnotes\tn15def.inc"
.cseg
.org 0
   rjmp start
   reti      ; Addr $01
   reti      ; Addr $02
   reti      ; Addr $03
   reti      ; Addr $04
   reti      ; Addr $05
   reti      ; Addr $06        Use 'rjmp myVector'
   reti      ; Addr $07        to define a interrupt vector
   reti      ; Addr $08
   reti      ; Addr $09
   reti      ; Addr $0A
   reti      ; Addr $0B        This is just an example
   reti      ; Addr $0C        Not all MCUs have the same
   reti      ; Addr $0D        number of interrupt vectors
   reti      ; Addr $0E
   reti      ; Addr $0F
   reti      ; Addr $10
start:
	ldi r17,0b00001010 ;nastroika porta B
	out DDRB,r17
	ldi r17,0b00001000
	out portb,r17
	nop

	ldi r17,(1<<COM1A1)|(1<<CS10)|(1<<CS11)|(1<<CS12)|(1<<PWM1)
	out TCCR1,r17
	ldi r20,159
	out ocr1b,r20
	ldi r17,0
	out ocr1a,r17
	nop

scan:
	sbic pinb,3   ; esli pinb3 = 1 pereiti na scan a esli = 0 to
	rcall scan
	
	ldi r17,80    ; 50%
	out ocr1a,r17
	rcall delay

	sbic pinb,3   ; esli pinb3 = 1 idem na start, esli = 0 idem dalshe
	rcall start
	ldi r17,100  ; 60%
	out ocr1a,r17
	rcall delay

	sbic pinb,3   ; esli pinb3 = 1 idem na scan, esli = 0 idem dalshe
	rcall start
	ldi r17,120    ; 70%
	out ocr1a,r17
	rcall delay
	
	sbic pinb,3   ; esli pinb3 = 1 idem na scan, esli = 0 idem dalshe
	rcall start
	ldi r17,140    ; 80%
	out ocr1a,r17
	rcall delay
	
	sbic pinb,3   ; esli pinb3 = 1 idem na scan, esli = 0 idem na loop
	rcall start
	ldi r17,159   ; 99%
	out ocr1a,r17
	rcall delay

loop:		
	sbic pinb,3   ; esli pinb3 = 1 idem na scan, esli = 0 idem na loop
	rcall start
	rcall loop
		
delay:
; ===========
;    delay loop generator
;     12000000 cycles:
; -----------------------------
; delaying 11999976 cycles:
          ldi  R20, $3E
WGLOOP0:  ldi  R21, $FD
WGLOOP1:  ldi  R22, $FE
WGLOOP2:  dec  R22
          brne WGLOOP2
          dec  R21
          brne WGLOOP1
          dec  R20
          brne WGLOOP0
; -----------------------------
; delaying 24 cycles:
          ldi  R20, $08
WGLOOP3:  dec  R20
          brne WGLOOP3
; ===========
ret
Вложения
hexfile.hex
(427 байт) 220 скачиваний
[color=#FF0000]Тяжело в учении - тяжелей в бою![/color]
Реклама
Говорящий с текстолитом
Аватара пользователя
Сообщения: 1663
Зарегистрирован: Вт апр 03, 2012 20:36:41
Откуда: Сочи

Сообщение Enigm »

Найти скачать протэус займет не больше 2-3 часов.
На ваш проэкт протэус ругается на ошибки в коде. (program stack underflow)
Но проэкт работает, и работает так.
Как только подали и удерживаем 0 , то шим начинает работать и медленно увеличивать, но если убрать 0, то шим не замолкает, а продолжает свою работу без наростания.
Править вам, так как я пишу в другой среде.
Реклама
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 330
Зарегистрирован: Чт июн 23, 2011 07:55:51

Сообщение korsaj »

Вот эти строки дают переполнение стека

Код: Выделить всё

scan:
   sbic pinb,3   ; esli pinb3 = 1 pereiti na scan a esli = 0 to
   rcall scan
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
   rcall start
   rcall loop
Вместо rcall нужно использовать rjmp

И чтобы не было ШИМ после отпускания кнопки надо написать так

Код: Выделить всё

scan:
   sbic pinb,3   ; esli pinb3 = 1 pereiti na scan a esli = 0 to
   out ocr1a,r17
   rjmp scan
Встал на лапы
Аватара пользователя
Сообщения: 137
Зарегистрирован: Сб апр 04, 2009 04:12:23

Сообщение Arik »

Спасибо большое за помощь сам давно разобрался просто не было времени зайти и отписаться. Тестировал сразу в железе но плата что то дорого обошлась в 700 рублей плюс компоненты (которые уже были) Это модуль управления детским водным мотоциклом. Родную плату было не достать делал свою. Спасибо!
[color=#FF0000]Тяжело в учении - тяжелей в бою![/color]
Реклама
Эиком - электронные компоненты и радиодетали
Ответить

Вернуться в «AVR»