Страница 1 из 1

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

Добавлено: Вс июн 15, 2014 00:53:02
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
что не так?

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

Добавлено: Вс июн 15, 2014 08:00:46
Pink-Pank
проверьте инициализацию АЦП и задержку

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

Добавлено: Пн июн 16, 2014 12:49:50
pimple2006
ребята,скажите а чем отличается от первое вроде с учетом запятой ,а это как вообще?Поменял brge на brsh - все заработало вроде

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

Добавлено: Пн июн 16, 2014 12:58:41
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

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

Добавлено: Пн июн 16, 2014 13:10:17
akl
По мне, лучше Instruction Set Manual

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

Добавлено: Пн июн 16, 2014 13:14:41
Pink-Pank
Ну, это более общее и размазанное. А там все сжато, по данной модели и оформлено в табличку. Для быстрого доступа - самое то. А вот если чаво не понятно или неоднозначно, то можно заглянуть и в то, что Вы предложили.

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

Добавлено: Вт июн 17, 2014 19:32:47
pimple2006
Ребят,протеус работает отлично,в реале пичалька....
прошиваю,диод постоянно горит,решил замерить тестером напряжения на ADC - 4 Вольта,скажите это нормально?

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

Добавлено: Ср июн 18, 2014 08:52:52
pyzhman
Напишите и залейте тестовую программу, которая будет просто моргать светодиодом. Для проверки тактирования.

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

Добавлено: Ср июн 18, 2014 20:07:09
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 и напряжение все равно есть)