ШИМ для мк atmega8

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
pimple2006
Первый раз сказал Мяу!
Сообщения: 20
Зарегистрирован: Ср фев 08, 2012 22:58:32
Откуда: Лебедянь

ШИМ для мк atmega8

Сообщение pimple2006 »

Здравствуйте,нашел на сайте вот такую реализацию ШИМ для ATMEGA8

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

01.; Atmega8, crystal 1MHZ (internal)
02.; Timer Counter 1
03.; Fast PWM & ADC
04. 
05..include "m8def.inc"
06. 
07..def wreg  =R16
08..def duration =R17
09..def wreg2  =R18
10. 
11. 
12.init:
13. 
14.ldi  wreg,low(RAMEND)           
15.out  SPL,wreg
16. 
17.ldi  wreg,high(RAMEND) ; Stack Pointer = $45F
18.out  SPH,wreg
19. 
20.cli       ; запретить прерывания
21. 
22. 
23.ldi wreg, 0b10000011  ; Вкл. Ацп, Однокр. преобр., Прерывание запрещено, СК/8 (125 kHz)
24.out ADCSR, wreg
25. 
26.ldi wreg, 0b01101110  ; AVcc, Внеш. конд. на Aref, Выравн. по лев. краю, channel 1.23V bg
27.out ADMUX, wreg
28. 
29.rcall adc_convert
30. 
31. 
32.;*******************    TIMER1    ***********************
33. 
34.ldi  wreg,0x00 
35.out  PORTB,wreg   ; Запись 0 в порт
36. 
37.ldi  wreg,0b00000010  ; PortB.1 (OC1A) - Output
38.out  DDRB,wreg
39. 
40. 
41.ldi wreg, 0b10000001  ; неинв. 8 битный ШИМ
42.out TCCR1A, wreg
43. 
44.ldi wreg, 0b00001001  ; CK/1
45.out TCCR1B, wreg
46. 
47.ldi wreg, 0b00000000
48.out TIMSK, wreg
49. 
50. 
51.main:
52. 
53.ldi wreg, 250    ; 25mS
54.rcall delay
55. 
56.ldi wreg, 0b01100101  ; ADC Channel 5 (PortC.5 ; pin 28)
57.rcall adc_convert
58. 
59.ldi wreg2, 0x00
60.out OCR1AH, wreg2
61. 
62.out OCR1AL, wreg
63. 
64. 
65.rjmp main
66. 
67. 
68. 
69.;*********************** DELAYS **************************
70. 
71.delay:       ; 0.1mS * wreg
72.ldi duration, 24
73.cycle:
74.nop
75.dec  duration
76.brne cycle
77.dec  wreg
78.brne delay
79.ret
80. 
81. 
82.;********************** AD CONVERTION *******************
83. 
84.adc_convert:
85. 
86.out ADMUX, wreg    ; wreg contains channel
87. 
88.sbi ADCSR, ADSC    ; Start Convertion
89.sbic ADCSR , ADSC
90.rjmp PC-1
91.in wreg, ADCL    ; просто формальность (первым всегда читается ADCL)
92. 
93.in wreg, ADCH    ; wreg contains result
94. 
95.ret
сломался механический регулятор двигателя(печка в машине) его стоимость 1600,решил сделать цифровой,до этого с мк не сталкивался,прочитал немного информации на этом сайте,решил сделать именно цифровой
с ассемблером особо труда нет,но не пойму алгоритм программы,точно поняты с 69 по 80 строку,немного понятно в TIMER
:)) помогите дописать программку ,задача открывать полевой транзистор с определенной частототой(регулятор оборотов печки) и если можно,объсните с 12 по 30 строку,заранее спасибо
Реклама
Аватара пользователя
Jack_A
Друг Кота
Сообщения: 6312
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

Re: ШИМ для мк atmega8

Сообщение Jack_A »

А что тут объяснять? Инициализация стека, запрет прерываний, настройка АЦП на нужный вид измерений и однократный запуск преобразования - т.сз., "пристрелочный залп" перед началом измерений с помощью АЦП.
Реклама
pimple2006
Первый раз сказал Мяу!
Сообщения: 20
Зарегистрирован: Ср фев 08, 2012 22:58:32
Откуда: Лебедянь

Re: ШИМ для мк atmega8

Сообщение pimple2006 »

Jack_A писал(а):А что тут объяснять? Инициализация стека, запрет прерываний, настройка АЦП на нужный вид измерений и однократный запуск преобразования - т.сз., "пристрелочный залп" перед началом измерений с помощью АЦП.
а зачем тут делать стек?
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: ШИМ для мк atmega8

Сообщение Engineer_Keen »

А без него возврат из подпрограмм и еще некоторые вещи не работают. И его тут не делают, а просто инициализируют, т.е. загружают адрес последней ячейки RAM.
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
Jack_A
Друг Кота
Сообщения: 6312
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

Re: ШИМ для мк atmega8

Сообщение Jack_A »

Engineer_Keen писал(а): И его тут не делают, а просто инициализируют, т.е. загружают адрес последней ячейки RAM.
... в указатель стека.
Реклама
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»