Модераторы: PILOT, ManiaK, Mazzi
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ADC_ATtiny13,ручной пуск, без паузы работает одноразово...  
:(
    Опции темы
pettimm
Дата 19.11.2013, 15:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 24.9.2005

Репутация: 1
Всего: 1



Привет всем!
Настроил АЦП
Изменяю напряжение на ноге ATtiny13

Если не прыгнуть на паузу pausa1s (RCALL pausa1s) после метки "PEREVIRJAEMO_NAPRUGU:" то реагирует на изменение напряжения только после выключения и включения питания как бы одноразово, а когда выполняет прыжок на паузу (RCALL pausa1s), то тогда нормально,крутим переменник и видим что при изменении напряжения светодиод включается и выключается. В чем причина?
частота задающего генератора 4,8Мгц/8=600 Кгц

Код на асме:

;NASTROJKA ADC\ АЦП

;ldi temp,0b11101010 ; 150 Khz : частота ck= 0.6 KHz/4=150 khz
;out ADCSRA,temp
;;" бит 7 ADEN - (выставляем в 1) - единица включает ADC ноль-отключает ADC
;" бит 6 ADSC- (выставляем в 1) - запустить измерения
;" бит 5 ADATE- (выставляем в 0) - единица включает автоматический старт измерения.
;" бит 4 ADIF- (выставляем в 0) - при включенном прерывании ADC - бит будет выставлятся в единицу
;после завершения конвертации, и возвращатся в 0 после обработки прерывания. При выключеном
;прерывании этот бит нужно сбрасывать "вручную"
;" бит 3 ADIE- (выставляем в 1) - Разрешать прерывание от ADC
;" биты 0-2 ADPS2,ADPS1,ADPS0- управляет временем измерения,Коефициент деления тактовой частоты в идеальных условиях симуляции на результат; не влияет.
;Выбрать нужно такой коефициент деления чтоб частота преобразования была 50-200 Кгц
;000 -2
;001 -2
;010 -4
;011 -8
;100 -16
;101 -32
;110 -64
;111 -128

ldi temp,0b01100001 out ADMUX,temp
;BIT_6 :: istocnik opornogo naprjagenija 0- Up 1- 1,1v vnutrennij istochnik
;BIT_5:::Но порядок следования битов на левое ориентирование можно сменить
;установив бит ADLAR в регистре ADMUX. Это удобно, если требуется получить 8-битовый результат.
;В таком случае требуется прочитать только регистр ADCH
; BIT_0= 1 ; BIT_1=0 - vubran vhod ADC1

ldi temp,0b00000100 out DIDR0,temp ; Отключение функции цифрового ;входа на ADC1
;VUBOR ISTOCHNIKA ZAPUSKA PROCTSA PREOBRAZOVANIJA:
ldi temp,0b00000000 out ADCSRB,temp
; AVTONOMNUJ REGIM RABOTU=00000000

;******************************************8
PEREVIRJAEMO_NAPRUGU:

RCALL pausa1s

ldi temp,0b00000000 ; OBNULJAEMO
out ADCSRA,TEMP
OUT ADCH,TEMP
OUT TCNT0,TEMP

ldi temp,0b11000010 out ADCSRA,temp ; 150 Khz : частота ;ck= 0.6 KHz/4=150 khz ; ZAPUCK VRYCHNY

CHEKAEMO_KINTSJA_VUMIRU:
WDR
IN TEMP,ADCSRA
SBRS TEMP,ADIF
RJMP CHEKAEMO_KINTSJA_VUMIRU

IN TEMP,ADCH
CPI temp,204;
BRSH VUMUKAEMO_SIGNAL; ESLI ROVNO ILI BOLSHE
;BRLO VMUKAEMO_SIGNAL
VMUKAEMO_SIGNAL:
SBI PORTB,SVITLO
RJMP PEREVIRJAEMO_NAPRUGU

VUMUKAEMO_SIGNAL:
CBI PORTB,SVITLO
RJMP PEREVIRJAEMO_NAPRUGU
PM MAIL   Вверх
Romikgy
Дата 22.11.2013, 22:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 3
Всего: 146



это не полный код, и почему не писать си?


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
pettimm
Дата 23.11.2013, 12:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 24.9.2005

Репутация: 1
Всего: 1



Спасибо за ответ, вот полный код на асме, асм- люблю, си- не знаю  :


.nolist
.include  "tn13def.inc"
.list

;*        **********************************
        ; Описание собственных переменных  .equ
;Port B 
.equ  KLUCH_vuh  =0 ;noga5    vuhid  1
;.equ  *** =1 ;noga6       vhod   0
;.equ  ****  =2 ;noga7   vhid  0 
;.equ  ** =3  ;noga2   vhod  0
;.equ  ** ;noga3     vhod  0
.equ  SVITLO_14_4v_vukl =5 ;noga1         vhod  0
;.equ  ***=6 ;                      
;*        **********************************
        ;prusvoennja registram imeni

.def TEMP = r16; v pauzah
.def TEMP_INTERUPT =R17 ; 

;************************************
;*        **************************************
.def TEMP2 = r21 ; v pauzah
.def TEMP3 = r24
 .def TEMP4 = r25
 .def TEMP_zvuk = r22

;*        **********************************
        ;Obrabotka prerivanij

.cseg

.org  0x0000 rjmp start
.org  0x0001 rjmp zovni_int0; 
.org  0x0002 rjmp NEZADIJANI
.org  0x0003 rjmp NEZADIJANI
.org  0x0004 rjmp NEZADIJANI
.org  0x0005 rjmp NEZADIJANI
.org  0x0006 rjmp NEZADIJANI
.org  0x0007 rjmp NEZADIJANI
.org  0x0008 rjmp NEZADIJANI
.org  0x0009 rjmp preruv_ADC
;/            ///////////////////////////////////
preruv_ADC: reti;0x0009
;/            ////////////////////////////////////
NEZADIJANI: reti
;/            ////////////////////////////////////
zovni_int0:    reti ;0x0001  
;*        ************************* 
;*        ************************* 
start:        ; 
                        ;NASTROJKA_PORTIV:
                ;конфигурация порта B
             Ldi  temp , 0b00111011
             Out  DDRB , temp                 
              Ldi  temp , 0b00011011
             Out  PORTB , temp

;               *************************
;STEK_NASTROJKA:  ;инициализация стека
                ldi   temp,low (RAMEND)
                out   SPL,temp
                ;*              *************************
             ;Vkluchenie storogevogo tajmera
 WATCHDOG_ON:
             ldi temp,0b00011111 ; 0-  1- 2- 3- 4-
                out WDTCR,temp;Storogevoj tajmer vkl
;*              *********************************************
cli
Priznak_reset: 
               ldi TEMP3,3
pr_res1:
             sbi PORTB,5
            Rcall pausa1s
         cbi PORTB,5
          rcall pausa1s

         dec TEMP3
         cpi TEMP3,0
         brne pr_res1
;**********************************************
ldi temp,0b01100001 out ADMUX,temp
ldi temp,0b00000100 out DIDR0,temp ; Отключение функции цифрового входа на ADC1
 ;VUBOR ISTOCHNIKA ZAPUSKA PROCTSA PREOBRAZOVANIJA: 
ldi temp,0b00000000  out ADCSRB,temp       ; AVTONOMNUJ REGIM RABOTU=00000000
;******************************************8
PEREVIRJAEMO_NAPRUGU:  
                                         RCALL pausa250Ms;pausa1s
                                      ldi temp,0b00000000 ; OBNULJAEMO
                                      out ADCSRA,TEMP
                             OUT ADCH,TEMP
                             OUT TCNT0,TEMP
    ldi temp,0b11000010 out ADCSRA,temp ; 150 Khz : частота ck= 0.6 KHz/4=150 khz ; ZAPUCK VRYCHNY

CHEKAEMO_KINTSJA_VUMIRU:
                                            WDR
                                       IN TEMP,ADCSRA
                        SBRS TEMP,ADIF
                       RJMP CHEKAEMO_KINTSJA_VUMIRU

                      IN TEMP,ADCH
                 CPI temp,204;
                BRSH VUMUKAEMO_SIGNAL; ESLI ROVNO ILI BOLSHE
                ; BRLO VMUKAEMO_SIGNAL
             
;*******************************

VMUKAEMO_SIGNAL:
                    SBI PORTB,SVITLO_14_4v_vukl
              RJMP PEREVIRJAEMO_NAPRUGU
VUMUKAEMO_SIGNAL:
                  CBI PORTB,SVITLO_14_4v_vukl                  
                  RJMP PEREVIRJAEMO_NAPRUGU

;***************************
pausa1s:
        ldi TEMP,250  
 p1s:
        ldi TEMP2,250   
p1_1s:            
        WDR
        dec TEMP2
        cpi TEMP2,0
        brne p1_1s
p2_1s:
        dec TEMP
        cpi TEMP,0
        brne p1s
        
    ret

;**********************
pausa250Ms:
         ldi TEMP,64  
 p250Ms:
        ldi TEMP2,130   
p250_1s:            
        WDR
        dec TEMP2
        cpi TEMP2,0
        brne p250_1s

        dec TEMP
        cpi TEMP,0
        brne p250Ms
    ret

Это сообщение отредактировал(а) pettimm - 23.11.2013, 15:27
PM MAIL   Вверх
Romikgy
Дата 25.11.2013, 18:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 3
Всего: 146



есть кнопочка код, что бы понятно было читать ваш код (смотреть буду позже)


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Romikgy
Дата 25.11.2013, 18:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 3
Всего: 146



Цитата

r. Alternatively,
ADIF is cleared by writing a logical one to the flag. Beware that if doing a Read-Modify-Write on
ADCSRA, a pending interrupt can be disabled. 

возможно вместо паузы надо прочитать ADCSRA


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
pettimm
Дата 27.11.2013, 14:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 24.9.2005

Репутация: 1
Всего: 1



проверил вместо паузы поставил in temp, ADCSRA(ДУМАЮ ДОСТАТОЧНО ЧТО БЫ ПРОЧИТАТЬ?) -- НЕ ПОМОГЛО, 
А ЕЩЕ ТАКУЮ ПРОВЕРКУ ДЕЛАЛ: В ПАУЗЕ СТАВИЛ ЗНАЧЕНИЕ РЕГИСТРОВ=1 КАК БЫ СДЕЛАТЬ ПАУЗУ МИНИМАЛЬНОЙ ПО ВРЕМЕНИ  И ТО ЖЕ  ПРИ ЭТОМ НЕ РАБОТАЛО, ТО ЕСТЬ ОНО ХОЧЕТ ПАУЗУ И НЕ МЕНЬШЕ КАКОЙ ТО ДЛИНЫ, НО ЗАЧЕМ?

PM MAIL   Вверх
Romikgy
Дата 27.11.2013, 17:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 3
Всего: 146



накидать схему в протеусе можете?


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
pettimm
Дата 27.11.2013, 20:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 24.9.2005

Репутация: 1
Всего: 1



к сожалению не работал в протеусе, схема есть в лайоут5 и прошивку заливаю в реальное устройство, а протеус интересно будет освоить, скачаю попробую с ним поиграться
PM MAIL   Вверх
kolobok0
  Дата 4.12.2013, 23:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 24.12.2008

Репутация: нет
Всего: 2



Цитата(pettimm @ 19.11.2013,  15:09)
...Если не прыгнуть на паузу pausa1s (RCALL pausa1s) после метки...

логику работы с АЦП проговорите просто тупо словами.
Пока я вижу такую схему:
включение, ожидание, начало цикла работы с ацп, <пауза>, инициализация ацп, ожидание, работа с ацп, конец цикла.

Вопрос, Вы наверное в курсе, что для оцифровки аналогового сигнала как и для обратного действия (ЦАП) необходимо время? И наверное Вы в курсе, что необходимо холостое преобразование, после инициализации? Отсюда и влияние вашей паузы в коде. Вообще-то научитесь сразу правильно писать. Загрузка регистров не ноликами единичками, а осмысленными преддефайнами из хедера на данный МК. Пишите в одном стиле. Меткам давайте локаничные но понятные имена. Сразу пишите оптимально(с прерываниями от переферии МК), а не в рукопашную. Старайтесь использовать опыт ранее до Вас накопленный(а то будете постоянно на уровне обезъяны) - в инете примеров куча по работе в том числе и с АЦП.

удачи вам
(круглый)

Это сообщение отредактировал(а) kolobok0 - 4.12.2013, 23:43
PM MAIL   Вверх
pettimm
Дата 27.12.2013, 12:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 24.9.2005

Репутация: 1
Всего: 1



Спасибо за ответ... но выявил что если не обнулять ADCSRA
 по метке  "ne_obnul", то работает  и без паузы по метке
"Esli_ne_obnul_to_pauso_no"

PEREVIRJAEMO_NAPRUGU:  
Esli_ne_obnul_to_pauso_no: RCALL pausa250Ms;pausa1s
                                      ldi temp,0b00000000 ; OBNULJAEMO
                                     out ADCSRA,TEMP
         ne_obnul:      OUT ADCH,TEMP
                             OUT TCNT0,TEMP
                              ldi temp,0b11000010 out ADCSRA,temp ;

CHEKAEMO_KINTSJA_VUMIRU:  WDR
                                     IN TEMP,ADCSRA SBRS TEMP,ADIF
                                    RJMP CHEKAEMO_KINTSJA_VUMIRU
                                IN TEMP, ADCH  CPI temp,204;
           BRSH VUMUKAEMO_SIGNAL;
                ; BRLO VMUKAEMO_SIGNAL
А так же этот ефект проявляется при десятибитном режиме если прочитывать неправильно регистры ADCL , ADCH . в таком ком режиме их нужно читать обязательно в порядке, первым   ADCL, вторым ADCH. Всем спасибо-все работает.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Микроконтроллеры (MCU) и микропроцессоры (MPU)"
PILOT ManiaK
UniBomb Mazzi

На данный раздел помимо Правил форума распространяются текже следующие правила:


  • Прежде чем создать тему воспользуйтесь поиском или посмотрите в faq. Возможно на форуме уже есть ответ на ваш или близкий к вашему вопрос.
  • В заголовке темы в квадратных скобках обозначьте используемое семейство микроконтроллера: [avr],[pic],[arm].
  • При создании темы с вопросом указывайте участок кода с ошибкой, версию компилятора, схемы подключения, fuse биты и прочие данные, которые помогут найти правильный ответ. Для форматирования текста программ используйте кнопку код.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Для флуда, просьб выполнить задание, поиска партнёров или исполнителей существуют свои разделы.
  • Если вы заметили несовместимое с правилами сообщение, то можете уведомить об этом модератора раздела нажав кнопку Репорт у соответствующего сообщения.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, PILOT, ManiaK, UniBomb, Mazzi.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Микроконтроллеры (MCU) и микропроцессоры (MPU) | Следующая тема »


 




[ Время генерации скрипта: 0.0953 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.