Здравствуйте! Нужно реализовать АЦП на atmega8535.

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Ленин
Родился
Сообщения: 2
Зарегистрирован: Сб апр 09, 2011 08:28:42

Здравствуйте! Нужно реализовать АЦП на atmega8535.

Сообщение Ленин »

Два канала: ADC0 и ADC7, АЦП пятиразрядное. На индикатор выводится сумма показаний двух каналов в восьмиричной системе счисления. Вот сама программа, но в ней где-то загвоздка, мешающая правильно работать. Помогите, пожалуйста.

.include "m8535def.inc" ; Подключить файл описаний, имён регистров портов ввода/вывода
.cseg
.org 0
rjmp reset
.org $00E
rjmp inADC_0 ;Вектор прерывания АЦП
.org $080
.org $100 ;Адрес начала программы

reset:
;Установка стека
ldi r16,low(RAMEND)
out spl,r16
ldi r16,high(RAMEND)
out sph,r16
;Установка портов: А на вход, С,D на выход
clr r16
out DDRA,r16
out PORTA,r16 ;подтягивающие резисторы порта А
ldi r16,0xFF
out DDRD,r16
out DDRC,r16
;Установка регистров
ldi r17,0b00100000 ;R17-Выравниваение по левому краю,ADC0
ldi r18,0b00100111 ;R18-Выравниваение по левому краю,ADC7
ldi r24,0x00
clr r25
ldi r31,0x02 ;R31-для флеш памяти
;Инициализация АЦП
out ADMUX,r17
ldi r16,0b11001111 ;Инициализация АЦП:разрешение и запуск
out ADCSRA,r16 ;циклического преобразования с предделителем 16
sei ;Общее разрешение прерываний

main:
rjmp main

inADC_0: ;Прерывание АЦП
ldi r16,0b11001111
out ADCSRA,r16 ;с предделителем 16
cpi r24,0x01 ;Поочередно считываем показания то с ADC0(*),
breq inADC_7 ;Перейти, если равно
inc r24 ;Счетчик
out ADMUX,r17 ;из регистра r17 - в первый канал АЦП
in r19,ADCL
in r19,ADCH ;Записываем показания с 1 потенциометра в R19
lsr r19 ;сдвигаем вправо на 3, чтобы получить 5 разрядов
lsr r19
lsr r19
andi r19,0b00011111
; mov r21,r19
;rjmp m1


reti ;Возврат из прерывания

inADC_7: ;(*)то с ADC7
clr r24 ;обнуляем cчетчик
out ADMUX,r18 ;из регистра r18 - вo второй канал АЦП
in r20,ADCL
in r20,ADCH ;Записываем показания со 2 потенциометра в R20
lsr r20 ;сдвигаем вправо на 3, чтобы получить 5 разрядов
lsr r20
lsr r20
andi r20,0b00011111
rjmp m1

m1:
mov r22,r19 ;Содержимое r19-и r22
add r22,r20 ;Считаем сумму показаний, результат записываем в R22
andi r22,0b00011111




odin:

mov r26,r22 ; перемещаем результат вычисления в r26
cpi r25,0x00 ; счетчик равен 0?
brne dva ; если нет, переходим на индикацию второй цифры

andi r26,0x07 ; маска (оставляем 3 младших бита)
mov r30,r26 ; перемещаем результат в r30
lpm ; берем значение цифры
out PORTD,r0 ;выводим его
ldi r23,0x01
out PORTC,r23 ;на первый индикатор
inc r25 ; инкрементируем счетчик
clr r26
clr r30
reti
dva:

cpi r25,0x01 ;счетчик равен 1?
mov r26,r22 ;перемещаем результат вычисления в r26
lsr r26 ;сдвигаем результат на 3 бита вправо
lsr r26 ;тем самым делим его на 8
lsr r26
andi r26,0x07 ;оставляем только 3 младших бита
mov r30,r26 ;перемещаем результат в r30
lpm ;берем значение цифры
out PORTD,r0 ;выводим его
ldi r23,0x02
out PORTC,r23 ;на второй индикатор
clr r25 ;обнуляем счетчик
reti


.db 0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07 ;заполняем флеш (0...7)
Реклама
Аватара пользователя
MerK
Грызет канифоль
Сообщения: 274
Зарегистрирован: Пт июл 09, 2010 21:37:23
Откуда: Саратов

Re: Здравствуйте! Нужно реализовать АЦП на atmega8535.

Сообщение MerK »

Я канеш не спец но у тебя бесконечный цикл есть :)
После включения питания он у тебя на метку ресет прыгает и выполняет то что ты там написал а потом

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

main:
rjmp main
если не прав поправьте
В каждом из нас спит гений и бодрствует идиот
Реклама
Аватара пользователя
GP1
Поставщик валерьянки для Кота
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград
Контактная информация:

Re: Здравствуйте! Нужно реализовать АЦП на atmega8535.

Сообщение GP1 »

просто у него все выполняется в прерывании.
на мой взгляд - это не лучшее решение. ИМХО
я бы так никогда не стал делать.
Чем дальше, тем больше становлюсь занудой...
Изображение
Аватара пользователя
MerK
Грызет канифоль
Сообщения: 274
Зарегистрирован: Пт июл 09, 2010 21:37:23
Откуда: Саратов

Re: Здравствуйте! Нужно реализовать АЦП на atmega8535.

Сообщение MerK »

Я делаю всегда на подпрограммах даже если она вызывается один раз за всю работу :)
В каждом из нас спит гений и бодрствует идиот
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
К@Т
Говорящий с текстолитом
Сообщения: 1573
Зарегистрирован: Сб окт 09, 2010 12:33:48
Откуда: Незалежная

Re: Здравствуйте! Нужно реализовать АЦП на atmega8535.

Сообщение К@Т »

Ленин писал(а): в
восьмиричной системе
счисления.
Это как?Это пока я спал новую СС прдумали?
У кошки 4 ноги и хвост-плюс,минус,вход,выход,а хвост-земля.....Надо переходить с китайской бурды на канифоль.......[url=http://infobar.hsdn.org/][img]http://static.hsdn.org/infobar/350x60.gif[/img][/url]
Реклама
Аватара пользователя
GP1
Поставщик валерьянки для Кота
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград
Контактная информация:

Re: Здравствуйте! Нужно реализовать АЦП на atmega8535.

Сообщение GP1 »

видать давно спишь :)))
я так ее лет 30 тому назад изучал :)))
Чем дальше, тем больше становлюсь занудой...
Изображение
Реклама
Аватара пользователя
К@Т
Говорящий с текстолитом
Сообщения: 1573
Зарегистрирован: Сб окт 09, 2010 12:33:48
Откуда: Незалежная

Re: Здравствуйте! Нужно реализовать АЦП на atmega8535.

Сообщение К@Т »

GP1 писал(а):видать давно спишь :)))
я так ее лет 30 тому назад изучал :)))
Сейчас распространены всего 3 СС-
Двоичная,
Десятичная,
Шеснадцатеричная!
Но я не отрицаю то что она была во времена динозавров и вымерла вместе с Алголом,селеновыми выпрямителями,радиолампами и т.д.
У кошки 4 ноги и хвост-плюс,минус,вход,выход,а хвост-земля.....Надо переходить с китайской бурды на канифоль.......[url=http://infobar.hsdn.org/][img]http://static.hsdn.org/infobar/350x60.gif[/img][/url]
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

Re: Здравствуйте! Нужно реализовать АЦП на atmega8535.

Сообщение pyzhman »

Специалист должен разбираться в любой сс, хоть в одиннадцатиричной. Для этого такие задачи и существуют.
Docendo discimus
Аватара пользователя
К@Т
Говорящий с текстолитом
Сообщения: 1573
Зарегистрирован: Сб окт 09, 2010 12:33:48
Откуда: Незалежная

Re: Здравствуйте! Нужно реализовать АЦП на atmega8535.

Сообщение К@Т »

pyzh_man писал(а):Специалист должен разбираться в любой сс, хоть в одиннадцатиричной. Для этого такие задачи и существуют.
Ну тогда давайте проги писать на Алголе,в качестве памяти использовать магнитофонную ленту а в качестве исполнителя кода использовать радиолампы.Нужно тогда на таком 'мк' а не на меге собирать это устройство .;)))).
У кошки 4 ноги и хвост-плюс,минус,вход,выход,а хвост-земля.....Надо переходить с китайской бурды на канифоль.......[url=http://infobar.hsdn.org/][img]http://static.hsdn.org/infobar/350x60.gif[/img][/url]
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

Re: Здравствуйте! Нужно реализовать АЦП на atmega8535.

Сообщение pyzhman »

Или я недоходчиво выразил свою мысль, или уважаемый К@Т неверно понял. Я хотел сказать, что такими задачами прививается ширина кругозора, если можно так выразиться, создается база так сказать. В каменный век никто не смотрит. Хотя тоже как сказать - молотки-то оттуда.
Docendo discimus
Аватара пользователя
К@Т
Говорящий с текстолитом
Сообщения: 1573
Зарегистрирован: Сб окт 09, 2010 12:33:48
Откуда: Незалежная

Re: Здравствуйте! Нужно реализовать АЦП на atmega8535.

Сообщение К@Т »

pyzh_man писал(а):Или я недоходчиво выразил свою мысль, или уважаемый К@Т неверно понял. Я хотел сказать, что такими задачами прививается ширина кругозора, если можно так выразиться, создается база так сказать. В каменный век никто не смотрит. Хотя тоже как сказать - молотки-то оттуда.
Теперь я вас понял.
У кошки 4 ноги и хвост-плюс,минус,вход,выход,а хвост-земля.....Надо переходить с китайской бурды на канифоль.......[url=http://infobar.hsdn.org/][img]http://static.hsdn.org/infobar/350x60.gif[/img][/url]
Закрыто

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