Кто может программировать под микроконтроллеры (ATMega8)?
Модератор: vadim64
-
- мл. сержант
- Сообщения: 104
- Зарегистрирован: 2008-11-28 9:57:49
- Откуда: Донецк
- Контактная информация:
Кто может программировать под микроконтроллеры (ATMega8)?
Есть на сайте такие? Нужна помощь по програмке
Услуги хостинговой компании Host-Food.ru
Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
- ProFTP
- подполковник
- Сообщения: 3388
- Зарегистрирован: 2008-04-13 1:50:04
- Откуда: %&й
- Контактная информация:
-
- проходил мимо
Re: Кто может программировать под микроконтроллеры (ATMega8)
точно знаю что парадокс под контроллеры не пишет
парадокс вообще мало чего пишет
так что не надо на него стрелки кидать
идите на вебланц нет
парадокс вообще мало чего пишет
так что не надо на него стрелки кидать
идите на вебланц нет
- ProFTP
- подполковник
- Сообщения: 3388
- Зарегистрирован: 2008-04-13 1:50:04
- Откуда: %&й
- Контактная информация:
Re: Кто может программировать под микроконтроллеры (ATMega8)
огласите стоимость, чтоли?ksvserega писал(а):Есть на сайте такие? Нужна помощь по програмке
![Very Happy :-D](./../images/smilies/biggrin.gif)
это какой-то децкий микроконтроллер, сложный чтоли?Гость писал(а):точно знаю что парадокс под контроллеры не пишет
![Smile :)](./../images/smilies/smile.gif)
там же все тоже самое СИшное
- E-Wind
- сержант
- Сообщения: 155
- Зарегистрирован: 2008-05-14 16:19:54
- Откуда: Санкт-Петербург
Re: Кто может программировать под микроконтроллеры (ATMega8)
Оффтоп / я бы спросил на робофоруме или специализированном по электронике...
-
- мл. сержант
- Сообщения: 104
- Зарегистрирован: 2008-11-28 9:57:49
- Откуда: Донецк
- Контактная информация:
Re: Кто может программировать под микроконтроллеры (ATMega8)
Есть уже готовая рабочая программка на ассемблере, пытаюсь в ней разобраться, пока с переменным успехом. Т.е. сама математика, сам алгоритм расковырял, а застопорился касательно самого МК. Вот код программы http://woofer.nm.ru/taho/taho_m8.asm . Программа вот для этого тахометра http://woofer.nm.ru/taho/taho_m8.gif
Есть хороший эмулятор электросхем Proteus, вот я в нём всё и ганяю (но есть и собранный в железе рабочий экземпляр). Застрял вот на чем: при пропадании на входных импульсов МК запоминает последнее значение и не гасит светляки. В самом коде при этом ганяется до бесконечности вот эти 2-е строки
Для выхода из цикла что-то (или кто-то) должен установить 1-й бит pinb. Как этот бит ставится??? ![Stena :st:](./../images/smilies/ll.gif)
Есть хороший эмулятор электросхем Proteus, вот я в нём всё и ганяю (но есть и собранный в железе рабочий экземпляр). Застрял вот на чем: при пропадании на входных импульсов МК запоминает последнее значение и не гасит светляки. В самом коде при этом ганяется до бесконечности вот эти 2-е строки
Код: Выделить всё
l2: sbis pinb,1
rjmp l2
![Stena :st:](./../images/smilies/ll.gif)
- E-Wind
- сержант
- Сообщения: 155
- Зарегистрирован: 2008-05-14 16:19:54
- Откуда: Санкт-Петербург
Re: Кто может программировать под микроконтроллеры (ATMega8)
Насколько я понял из быстрого чтения доков и гугла - pinb - регистр только для чтения для порта B
http://easyelectronics.ru/avr-uchebnyj- ... yvoda.html
sbi x,y - устанавливает бит номер y в единицу (только надо посмотреть datasheet (ДШ) на тему, от нуля ли они считаются)
cbi x,y - сбрасывает
По коду с первым битом порта B (первой от нуля ножкой)
работаем начиная с l5:
// Сам только-только начинаю осваивать МК )
http://easyelectronics.ru/avr-uchebnyj- ... yvoda.html
sbi x,y - устанавливает бит номер y в единицу (только надо посмотреть datasheet (ДШ) на тему, от нуля ли они считаются)
cbi x,y - сбрасывает
По коду с первым битом порта B (первой от нуля ножкой)
![Embarassed :oops:](./../images/smilies/blush.gif)
Код: Выделить всё
l5: clr r16
out portb,r16
out portc,r16
out portd,r16
cbi portb,1 <--------- здесь случайно не SBI должно быть?
ldi YH,high(25000)
ldi YL,low(25000)
rcall l8
brtc l6
sbi portb,0
ldi YH,high(12500)
ldi YL,low(12500)
На выходных восстановлю у себя протеус, можете выложить в нем проект куда-нибудь?Для выхода из цикла что-то (или кто-то) должен установить 1-й бит pinb. Как этот бит ставится???
// Сам только-только начинаю осваивать МК )
-
- мл. сержант
- Сообщения: 104
- Зарегистрирован: 2008-11-28 9:57:49
- Откуда: Донецк
- Контактная информация:
Re: Кто может программировать под микроконтроллеры (ATMega8)
Листинг программы правильный, лично генерил из него hex и загонял в симулятор и в железо - работает как надо.
Дело в том, что при наличии на входе импульсов прога некоторое кол-во раз крутится на этих 2-х строках, а затем идет дальше. При пропадании вх. импульсов происходит зацикливание.
Проект могу кинуть мылом.
Дело в том, что при наличии на входе импульсов прога некоторое кол-во раз крутится на этих 2-х строках, а затем идет дальше. При пропадании вх. импульсов происходит зацикливание.
Проект могу кинуть мылом.
- BlackCat
- прапорщик
- Сообщения: 469
- Зарегистрирован: 2007-10-16 22:40:42
Re: Кто может программировать под микроконтроллеры (ATMega8)
ksvserega, вам необходимо, что бы после пропадания сигнала на входе, гасла вся линейка диодов?
-
- мл. сержант
- Сообщения: 104
- Зарегистрирован: 2008-11-28 9:57:49
- Откуда: Донецк
- Контактная информация:
Re: Кто может программировать под микроконтроллеры (ATMega8)
BlackCat, совершенно верно, скажем если в течение 0,5-1сек нет вх. сигнала - гасить все диоды. При появлении сигнала - снова запуск.
Может как-то режим sleep прикрутить? От тока как потом МК будить - я не умею.
Может как-то режим sleep прикрутить? От тока как потом МК будить - я не умею.
- BlackCat
- прапорщик
- Сообщения: 469
- Зарегистрирован: 2007-10-16 22:40:42
Re: Кто может программировать под микроконтроллеры (ATMega8)
Сразу после:дописать:что бы получилось:
Из побочных последствий - диоды начнут светиться тускло. Что бы избежать такого эффекта потребуется ввести дополнительный счётчик и по его показаниям выключать индикацию.
P.S. Рекомендую заглянуть сюда: AVR Products - AVR Solutions - Datasheets и скачать Datasheet на нужный чип - ATMEL пишет очень качественную документацию.
Код: Выделить всё
l3: sbic pinb,1
rjmp l3
Код: Выделить всё
clr r16
out portb,r16
out portc,r16
out portd,r16
cbi portb,1
Код: Выделить всё
l3: sbic pinb,1
rjmp l3
clr r16
out portb,r16
out portc,r16
out portd,r16
cbi portb,1
rjmp l2
l4: clr r16
out TCCR1B,r16
P.S. Рекомендую заглянуть сюда: AVR Products - AVR Solutions - Datasheets и скачать Datasheet на нужный чип - ATMEL пишет очень качественную документацию.
-
- мл. сержант
- Сообщения: 104
- Зарегистрирован: 2008-11-28 9:57:49
- Откуда: Донецк
- Контактная информация:
Re: Кто может программировать под микроконтроллеры (ATMega8)
Победил таки. Кому интересно, вот код
Код: Выделить всё
.device ATmega8
.include "m8def.inc"
.cseg
.org $0000 rjmp l1
.org $0008 rjmp l4
.org $0012 rjmp l1
#define XTAL 1000000
#define DELAY_ONE_MILLISECOND (XTAL / 4 / 1000)
l1: ldi r16,high(RAMEND)
out SPH, r16
ldi r16,low(RAMEND)
out SPL,r16
ser r16
out ddrb,r16
out ddrc,r16
out ddrd,r16
cbi ddrb,1
ldi r16,$04
out TIMSK,r16
ldi XH,high(65535)
ldi XL,low(65535)
in XL,TCNT1L
in XH,TCNT1H
rcall l5
clr r16
ldi r16, (1<<WDCE)|(1<<WDE)
out WDTCR, r16
ldi r16, (1<<WDE) | (1<<WDP2) | (1<<WDP1) | (1<<WDP0)
out WDTCR, r16
wdr
ldi r24,LOW(1000)
ldi r25,HIGH(1000)
rcall mswait
wdr
clr r16
out portb,r16
out portc,r16
out portd,r16
cbi portb,1
out TCNT1H,r16
out TCNT1L,r16
ldi r16,2
out TCCR1B,r16
sei
l2: sbis pinb,1
rjmp l2
wdr
clr r16
out TCCR1B,r16
in XL,TCNT1L
in XH,TCNT1H
rcall l5
clr r16
out TCNT1H,r16
out TCNT1L,r16
ldi r16,2
out TCCR1B,r16
l3: sbic pinb,1
rjmp l3
rjmp l2
l4: clr r16
out TCCR1B,r16
ser r16
out TCNT1H,r16
out TCNT1L,r16
reti
l5: clr r16
out portb,r16
out portc,r16
out portd,r16
cbi portb,1
ldi YH,high(25000)
ldi YL,low(25000)
rcall l8
brtc l6
sbi portb,0
ldi YH,high(12500)
ldi YL,low(12500)
rcall l8
brtc l6
sbi portd,7
ldi YH,high(8333)
ldi YL,low(8333)
rcall l8
brtc l6
sbi portd,6
ldi YH,high(6250)
ldi YL,low(6250)
rcall l8
brtc l6
sbi portd,5
ldi YH,high(5000)
ldi YL,low(5000)
rcall l8
brtc l6
sbi portb,7
ldi YH,high(4167)
ldi YL,low(4167)
rcall l8
brtc l6
sbi portb,6
ldi YH,high(3571)
ldi YL,low(3571)
rcall l8
brtc l6
sbi portd,4
ldi YH,high(3125)
ldi YL,low(3125)
rcall l8
brtc l6
sbi portd,3
ldi YH,high(2778)
ldi YL,low(2778)
rcall l8
l6: brtc l7
sbi portd,2
ldi YH,high(2500)
ldi YL,low(2500)
rcall l8
brtc l7
sbi portd,1
ldi YH,high(2273)
ldi YL,low(2273)
rcall l8
brtc l7
sbi portd,0
ldi YH,high(2083)
ldi YL,low(2083)
rcall l8
brtc l7
sbi portc,5
ldi YH,high(1923)
ldi YL,low(1923)
rcall l8
brtc l7
sbi portc,4
ldi YH,high(1786)
ldi YL,low(1786)
rcall l8
brtc l7
sbi portc,3
ldi YH,high(1667)
ldi YL,low(1667)
rcall l8
brtc l7
sbi portc,2
ldi YH,high(1563)
ldi YL,low(1563)
rcall l8
brtc l7
sbi portc,1
ldi YH,high(1471)
ldi YL,low(1471)
rcall l8
brtc l7
sbi portc,0
ldi YH,high(1389)
ldi YL,low(1389)
rcall l8
brtc l7
sbi portb,5
ldi YH,high(1316)
ldi YL,low(1316)
rcall l8
brtc l7
sbi portb,4
ldi YH,high(1250)
ldi YL,low(1250)
rcall l8
brtc l7
sbi portb,3
ldi YH,high(1190)
ldi YL,low(1190)
rcall l8
brtc l7
sbi portb,2
l7: ret
l8: clt
cp XH,YH
brlo l9
cp XH,YH
brne l10
cp XL,YL
brsh l10
l9: set
l10: ret
mswait:
sbiw r24, 1
brcc mswait1
ret
mswait1:
nop
ldi r26, low(DELAY_ONE_MILLISECOND -4)
ldi r27, high(DELAY_ONE_MILLISECOND -4)
mswait2:
sbiw r26, 1
brne mswait2
rjmp mswait
- BlackCat
- прапорщик
- Сообщения: 469
- Зарегистрирован: 2007-10-16 22:40:42
Re: Кто может программировать под микроконтроллеры (ATMega8)
Использовать сторожевой таймер для сброса - интересная мысль. А зачем после установки таймера используется задержка?ksvserega писал(а):Победил таки. Кому интересно, вот код
=====
Ещё можно немного почистить код от "пустых" инструкций, но это уже придирки.
-
- мл. сержант
- Сообщения: 104
- Зарегистрирован: 2008-11-28 9:57:49
- Откуда: Донецк
- Контактная информация:
Re: Кто может программировать под микроконтроллеры (ATMega8)
BlackCat , хорошее замечание, радостный был, чуток не тот код сбросил, вот правильный код продцедуры l1
При вкл. девайса на 1сек загораются все светляки (для этого и нужна задержка). Если сигнала на входе нет, то прога крутится вокруг , через 2сек собака сбрасывает проц. При отсутсвии сигнала получается 1сек светляки горят, 2 сек не горят, 1сек горят, 2сек не горят, и так до тех пор, пока не появится вх. сигнал.
Код: Выделить всё
l1: ldi r16,high(RAMEND)
out SPH, r16
ldi r16,low(RAMEND)
out SPL,r16
ser r16
out ddrb,r16
out ddrc,r16
out ddrd,r16
cbi ddrb,1
clr r16
ldi r16, (1<<WDCE)|(1<<WDE)
out WDTCR, r16
ldi r16, (1<<WDE) | (1<<WDP2) | (1<<WDP1) | (1<<WDP0)
out WDTCR, r16
wdr
ldi r16,$04
out TIMSK,r16
ldi XH,high(65535)
ldi XL,low(65535)
in XL,TCNT1L
in XH,TCNT1H
rcall l5
ldi r24,LOW(1000)
ldi r25,HIGH(1000)
rcall mswait
wdr
clr r16
out portb,r16
out portc,r16
out portd,r16
cbi portb,1
out TCNT1H,r16
out TCNT1L,r16
ldi r16,2
out TCCR1B,r16
sei
Код: Выделить всё
l2: sbis pinb,1
rjmp l2
- BlackCat
- прапорщик
- Сообщения: 469
- Зарегистрирован: 2007-10-16 22:40:42
Re: Кто может программировать под микроконтроллеры (ATMega8)
Теперь понятно, сразу не заметил инструкций, которые устанавливают максимальное значение в регистре.
-
- проходил мимо
- Сообщения: 8
- Зарегистрирован: 2010-03-12 22:00:27
Re: Кто может программировать под микроконтроллеры (ATMega8)
Блин, если и писать на ASM'е, то надо хотя бы коментарии оставлять. Пока въехал, думал мозг сломаю. ![Smile :smile:](./../images/smilies/smile.gif)
![Smile :smile:](./../images/smilies/smile.gif)