регулятор тока

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
супер мегакотэ
Потрогал лапой паяльник
Сообщения: 347
Зарегистрирован: Вт май 04, 2010 12:10:55
Откуда: Беларусь. Минская область

регулятор тока

Сообщение супер мегакотэ »

Братцы, помогите пожалста.
В общем мне нужно чтобы лампочка при нажатии на одну из кнопок (двух) горела ярче а на вторую тусклее.
Я так понимаю нужно регулировать ток, текущий через лампочку.
Лампочка минимум на 5в
З.Ы. с кнопками я разобрался, мне нужно только что писать в обработчике прерывания
Реклама
Аватара пользователя
les1982
Собутыльник Кота
Сообщения: 2981
Зарегистрирован: Ср сен 28, 2011 22:18:14
Откуда: Москва

Re: регулятор тока

Сообщение les1982 »

ШИМ вам в помощь
Люди могут жить без мозгов.
Реклама
супер мегакотэ
Потрогал лапой паяльник
Сообщения: 347
Зарегистрирован: Вт май 04, 2010 12:10:55
Откуда: Беларусь. Минская область

Re: регулятор тока

Сообщение супер мегакотэ »

сейчас загуглим, спасибо
Payalnick
Открыл глаза
Сообщения: 58
Зарегистрирован: Сб янв 07, 2012 11:41:25

Re: регулятор тока

Сообщение Payalnick »

Да-да, шим.
Помогите нупу в написании программ)
Реклама
Эиком - электронные компоненты и радиодетали
супер мегакотэ
Потрогал лапой паяльник
Сообщения: 347
Зарегистрирован: Вт май 04, 2010 12:10:55
Откуда: Беларусь. Минская область

Re: регулятор тока

Сообщение супер мегакотэ »

Стесняюсь спросить, а может ли кто проверить код?

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

.include "m16def.inc"
.include "macro.inc"
.cseg

.org $000
rjmp RESET
.org $002
rjmp INT0
.org $004
rjmp INT1
.org $006
rjmp TIMER2_COMP
.org $008
rjmp TIMER2_OVF
.org $00A
rjmp TIMER1_CAPT
.org $00C
rjmp TIMER1_COMPA
.org $00E
rjmp TIMER1_COMPB
.org $010
rjmp TIMER1_OVF
.org $012
rjmp TIMER0_OVF
.org $014
rjmp SPI_STC
.org $016
rjmp USART_RXC
.org $018
rjmp USART_UDRE
.org $01A
rjmp USART_TXC
.org $01C
rjmp ADC
.org $01E
rjmp EE_RDY
.org $020
rjmp ANA_COMP
.org $022
rjmp TWI
.org $024
rjmp INT2
.org $026
rjmp TIMER0_COMP
.org $028
rjmp SPM_RDY
.org INT_VECTORS_SIZE

ldi R16,RamEnd		;настройка стека
out SPL,R16

ldi R16,0b00000000  	;настройка порта D
out DDRD,R16

ldi R16,0b11111111   	;настройка порта C
out DDRC,R16

ldi R16,0b11111111   	;настройка порта A
out DDRD,R16
LOOP: rjmp LOOP



RESET:
;INT0:
;INT1:
TIMER2_COMP:
TIMER2_OVF:
TIMER1_CAPT:
TIMER1_COMPA:
TIMER1_COMPB:
TIMER1_OVF:
TIMER0_OVF:
SPI_STC:
USART_RXC:
USART_UDRE:
USART_TXC:
ADC:
EE_RDY:
ANA_COMP:
TWI:
INT2:
TIMER0_COMP:
SPM_RDY:
		 reti

ldi R16,1
SETB 	DDRD,4,R16
SETB 	DDRD,5,R16
OUTI	TCCR1A,2<<COM1A0|2<<COM1B0|0<<WGM11|1<<WGM10
OUTI	TCCR1B,0<<WGM13|1<<WGM12|1<<CS10
LDI	R16,128
LOOPA:	CLI
OUTI	OCR1AH,0
OUTI	OCR1AL,R16
OUTI	OCR1BH,0
OUTI	OCR1BL,R16
SEI

LOOP:	rjmp	LOOP

rjmp	LOOPA
INT1:	SUB	R16,10
rjmp	LOOPA

Вложения
macro.txt
макрос
(2.65 КБ) 223 скачивания
Реклама
Аватара пользователя
GP1
Поставщик валерьянки для Кота
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград
Контактная информация:

Re: регулятор тока

Сообщение GP1 »

Ну вот опять, очередная жертва обучалки.
1. посмотри куда у тебя переход по RESET, который заканчивается reti.
Куда уйдет прога после такого старта? Причем порты и стек никогда не будут инициализированы.
2. стек поинтер у меги16 2х байтовый, поэтому инициализировать надо оба байта SPH:SPL
3. двойное определение метки LOOP, ты хотя бы пробовал скомпилить прогу?

дальше даже не смотрел, полная каша :facepalm: .
Чем дальше, тем больше становлюсь занудой...
Изображение
Реклама
супер мегакотэ
Потрогал лапой паяльник
Сообщения: 347
Зарегистрирован: Вт май 04, 2010 12:10:55
Откуда: Беларусь. Минская область

Re: регулятор тока

Сообщение супер мегакотэ »

извиняюсь, это первая моя личная прога
а если на ресет вообще ничего не делать?
и что с метками нетак? вроде ж не повторяются
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

Re: регулятор тока

Сообщение pyzhman »

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

ldi R16,0b11111111      ;настройка порта A
out DDRD,R16
LOOP: rjmp LOOP
.
.
.

SEI

LOOP:   rjmp   LOOP
:)
А после метки RESET идет RETI. Ну и куда возвращаться?
Docendo discimus
Аватара пользователя
GP1
Поставщик валерьянки для Кота
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград
Контактная информация:

Re: регулятор тока

Сообщение GP1 »

обычно делают так:

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

; описание векторов
.org 0
       jmp(rjmp) start  ;здесь необходимо учитывать "дальность" перехода
...
...
дальше, ну кому как удобней, я предпочитаю размещать тело основной программы, другие здесь размещают обработчики прерываний, дело вкуса.

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

.org INT_VECTORS_SIZE
start:
;1. инициализируется стек!!!
...
;2. инициализируется перефирия
...
;3. если надо разрешаем прерывания (глобально!!!)
     sei
;4. основной цикл
main_loop:
...
...
...
     jmp(rjmp) main_loop
после этого у меня идут п/п и обработчики прерываний:

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

<имя_обработчика_прерывания>:
...
...
     reti    ; обработчик прерывания ВСЕГДА(!!!) должен заканчиваться reti

<имя_п/п>:
...
...
     ret    ;п/п заканчивается командой ret
ну вот как-то так.
инициализацию периферии лучше группировать по блокам - таймеры к таймерам, АЦП к АЦП, и т.д.
Чем дальше, тем больше становлюсь занудой...
Изображение
супер мегакотэ
Потрогал лапой паяльник
Сообщения: 347
Зарегистрирован: Вт май 04, 2010 12:10:55
Откуда: Беларусь. Минская область

Re: регулятор тока

Сообщение супер мегакотэ »

pyzhman писал(а):А после метки RESET идет RETI. Ну и куда возвращаться?
дошло, я если rjmp не писать а сразу на адресе написать reti
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

Re: регулятор тока

Сообщение pyzhman »

И что мы делаем по команде RETI?
Docendo discimus
супер мегакотэ
Потрогал лапой паяльник
Сообщения: 347
Зарегистрирован: Вт май 04, 2010 12:10:55
Откуда: Беларусь. Минская область

Re: регулятор тока

Сообщение супер мегакотэ »

GP1 писал(а):обычно делают так:

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

; описание векторов
.org 0
       jmp(rjmp) start  ;здесь необходимо учитывать "дальность" перехода
...
...
дальше, ну кому как удобней, я предпочитаю размещать тело основной программы, другие здесь размещают обработчики прерываний, дело вкуса.

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

.org INT_VECTORS_SIZE
start:
;1. инициализируется стек!!!
...
;2. инициализируется перефирия
...
;3. если надо разрешаем прерывания (глобально!!!)
     sei
;4. основной цикл
main_loop:
...
...
...
     jmp(rjmp) main_loop
после этого у меня идут п/п и обработчики прерываний:

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

<имя_обработчика_прерывания>:
...
...
     reti    ; обработчик прерывания ВСЕГДА(!!!) должен заканчиваться reti

<имя_п/п>:
...
...
     ret    ;п/п заканчивается командой ret
ну вот как-то так.
инициализацию периферии лучше группировать по блокам - таймеры к таймерам, АЦП к АЦП, и т.д.
а что такое п/п?
супер мегакотэ
Потрогал лапой паяльник
Сообщения: 347
Зарегистрирован: Вт май 04, 2010 12:10:55
Откуда: Беларусь. Минская область

Re: регулятор тока

Сообщение супер мегакотэ »

pyzhman писал(а):И что мы делаем по команде RETI?
выход из обработчика
Аватара пользователя
GP1
Поставщик валерьянки для Кота
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград
Контактная информация:

Re: регулятор тока

Сообщение GP1 »

супер мегакотэ писал(а): а что такое п/п?
ничего особенного, просто кусок кода, выполнение которого вызывается из определенного места основного цикла, в простонародии П(од)/П(рограмма)
Чем дальше, тем больше становлюсь занудой...
Изображение
Аватара пользователя
GP1
Поставщик валерьянки для Кота
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград
Контактная информация:

Re: регулятор тока

Сообщение GP1 »

супер мегакотэ писал(а):
pyzhman писал(а):И что мы делаем по команде RETI?
выход из обработчика
pyzhman спрашивает куда выйдет программа после такого выхода. :facepalm:
стек - не определен, точка возврата в нем не загружена, до инициализации в нем случайное число, соответственно адрес возврата из прерывания тоже будет случайным.
Чем дальше, тем больше становлюсь занудой...
Изображение
супер мегакотэ
Потрогал лапой паяльник
Сообщения: 347
Зарегистрирован: Вт май 04, 2010 12:10:55
Откуда: Беларусь. Минская область

Re: регулятор тока

Сообщение супер мегакотэ »

GP1 писал(а):
супер мегакотэ писал(а): выход из обработчика
pyzhman спрашивает куда выйдет программа после такого выхода. :facepalm:
стек - не определен, точка возврата в нем не загружена, до инициализации в нем случайное число, соответственно адрес возврата из прерывания тоже будет случайным.
можно ли просто не делать обработчика, оставить адрес $002 пустым? Компилятор не ругнется?
Аватара пользователя
GP1
Поставщик валерьянки для Кота
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград
Контактная информация:

Re: регулятор тока

Сообщение GP1 »

супер мегакотэ писал(а): можно ли просто не делать обработчика, оставить адрес $002 пустым? Компилятор не ругнется?
можно все что угодно
можно основной цикл с $0000 писать, вот только НИ ОДНО прерывание не получится использовать, а это очень редкий случай, когда можно без прерываний обойтись.

эх, жалко моя статейка в недрах КотоРеда сгинула, а я там все это уже объяснял :dont_know:

зы: хотелось бы уточнить возраст, образование - а то разговор получается "немого со слепым"
Чем дальше, тем больше становлюсь занудой...
Изображение
супер мегакотэ
Потрогал лапой паяльник
Сообщения: 347
Зарегистрирован: Вт май 04, 2010 12:10:55
Откуда: Беларусь. Минская область

Re: регулятор тока

Сообщение супер мегакотэ »

GP1 писал(а):
супер мегакотэ писал(а): зы: хотелось бы уточнить возраст, образование - а то разговор получается "немого со слепым"
чего, мои что ли?
З.Ы. в личку скину
Закрыто

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