регулятор тока
-
супер мегакотэ
- Потрогал лапой паяльник
- Сообщения: 347
- Зарегистрирован: Вт май 04, 2010 12:10:55
- Откуда: Беларусь. Минская область
регулятор тока
Братцы, помогите пожалста.
В общем мне нужно чтобы лампочка при нажатии на одну из кнопок (двух) горела ярче а на вторую тусклее.
Я так понимаю нужно регулировать ток, текущий через лампочку.
Лампочка минимум на 5в
З.Ы. с кнопками я разобрался, мне нужно только что писать в обработчике прерывания
В общем мне нужно чтобы лампочка при нажатии на одну из кнопок (двух) горела ярче а на вторую тусклее.
Я так понимаю нужно регулировать ток, текущий через лампочку.
Лампочка минимум на 5в
З.Ы. с кнопками я разобрался, мне нужно только что писать в обработчике прерывания
- Реклама
-
супер мегакотэ
- Потрогал лапой паяльник
- Сообщения: 347
- Зарегистрирован: Вт май 04, 2010 12:10:55
- Откуда: Беларусь. Минская область
Re: регулятор тока
сейчас загуглим, спасибо
-
супер мегакотэ
- Потрогал лапой паяльник
- Сообщения: 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: регулятор тока
Ну вот опять, очередная жертва обучалки.
1. посмотри куда у тебя переход по RESET, который заканчивается reti.
Куда уйдет прога после такого старта? Причем порты и стек никогда не будут инициализированы.
2. стек поинтер у меги16 2х байтовый, поэтому инициализировать надо оба байта SPH:SPL
3. двойное определение метки LOOP, ты хотя бы пробовал скомпилить прогу?
дальше даже не смотрел, полная каша
.
1. посмотри куда у тебя переход по RESET, который заканчивается reti.
Куда уйдет прога после такого старта? Причем порты и стек никогда не будут инициализированы.
2. стек поинтер у меги16 2х байтовый, поэтому инициализировать надо оба байта SPH:SPL
3. двойное определение метки LOOP, ты хотя бы пробовал скомпилить прогу?
дальше даже не смотрел, полная каша
-
супер мегакотэ
- Потрогал лапой паяльник
- Сообщения: 347
- Зарегистрирован: Вт май 04, 2010 12:10:55
- Откуда: Беларусь. Минская область
Re: регулятор тока
извиняюсь, это первая моя личная прога
а если на ресет вообще ничего не делать?
и что с метками нетак? вроде ж не повторяются
а если на ресет вообще ничего не делать?
и что с метками нетак? вроде ж не повторяются
- pyzhman
- Друг Кота
- Сообщения: 7016
- Зарегистрирован: Вс июл 12, 2009 19:15:29
- Откуда: Ижевск
- Контактная информация:
Re: регулятор тока
Код: Выделить всё
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: регулятор тока
обычно делают так:
дальше, ну кому как удобней, я предпочитаю размещать тело основной программы, другие здесь размещают обработчики прерываний, дело вкуса.
после этого у меня идут п/п и обработчики прерываний:
ну вот как-то так.
инициализацию периферии лучше группировать по блокам - таймеры к таймерам, АЦП к АЦП, и т.д.
Код: Выделить всё
; описание векторов
.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: регулятор тока
дошло, я если rjmp не писать а сразу на адресе написать retipyzhman писал(а):А после метки RESET идет RETI. Ну и куда возвращаться?
-
супер мегакотэ
- Потрогал лапой паяльник
- Сообщения: 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
- Поставщик валерьянки для Кота
- Сообщения: 2401
- Зарегистрирован: Пт май 23, 2008 19:32:22
- Откуда: Россия, Волгоград
- Контактная информация:
Re: регулятор тока
pyzhman спрашивает куда выйдет программа после такого выхода.супер мегакотэ писал(а):выход из обработчикаpyzhman писал(а):И что мы делаем по команде RETI?
стек - не определен, точка возврата в нем не загружена, до инициализации в нем случайное число, соответственно адрес возврата из прерывания тоже будет случайным.
-
супер мегакотэ
- Потрогал лапой паяльник
- Сообщения: 347
- Зарегистрирован: Вт май 04, 2010 12:10:55
- Откуда: Беларусь. Минская область
Re: регулятор тока
можно ли просто не делать обработчика, оставить адрес $002 пустым? Компилятор не ругнется?GP1 писал(а):pyzhman спрашивает куда выйдет программа после такого выхода.супер мегакотэ писал(а): выход из обработчика
стек - не определен, точка возврата в нем не загружена, до инициализации в нем случайное число, соответственно адрес возврата из прерывания тоже будет случайным.
- GP1
- Поставщик валерьянки для Кота
- Сообщения: 2401
- Зарегистрирован: Пт май 23, 2008 19:32:22
- Откуда: Россия, Волгоград
- Контактная информация:
Re: регулятор тока
можно все что угодносупер мегакотэ писал(а): можно ли просто не делать обработчика, оставить адрес $002 пустым? Компилятор не ругнется?
можно основной цикл с $0000 писать, вот только НИ ОДНО прерывание не получится использовать, а это очень редкий случай, когда можно без прерываний обойтись.
эх, жалко моя статейка в недрах КотоРеда сгинула, а я там все это уже объяснял
зы: хотелось бы уточнить возраст, образование - а то разговор получается "немого со слепым"
-
супер мегакотэ
- Потрогал лапой паяльник
- Сообщения: 347
- Зарегистрирован: Вт май 04, 2010 12:10:55
- Откуда: Беларусь. Минская область
Re: регулятор тока
чего, мои что ли?GP1 писал(а):супер мегакотэ писал(а): зы: хотелось бы уточнить возраст, образование - а то разговор получается "немого со слепым"
З.Ы. в личку скину



