Проблама с Tiny26

 

Cezar

новичок
Доброго времени суток.
Буду краток.
Нуждаюсь в информационной поддержке.
Суть проблемы: не запускается(не работает) микроконтроллер AVR Attiny26L, ранее запрограммирован через Altera Byte Blaster и программой avreal.
Текст программы(смена состояния порта А с "0" на "1"):
.def chislo = R16;
.equ PORTA = $1B;
.equ DDRA = $1A;
set: ldi r18,0xFF;
hello: ldi chislo,0xFF;
out PORTA,chislo;
out DDRA,r18;
ldi r22, 0xFF;
delays: dec r22;
brne delays;
ldi chislo,0;
out PORTA,chislo;
ldi r22, 0xFF;
delays1:dec r22;
brne delays1;
rjmp hello;
Результат программирования:
>-p1 -ab +tiny26 -e -w -v -c 1.hex
>Device connected, TINY26 detected
>Chip not locked
>Device erased
>Device connected, TINY26 detected
>Fuses
> OSCCAL = B0, B3, A6, A9
> PLLCK = 1
> CKOPT = 1
> SUT = 2
> SKSEL = 1
> RSTDISB = 1
> EESAVE = 1
> BODLEVEL= 1
> BODEN = 1
>Programming CODE memory
> done
>Verifying CODE memory
> done
> passed
...
!Программа скомпилирована в программе avrasm32 с ключом -fI (создает Intel Hex)!

Схема: Byte Blaster(на входе поставил микросхему ограничения питания на 5В). После программирования удаляю SN74HC244 и соединяю Reset(pin10) на питание через 14кОм и конденсатор с Reset на землю 0.1мкФ. В схему добавил светодиодный индикатор, который соединен с выводами порта А (напрямую). Результат: загораются все диоды и непрерывно горят. Горят они и без подачи на Reset питания. Выходит: проблема в самом запуске МК?

Помогите разобраться
=Заранее благодарен=
 
RU Серокой #04.07.2005 17:16
+
-
edit
 

Серокой

координатор
★★★
Проверьте питание аналоговой части. Дело в том, что порт А требует для нормальной работы подключенных AGND и AVCC.
Ну и уточнить с клоками - вы используете внутренний осциллятор на 1 МГц, так?
Больше не раскалятся ваши колосники. Мамонты пятилеток сбили свои клыки. ©  
Это сообщение редактировалось 04.07.2005 в 17:22

Cezar

новичок
Спасибо за отклик :-)
AGND и AVCC подключены соответственно к GND и VCC.
Использую внутренний осцилятор. Fuse я не переустанавливал (стоят стандартные - заводские).
А стандартные настройки, если я не ошибаюсь, используют внутренний.
Меня смущает то, что на порт А подается напряжение в независимости от того подается питание на Reset или нет. А порт В=0.
 
RU Серокой #04.07.2005 18:30
+
-
edit
 

Серокой

координатор
★★★
А это смущать не должно, в тиньке встроенный "power-on reset". То есть даже если пин Reset болтается в воздухе, всё равно по включению питания он произойдёт.

ЗЫ. А так прогнал я вашу программу в AVR Studio, она нормально работает, то есть явно не в ней дело...
Больше не раскалятся ваши колосники. Мамонты пятилеток сбили свои клыки. ©  

Cezar

новичок
Спасибо ышо раз :-)
Если я правильно Вас понял, то схема включения микроконтроллера в режиме выполнения программы
может обходиться без подачи питания на Reset?
В описании от AVR я не нашел ответ на этот вопрос, правда оно на англ. языке - трудновато искать.
Но, на форумах видел описание по включению Tiny26: 4-20кОм на Reset и 0.01-0.1мкФ на землю.
Но этот способ не хочет работать (у меня).
А не может быть проблемы с форматом файла, несовместимости? Зашиваю в Intel Hex.
Существует общий способ(схема) для включения AVRок?
 
Это сообщение редактировалось 04.07.2005 в 19:01
RU Серокой #04.07.2005 19:07
+
-
edit
 

Серокой

координатор
★★★
Ага, мало того, ножка Reset может использоваться как порт!
Но для этого надо прошивать фьюзы, а у вас они по умолчанию. В общем-то думаю, что и RC-цепочка на входе у вас вполне работает. Как бы замещая встроенную в тиньку схему сброса. Только процессор не выполняет программу почему-то.

У меня AVR Studio для вашей программы сделала такой код:
code text
  1. :020000020000FC
  2. :100000002FEF0FEF0BBB2ABB6FEF6A95F1F700E004
  3. :0A0010000BBB6FEF6A95F1F7F4CF18
  4. :00000001FF

Похож на то, что вы прошиваете?
Больше не раскалятся ваши колосники. Мамонты пятилеток сбили свои клыки. ©  

Cezar

новичок
Благодарен.
Код совпадает один в один.
Фьюзы прошивать для того, чтоб Reset был как вывод или для того, чтоб МК запускался сам (без подачи питания на Reset)?
М-да.... Может ему плохо? :-( Как можно проверить его роботоспособность?
Что ещё может быть не так?
 

Cezar

новичок
Нашел ошибку, она была в реализации задержки.
Сейчас работает нормально.
Спасибо.
 
RU Серокой #05.07.2005 11:57
+
-
edit
 

Серокой

координатор
★★★
Как бы этот фьюз прошит не был, всё равно необходимости во внешнем Reset в общем-то и нет.
Что не так в самой программе - ну разве что у вас стек не инициализирован, но это пока не важно, подпрограммы вы ещё не вызываете.
А по железу - если питания все на месте и мало того, верификация программы при прошивке проходит - даже не знаю. :( Байт-бластер отключаете при запуске? Ну просто иных идей как-то и нету уже. :)
Я с 26-й тинькой активно работал, АЦП использовал - и никаких глюков никогда не было. Правда, от внешнего кварца она работала.
Больше не раскалятся ваши колосники. Мамонты пятилеток сбили свои клыки. ©  
Это сообщение редактировалось 05.07.2005 в 12:04
RU Серокой #05.07.2005 11:59  @Cezar#05.07.2005 11:57
+
-
edit
 

Серокой

координатор
★★★
Cezar> Нашел ошибку, она была в реализации задержки.
Cezar> Сейчас работает нормально.
Cezar> Спасибо. [»]

Слишком быстро мигало?
Больше не раскалятся ваши колосники. Мамонты пятилеток сбили свои клыки. ©  

Cezar

новичок
Да, задержка оказалась слишком мала: не правильно програмно реализовал.
Нужно было использовать вложеный цикл, а я ерунду там написал :-0
 

Cezar

новичок
У меня ещё один вопрос:
обязательно ли при использовании АЦП подключать VCC и AVCC через индукт. 10мкГн и 100нФ на землю?
GND и AGND должны быть соединены?
 
RU Серокой #05.07.2005 12:40
+
-
edit
 

Серокой

координатор
★★★
Если вы используете АЦП, то желательно. Точность выше будет ввиду отсева помех по питанию.
А ежели как обычный цифровой порт - то напрямую.
Больше не раскалятся ваши колосники. Мамонты пятилеток сбили свои клыки. ©  

Cezar

новичок
Хочу подключить к АЦП фотоприемник.

Алгоритм:
1.Подключаю выводы приемника Vs(приемник) к АVCC(МК), GND(пр.) к GND(МК),ну и OUT на аналоговую ногу(pin 10).
2. ПО
2.1 Установка регистра ADMUX.
REFS1=0, REFS0=0 // Voltage Reference=AVCC
ADLAR=0 // Точно не знаю, но думаю, что лучше записать в ADCL результат ADC(7..0) чем ADC(1..0).
MUX=01010 // pin 10

ADMUX=00001010.

2.2 Установка регистра ADCSR.
ADEN = 1, ADSC = 0,
ADFR = 1, // Только не знаю когда обращаться к ADCL за результатом (после ADIF=1?).
ADIF = 0(?), ADIE = 0,
ADS(2..0) = 011 // Коэффициент деления - 8, чтоб f(adc)=128KГц, при f(chip)=1МГц.

ADCSR=10100011.

В программе, думаю, забирать результат с ADCL по ADIF = 1, а потом опять ADIF <- 0.

Надеюсь, что кто-то найдет ошибку. :-O
 
Это сообщение редактировалось 05.07.2005 в 15:21
RU Серокой #05.07.2005 15:23
+
-
edit
 

Серокой

координатор
★★★
Питание приёмника сколько вольт? А VREF?
А преобразование завершено, когда ADSC уйдёт обратно в ноль. Но можно и по прерыванию, конечно ж.
Больше не раскалятся ваши колосники. Мамонты пятилеток сбили свои клыки. ©  

Cezar

новичок
Питание приемника беру с AVCC = 5V.
Не нашел, что значит VREF?
 
RU Серокой #05.07.2005 16:32
+
-
edit
 

Серокой

координатор
★★★
Опорное напряжение для АЦП. AREF в данном случае. 17-я нога.
Больше не раскалятся ваши колосники. Мамонты пятилеток сбили свои клыки. ©  

Cezar

новичок
Как реализуется подключение через AREF?
>Internal Voltage Reference (2.56 V) with external capacitor at AREF pin(PA3). (?)
Я могу использовать просто внутреннее опорное напряжение 2.56В и
кинуть на аналоговую ногу(pin 10) порядка 5В для преобразования? Как вообще выберается
уровень квантования в МК?
 
RU Серокой #05.07.2005 17:57
+
-
edit
 

Серокой

координатор
★★★
Выбирается - это уж как вам удобнее. Можно использовать внешнюю опору, можно прицепить питание внутри микросхемы, там битики выбора есть, можно внутрнний ИОН использовать... Это уж как вам удобнее - поэтому я и спросил...
ЗЫ. Судя по байт-бластеру, Альтеры тоже юзаете?
Больше не раскалятся ваши колосники. Мамонты пятилеток сбили свои клыки. ©  

Cezar

новичок
Попробовал разобраться с АЦП. Возникли вопросы. Может, кто поможет?
1. Подключал как опорное напряжение - AVCC. Здесь, вроде, все нормально,
выходной код показывает правильно(сравнивал с теорией) при входном напряжении 1,5В.
Но при отключении 1,5В с ноги, на выходе - всевозможные комбинации кода, вместо того,
чтоб показать "0". Может причина в том, что у меня подключен напрямую к порту А
индикатор и в результате: на входе(VCC,AVCC) МК напряжение не постоянное (от 4,1В до 4,4В).
Но, если, на аналоговом -"0", значит и после преобразования(Х=Vin*1024/Vref) вых. код должен быть = "0",
а он - "всевозможный". Или, может, МК любит выдавать в порт что-нибудь во время преобразования?
2. Подключал внутреннее опорное - тож самое. Только по теоретическим расчетам выходит,
что Vref=2,8В, а не 2,56В, как в даташите. Может такое быть?

Спасибо.
 
RU Серокой #07.07.2005 16:11
+
-
edit
 

Серокой

координатор
★★★
Если вход болтается или на вход идёт что-то высокоомные - ничего удивительного, что на выходе цифровой шум.
А внутреннюю опору я не использовал, не знаю. Разве что могу предположить, что питание маловато?
Больше не раскалятся ваши колосники. Мамонты пятилеток сбили свои клыки. ©  

Cezar

новичок
Спасибо
....
3. Реально ли реализовать реакцию МК на обычный пульт ДУ?
Реакция фотоприемника(вых.напряжение) почти одинакова во время нажатия кнопок ДУ,
по этому трудно МК различить ту или инную кнопку... :-(
Видел схемы МК+фотоприемник напрямую, может подскажите ссылочку на алгоритм
распознования команд с Ду микроконтроллером? :-\
 
RU Серокой #08.07.2005 00:22
+
-
edit
 

Серокой

координатор
★★★
Погодите, какая реакция приёмника? Ведь при нажатии кнопки пульт выдаёт пакет импульсов. Там несколько стандартов, но это цифровой пакет, а не какой-то уровень или ещё что. Таким образом, чтобы отличить, какая кнопка нажата, надо анализировать протокол, а не один отсчёт с фотоприёмника.
Больше не раскалятся ваши колосники. Мамонты пятилеток сбили свои клыки. ©  
Это сообщение редактировалось 08.07.2005 в 11:57

pokos

аксакал

может подскажите ссылочку на алгоритм распознования команд с Ду микроконтроллером?
например, готовая программа в файле avr410.asm из комплекта AVR Studio.

 

Cezar

новичок
Приношу свои извенения - не правильно выразился. :-*,
Какой протокол передачи ИК сигнала используется в обычном ДУ (RC5,SIRC..)?
 

в начало страницы | новое
 
1914: Покушение Гаврилы Принципа на австрийского престолонаследника Франца Фердинанда в Сараево и его жену, послужившее поводом к началу Первой мировой войны. (102 года).
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru