Здравствуйте. Все собрано, все простейшее, и не работает. микросхема ATtiny2313, к одному PortD.5 припаян светодиод. надо чтоб после включения света он погорел чуть чуть и потух, прилагаю простейший код. Кто знает в чем проблема может быть?
Здравствуйте. Все собрано, все простейшее, и не работает. микросхема ATtiny2313, к одному PortD.5 припаян светодиод. надо чтоб после включения света он погорел чуть чуть и потух, прилагаю простейший код. Кто знает в чем проблема может быть?
Во первых что будет когда программа отработает задержку и выключит светодиод (это я к тому, что зацикливания пограммы нет).
Во-вторых как проявляется "не работает" (светодиод не включается, не выключается, мигает и т. п.)
В третьих схему бы посмотреть (ну кто может знать как вы там диод к порту припаяли - анодом или катодом, и т. п.).
ldi Temp,0b1111111 ;тушим светодиод
out PortD,Temp
то мигает, а вот если дальше увеличиваю зедержку с использованием остальных Temp1..4. то светодиод загораетс и не тухнет. зависает, чтоли... делал все по обучалке РадиокКота, только на ATtiny2313
Зарегистрирован: Вс мар 04, 2007 01:17:12 Сообщений: 690
Рейтинг сообщения:0
конечно не тухнет- время то еще не вышло, может он у вас через 30 минут только потухнет. цикл слишком долгий (а когда моргает- слишком короткий), попробуйте задержку постепенно увеличивать.
В железе не пробовал, пока, но в симуляторе AVRStudio все норм: для Temp горит 192 мкс, с Temp1 50мс, с Temp2 - 12с. Может у вас проблемы с железом или МК работает не на 4МГц, а на порядки меньше?! Да и всетаки поставте в конце своей программы бесконечный цикл, программа МК не должна иметь конца.
....
Попробовал в железе, все встало на свои места. Достаточно было поставить в конце бесконечный цикл Без него светодиод все время горел, а яркость свечения зависела от выставленной задержки
Зарегистрирован: Вс сен 10, 2006 00:04:03 Сообщений: 527
Рейтинг сообщения:0
Название: Практическое программирование микроконтроллеров Atmel AVR на языке ассемблера
Автор: Ю. Ревич
Издательство: БХВ-Петербург
Год: 2008
Страниц: 384
Формат: djvu-rar+% восст.
Размер: 5,5 Мб
ISBN: 978-5-9775-0277-1
Изложены основные принципы функционирования и особенности архитектуры микроконтроллеров Atmel AVR. Подробно описаны приемы программирования микросхем этого семейства и их отдельных узлов. Вы найдете готовые рецепты для программирования большинства основных функций современной микроэлектронной аппаратуры: от реакции на нажатие кнопки или построения динамической индикации до сложных протоколов записи данных во внешнюю память или особенностей подключения часов реального времени. В книге учтены особенности современных моделей AVR и сопутствующих микросхем последних лет выпуска. Особое внимание уделяется обмену данными микроэлектронных устройств с персональным компьютером, приводятся примеры программ на Delphi. Приложение содержит основные параметры микроконтроллеров AVR, перечень команд и тексты программ для них, а также список используемых терминов и аббревиатур.
http://rs537.rapidshare.com/files/19032 ... mk_avr.rar
; setup adder value ldi r24,0x14 ldi r25,255 ; to 1 kHz ldi r26,0x00 ;
; main loop ; ; r28,r29,r30 is the phase accumulator ; r24,r25,r26 is the adder value determining frequency ; ; add value to accumulator ; load byte from current table in ROM ; output byte to port ; repeat ; LOOP1: add r28,r24 ; 1 adc r29,r25 ; 1 adc r30,r26 ; 1 lpm ; 3 out PORTB,r0 ; 1 rjmp LOOP1 ; 2 => 9 cycles INT_0:
sbic PinD,2 ;Проверяем нажата ли кнопка reti ;Регистр ADMUX - ADC multiplexer Selection Ragister ;7:6-REFS-Reference selection bits ;00-External eference voltage ;5-ADLAR-Left adjust result ;4-NU-Not Used ;3:0-MUX-Analog channel selection bits ;0000-ADC0
;---------- ;Считываем АЦП ФОРМЫ ;---------- ldi r16, 0b00000000 out ADMUX, r16
;Устанавливаем бит старта преобразования
start: sbi adcsra,6 sbic adcsra,6 rjmp start ;Считываем значения преобразования АЦП in r17, ADCL
А каким образом исправить..? ниже код.. затираются регистры r22,25 и 26
Сначала формальные замечания:
1. В Вашем коде, без обид, черт ногу сломит:
а) в тексте моного числовых константа, значение которых непонятно
б) в тексте куча конструкций типа
Код:
sbi adcsra,6
и
Код:
ldi r16, 0b00000001 out ADMUX, r16
, которые следует заменить на
Код:
sbi adcsra,ADSC
и
Код:
ldi r16, (1<<MUX0) out ADMUX, r16
и им подобные в) неплохо бы сделать форматирование текста программы чтобы метки и другие конструкции были заметны г) неплохо бы указывать тип микроконтроллера для которого пишете 2. Желательно точно указать место в программе, где по вашему происходит ошибка. 3. Код приведен не полностью. 4. Не указано как вы провереяете работоспособность - в железе или на симуляторе. Теперь по существу. 1. Проверка нажатия кнопки реализована без защиты от дребезга - один из источников глюков.
Код:
sbic PinD,2 ;Проверяем нажата ли кнопка reti
2. Перед входом в обработчик в стеке не сохраняются регистры изменяемые в обработчике прерывания (в данном случае может и не влиять на работу программы, но вообще сохранять в стеке регистры изменяющиеся в обработчике прерывания - хороший тон). Подробнее об этом почитайте здесь http://radiokot.ru/forum/viewtopic.php?p=170029#170029 3. В третьих надо почитать даташит на предмет изучения работы АЦП - если бы Вы это сделали, то знали бы, что даже если Вас не интересует старший байт результата преобразования все-равно необходимо вычитывать регистр ADCH.
И общее замечание - Вы хотите, чтобы Вам помогли, но при этом информацию из вас приходится клещами вытягивать - не дело.
init: ldi r16,high(RAMEND) out SPH,r16 ldi r16,low(RAMEND) out SPL,r16 sei ; global enable interrupts
ser r16 ; out DDRB,r16 ; set all PORTB bits as output ser r16 out DDRC,r16
ldi r16,0b00000000 out MCUCR,r16 ;микроконтр регистр контроля
ldi r16,0b01000000 out GIMSK,r16 ;регистр маски прерывание разрешение внешнего прерывания
ser r16 star:
dec r16 out portb, r16 rjmp star
INT_0: in r16,SREG push r16
sbic PinD,2 ;Проверяем нажата ли кнопка reti
ldi r19, 0b10000011 out ADCSRA, r19
ldi r19, 0b00000000 out ADMUX, r19
;Устанавливаем бит старта преобразования
start: sbi adcsra,6 ;Считываем значения преобразования АЦП sbic adcsr,ADSC rjmp start in r17, ADCL in r18, ADCH
out portc,r17
sbis PinD,2 ;Проверяем отпущена ли кнопка rjmp INT_0 pop r16 out SREG,r16 reti
Вложения:
Комментарий к файлу: Тут проект в протеусе и АВР СТУДИО,прошивка. Результат АЦП по задумке должен светится на порту С и в регистрах Проект.rar [24.76 KiB]
Скачиваний: 264
_________________ Не бери от жизни все, а то не унесешь...
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения