Перейти к содержанию
    

L-P

Новичок
  • Постов

    4
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Контакты

  • ICQ
    Array
  1. Работа АЦП

    Во первых, большое спасибо за такой подробный ответ!! В STK500 есть панелька из 8-ми кнопок. Их можно подключить с помощью шины к порту A. Таким образом, настроив 7-й выход порта А, как вход АЦП (ADC7), я пытаюсь добиться, того чтобы при нажатии кнопки импульс от ее нажатия измерялся. На самом же деле при нажатии этой кнопки все диоды гаснут, а когда она отпущена, горят все 10 разрядов (сначала 8, а потом 2). Когда я закомментировал ту строчку ldi r16, (1 << ADEN)|(1 << ADIE)|(1 << ADSC)|(1 << ADFR);|(1 << ADPS0)|(1 << ADPS2) получилось, что при нажатии кнопки горят 3 младших разряда, а при отпущенной кнопке старшие 7. А если отсоединить кнопки от порта А, то диоды начинают мигать совершенно случайным образом - не понимаю в чем дело... Кто знаком с STK500 объясните, пожалуйста, почему так происходит???!!! Еще раз спасибо.
  2. Работа АЦП

    Огромное спасибо за ответы, у меня закончился траффик, поэтому не смог сразу ответить. Вот программа, слегка переделанная, но в сущности осталась как и была. .include "m8535def.inc" .org 0 rjmp RESET .org ADCCaddr rjmp interrupt .MACRO output com @1 out @0, @1 com @1 .ENDMACRO RESET: ldi r16,low(RAMEND) out SPL,r16 ldi r16,high(RAMEND) out SPH,r16 ldi r16, 7 ;ADC7 - вход АЦП. out ADMUX, r16 ;запуск преобразования в цикл. режиме, разрешение прерывания. ldi r16, (1 << ADEN)|(1 << ADIE)|(1 << ADSC)|(1 << ADFR);|(1 << ADPS0)|(1 << ADPS2) out ADCSRA, r16 ldi r16, 0xFF out DDRB, r16;порт B на вывод clr r16 out DDRA, r16 out PORTA, r16 sei MAIN: rjmp MAIN interrupt: ;обработчик прерывания in r20, ADCL in r21, ADCH andi r21, 0x03 output PORTB, r20 rcall delay output PORTB, r21 rcall delay reti delay: ;подпрограмма задержки delay1: ldi r17, 100 delay2: ldi r18, 100 delay3: dec r18 brne delay3 dec r17 brne delay2 dec r19 brne delay1 ret При запуске начинают мигать сначала все 8 диодов, а затем младшие два, с интервалом пару секунд. Что свидетельствует, о том, что из ADCL/ADCH извлекаются только единицы, а ведь должны быть нули, как я понимаю? Ведь на вход не поступает напряжение. Затем при нажатии на 7-ю кнопку, начинают мигать младшие три диода - т.е. в регистре ADCH - нули, а в ADCL - 0x07. Пожалуйста объясните мне почему так происходит? Спасибо, за внимание к моей проблеме. Проблема в том, что я слаб в схемотехнике. Насчет опорного напряжения: наверное, оно действительно равно нулю, потому что я никаких ИОНов не подключал. Я пробовал использовать внутр. ИОН загрузив в ADMUX 0xC7 вместо 0x07, но ничего не изменилось. Буду признателен если объясните мне как правильно нужно измерять напряжение, - как подключить внешний ИОН (и где его брать :) ) или можно обойтись внутр. ИОНом? И как правильно подавать напряжение на вход АЦП, что для этого нужно, подойдут ли для этого кнопки? В понедельник мне нужно уже продемонстрировать работающую программу преподу. :( Заранее, спасибо.
  3. Работа АЦП

    Да, действительно, спасибо. Но проблема все же осталась.
  4. Работа АЦП

    Здравствуйте. Не удается заставить работать такую программу: (При нажатии 2-й кнопки на STK500 содержимое ADCH/L должно выводиться на диоды, с интервалом ~1cек.) .include "m8535def.inc" .org 0 rjmp RESET .org ADCCaddr rjmp interrupt .MACRO output com @1 out @0, @1 com @1 .ENDMACRO RESET: ldi r16,low(RAMEND) out SPL,r16 ldi r16,high(RAMEND) out SPH,r16 rcall init_ports rcall init_adc sei MAIN: rjmp MAIN pdelay: pdelay1: ldi r17, 100 pdelay2: ldi r18, 100 pdelay3: dec r18 brne pdelay3 dec r17 brne pdelay2 dec r19 brne pdelay1 ret init_adc: push r16 ldi r16, (1 << ADEN)|(1 << ADIE)|(1 << ADFR)|(1 << ADPS0)|(1 << ADPS2) out ADCSRA, r16 ldi r16, 2 out ADMUX, r16 sbi ADCSRA, ADSC pop r16 ret init_ports: ldi r16, 0xFF out DDRB, r16 clr r16 out DDRA, r16 out PORTA, r16 ret interrupt: in r20, ADCL in r21, ADCH output PORTB, r20 rcall pdelay output PORTB, r21 rcall pdelay ret При запуске сначала загораются все 8 диодов, а затем через ~1 сек младшие два, которые так и застывают и при нажатии кнопок ничего не меняется. Помогите разобраться в чем здесь проблема. Заранее спасибо.
×
×
  • Создать...