Ацп (ADC0) atmega8 нуждаюсь в помощи

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

Ацп (ADC0) atmega8 нуждаюсь в помощи

Сообщение pimple2006 »

здравствуйте

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

.include "C:\avrassembler\include\m8def.inc"

.def Temp=R16
.def Temp1=R17
.def Temp2=R18
.def Temp3=R19
.def start=R20


.cseg
.org 0


ldi temp,low(RAMEND)
out SPL,temp
ldi temp,high(RAMEND) ; Stack Pointer = $45F
out SPH,temp

cli ; запретить прерывания5.Настройка аналого-цифрого преобразователя(АЦП)

ldi temp, 0b00100000
out ADMUX, temp

ldi temp,  0b10001011
out ADCSRA, temp




ldi Temp3,0b11111111 ;присвоение константы
out DDRD,Temp3 ;вывод


rcall adc_convert
main:
rcall adc_convert
cpi temp,80
brge ON

OF:
ldi temp3,0b00000000
out PortD,temp3
rjmp main

ON:
ldi temp3,0b01000000
out PortD,temp3
rjmp main

adc_convert:
sbi ADCSRA , ADSC

delay:
sbic ADCSRA , ADSC
rjmp delay

in temp, ADCL ; просто формальность (первым всегда читается ADCL)
in temp, ADCH ; wreg contains result
ret
если комментировать adc_convert,после небольших махинаций,добавляя задержку,диод начинает моргать как положено.Пишу в блокноте++.
вопрос:
cpi temp,80 - лампа не горит,протеус зацикливается на off
cpi temp,150 - лампа горит,протеус зацикливается на on
что не так?
Реклама
Аватара пользователя
Pink-Pank
Опытный кот
Сообщения: 721
Зарегистрирован: Ср июн 11, 2014 09:43:13
Откуда: США
Контактная информация:

Re: Ацп (ADC0) atmega8 нуждаюсь в помощи

Сообщение Pink-Pank »

проверьте инициализацию АЦП и задержку
Fucking static initialization order fiasco
Реклама
pimple2006
Первый раз сказал Мяу!
Сообщения: 20
Зарегистрирован: Ср фев 08, 2012 22:58:32
Откуда: Лебедянь

Re: Ацп (ADC0) atmega8 нуждаюсь в помощи

Сообщение pimple2006 »

ребята,скажите а чем отличается от первое вроде с учетом запятой ,а это как вообще?Поменял brge на brsh - все заработало вроде
Аватара пользователя
Pink-Pank
Опытный кот
Сообщения: 721
Зарегистрирован: Ср июн 11, 2014 09:43:13
Откуда: США
Контактная информация:

Re: Ацп (ADC0) atmega8 нуждаюсь в помощи

Сообщение Pink-Pank »

BRSH Branch if Same or Higher if (C = 0) then PC <- PC + k + 1

BRGE Branch if Greater or Equal, Signed if (N (+) V= 0) then PC <- PC + k + 1

даташит себе скачайте. глава Instruction Set Summary
Fucking static initialization order fiasco
Реклама
Эиком - электронные компоненты и радиодетали
akl
Друг Кота
Сообщения: 4446
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Re: Ацп (ADC0) atmega8 нуждаюсь в помощи

Сообщение akl »

По мне, лучше Instruction Set Manual
Реклама
Аватара пользователя
Pink-Pank
Опытный кот
Сообщения: 721
Зарегистрирован: Ср июн 11, 2014 09:43:13
Откуда: США
Контактная информация:

Re: Ацп (ADC0) atmega8 нуждаюсь в помощи

Сообщение Pink-Pank »

Ну, это более общее и размазанное. А там все сжато, по данной модели и оформлено в табличку. Для быстрого доступа - самое то. А вот если чаво не понятно или неоднозначно, то можно заглянуть и в то, что Вы предложили.
Fucking static initialization order fiasco
Реклама
pimple2006
Первый раз сказал Мяу!
Сообщения: 20
Зарегистрирован: Ср фев 08, 2012 22:58:32
Откуда: Лебедянь

Re: Ацп (ADC0) atmega8 нуждаюсь в помощи

Сообщение pimple2006 »

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

Re: Ацп (ADC0) atmega8 нуждаюсь в помощи

Сообщение pyzhman »

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

Re: Ацп (ADC0) atmega8 нуждаюсь в помощи

Сообщение pimple2006 »

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

.include "C:\avrassembler\include\m8def.inc"

.def Temp=R16
.def Temp1=R17
.def Temp2=R18
.def Temp3=R19
.def start=R20


.cseg
.org 0


ldi temp,low(RAMEND)
out SPL,temp
ldi temp,high(RAMEND) ; Stack Pointer = $45F
out SPH,temp

cli ; запретить прерывания5.Настройка аналого-цифрого преобразователя(АЦП)

ldi Temp1,0b11111111 ;присвоение константы
out DDRD,Temp1 ;вывод

main:

;rcall adc_convert

;cpi temp,80

;brsh ON

OF:
ldi temp2,0b00000000
out PortD,temp2
ldi temp,250
ldi temp1,250
delay:
dec temp
brne delay
dec temp1
brne delay
rjmp ON

ON:
ldi temp2,0b01000000
out PortD,temp2
ldi temp,250
ldi temp1,20
delay1:
dec temp
brne delay1
dec temp1
brne delay1
rjmp OF

;adc_convert:
;ldi temp1,0b01100100
;out ADMUX, temp1

;ldi temp1,0b10001011
;out ADCSRA, temp1
;sbi ADCSRA , ADSC

;delay:
;sbic ADCSRA , ADSC
;rjmp delay

;in temp, ADCL ; просто формальность (первым всегда читается ADCL)
;in temp, ADCH ; wreg contains result

;ret 
сто раз перепрошивал,моргает отлично)
при этом PC0-PC5 ~4,1В
имеется два микроконтроллера,на всех двух(PC) есть напряжение
Может я горе паяльник? :))
я уже со злости отпаял Avcc и напряжение все равно есть)
Ответить

Вернуться в «AVR»