Например TDA7294

Форум РадиоКот • Просмотр темы - Ассемблер (ASM) для AVR в вопросах и ответах
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Пн июн 16, 2025 22:44:03

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 7952 ]     ... , , , 10, , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Чт янв 22, 2009 22:14:57 
Вымогатель припоя
Аватар пользователя

Зарегистрирован: Вс мар 04, 2007 01:17:12
Сообщений: 690
Рейтинг сообщения: 0
Отлично! спасибо :)


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пн янв 26, 2009 21:53:19 
Встал на лапы
Аватар пользователя

Зарегистрирован: Сб ноя 08, 2008 21:23:06
Сообщений: 108
Откуда: Харьков
Рейтинг сообщения: 0
Здравствуйте. Все собрано, все простейшее, и не работает. микросхема ATtiny2313, к одному PortD.5 припаян светодиод. надо чтоб после включения света он погорел чуть чуть и потух, прилагаю простейший код. Кто знает в чем проблема может быть?


Вложения:
code.rar [422 байт]
Скачиваний: 357
Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вт янв 27, 2009 00:09:50 
Мучитель микросхем

Зарегистрирован: Вс июн 01, 2008 12:16:38
Сообщений: 459
Рейтинг сообщения: 0
kvark85 писал(а):
Здравствуйте. Все собрано, все простейшее, и не работает. микросхема ATtiny2313, к одному PortD.5 припаян светодиод. надо чтоб после включения света он погорел чуть чуть и потух, прилагаю простейший код. Кто знает в чем проблема может быть?

Во первых что будет когда программа отработает задержку и выключит светодиод (это я к тому, что зацикливания пограммы нет).
Во-вторых как проявляется "не работает" (светодиод не включается, не выключается, мигает и т. п.)
В третьих схему бы посмотреть (ну кто может знать как вы там диод к порту припаяли - анодом или катодом, и т. п.).


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вт янв 27, 2009 01:07:41 
Встал на лапы
Аватар пользователя

Зарегистрирован: Сб ноя 08, 2008 21:23:06
Сообщений: 108
Откуда: Харьков
Рейтинг сообщения: 0
хотел чтоб после подачи питания светодиод загорелся и потух. и все. получается он загорается и не тухнет. схема ниже


Вложения:
Vopros.GIF [5.1 KiB]
Скачиваний: 589
Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вт янв 27, 2009 07:38:19 
Мучитель микросхем

Зарегистрирован: Вт июл 22, 2008 08:10:54
Сообщений: 492
Рейтинг сообщения: 0
А чуть-чуть по вашему это сколько? на какое время вы рассчитывали написав этот код?


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вт янв 27, 2009 12:42:01 
Встал на лапы
Аватар пользователя

Зарегистрирован: Сб ноя 08, 2008 21:23:06
Сообщений: 108
Откуда: Харьков
Рейтинг сообщения: 0
предел широк. пусть хотябы мигнет. причем если так:

ldi Temp, 0 ;задержка
ldi Temp1, 0
ldi Temp2, 0
ldi Temp3, 0
ldi Temp4, 0

Loop: dec Temp
brne Loop

ldi Temp,0b1111111 ;тушим светодиод
out PortD,Temp

то мигает, а вот если дальше увеличиваю зедержку с использованием остальных Temp1..4. то светодиод загораетс и не тухнет. зависает, чтоли... делал все по обучалке РадиокКота, только на ATtiny2313


Вернуться наверх
 
Распродажа паяльного оборудования ATTEN!
Паяльные станции, паяльники и аксессуары по самой выгодной цене.

По промокоду radiokot скидка 10%
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вт янв 27, 2009 13:46:18 
Вымогатель припоя
Аватар пользователя

Зарегистрирован: Вс мар 04, 2007 01:17:12
Сообщений: 690
Рейтинг сообщения: 0
конечно не тухнет- время то еще не вышло, может он у вас через 30 минут только потухнет. цикл слишком долгий (а когда моргает- слишком короткий), попробуйте задержку постепенно увеличивать.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вт янв 27, 2009 21:02:15 
Встал на лапы
Аватар пользователя

Зарегистрирован: Сб ноя 08, 2008 21:23:06
Сообщений: 108
Откуда: Харьков
Рейтинг сообщения: 0
только что сделал все вточности как в обучении:

ldi Temp,0b0000000 ;присвоение константы
out PortD,Temp ;вывод на индикацию

ldi Temp1,0
ldi Temp2,0
ldi Temp3,10

Loop: dec Temp1
brne Loop

dec Temp2
brne Loop

dec Temp3
brne Loop

ldi Temp,0b1111111 ;тушим светодиод
out PortD,Temp


всеравно загорается навсегда


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Ср янв 28, 2009 07:21:02 
Мучитель микросхем

Зарегистрирован: Вт июл 22, 2008 08:10:54
Сообщений: 492
Рейтинг сообщения: 0
В железе не пробовал, пока, но в симуляторе AVRStudio все норм: для Temp горит 192 мкс, с Temp1 50мс, с Temp2 - 12с. Может у вас проблемы с железом или МК работает не на 4МГц, а на порядки меньше?! Да и всетаки поставте в конце своей программы бесконечный цикл, программа МК не должна иметь конца.
....
Попробовал в железе, все встало на свои места. Достаточно было поставить в конце бесконечный цикл :) Без него светодиод все время горел, а яркость свечения зависела от выставленной задержки :)


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Ср янв 28, 2009 15:22:30 
Вымогатель припоя

Зарегистрирован: Вс сен 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


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пн фев 02, 2009 18:21:22 
Открыл глаза

Зарегистрирован: Пт авг 08, 2008 18:13:09
Сообщений: 53
Рейтинг сообщения: 0
у меня проблема


Вложения:
нн.txt [339 байт]
Скачиваний: 332
Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пн фев 02, 2009 18:52:39 
Открыл глаза

Зарегистрирован: Пт авг 08, 2008 18:13:09
Сообщений: 53
Рейтинг сообщения: 0
поставил ; в начале 190 строки теперь

G:\AVR\AVR-projects\tutorial>g:\avr\tavrasm\tavrasm.exe -i code.asm -e output\li
stfile.lst -o output\hexfile.hex
No code generated

G:\AVR\AVR-projects\tutorial>pause=null
Для продолжения нажмите любую клавишу . . .


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пт фев 20, 2009 23:00:30 
Первый раз сказал Мяу!
Аватар пользователя

Зарегистрирован: Вт мар 25, 2008 16:23:57
Сообщений: 22
Откуда: Астрахань
Рейтинг сообщения: 0
У меня при выходе из прерывания данные с АЦП затираются данными до прерывания, как этого избежать?

_________________
Не бери от жизни все, а то не унесешь...


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Сб фев 21, 2009 10:08:30 
Мучитель микросхем

Зарегистрирован: Вс июн 01, 2008 12:16:38
Сообщений: 459
Рейтинг сообщения: 0
Demontrup писал(а):
У меня при выходе из прерывания данные с АЦП затираются данными до прерывания, как этого избежать?

Исправить Вашу программу или функцию работающую с АЦП.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Сб фев 21, 2009 14:17:15 
Первый раз сказал Мяу!
Аватар пользователя

Зарегистрирован: Вт мар 25, 2008 16:23:57
Сообщений: 22
Откуда: Астрахань
Рейтинг сообщения: 0
smac писал(а):
Demontrup писал(а):
У меня при выходе из прерывания данные с АЦП затираются данными до прерывания, как этого избежать?

Исправить Вашу программу или функцию работающую с АЦП.


А каким образом исправить..? ниже код.. затираются регистры r22,25 и 26
Код:
   ; set sinewave output as default
      
      ldi      ZH,high(2*sine)   ; setup Z pointer hi
      ldi      ZL,low(2*sine)   ; setup Z pointer lo

      ; clear accumulator

      ldi    r29,0x00      ; clear accumulator
      ldi    r28,0x00      ; clear accumulator

      ; setup adder registers      
      
         ; 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
   
;----------
;Считываем АЦП МАКСИМАЛЬНОЙ ЧАСТОТЫ.
;----------   
   ldi r16, 0b00000001
   out ADMUX, r16

;Устанавливаем бит старта преобразования

   start1:
   sbi adcsra,6
   sbic adcsra,6
   rjmp start1
;Считываем значения преобразования АЦП
    in r18, ADCL
   mov r24,r18
;----------
;Считываем АЦП СРЕДНЕЙ ЧАСТОТЫ.
;----------   
   ldi r16, 0b00000010
   out ADMUX, r16

;Устанавливаем бит старта преобразования

   start2:
   sbi adcsra,6
   sbic adcsra,6
   rjmp start2
;Считываем значения преобразования АЦП
    in r19, ADCL
   mov r25,r19
;----------
;Считываем АЦП МИНИМАЛЬНОЙ ЧАСТОТЫ.
;----------   
   ldi r16, 0b00000011
   out ADMUX, r16

;Устанавливаем бит старта преобразования

   start3:
   sbi adcsra,6
   sbic adcsra,6
   rjmp start3
;Считываем значения преобразования АЦП
    in r20, ADCL
   mov r26,r20
sbis PinD,2    ;Проверяем отпущена ли кнопка
rjmp INT_0
reti

_________________
Не бери от жизни все, а то не унесешь...


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Сб фев 21, 2009 14:58:41 
Мучитель микросхем

Зарегистрирован: Вс июн 01, 2008 12:16:38
Сообщений: 459
Рейтинг сообщения: 0
Demontrup писал(а):
А каким образом исправить..? ниже код.. затираются регистры 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.
И общее замечание - Вы хотите, чтобы Вам помогли, но при этом информацию из вас приходится клещами вытягивать - не дело.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Сб фев 21, 2009 17:12:46 
Нашел транзистор. Понюхал.

Карма: 1
Рейтинг сообщений: 3
Зарегистрирован: Пн сен 01, 2008 14:49:03
Сообщений: 151
Откуда: Казахстан
Рейтинг сообщения: 0
Указатель стека забыл настроить
Код:
init:
      ldi   r16,high(RAMEND)
      out   SPH,r16
      ldi   r16,low(RAMEND
      out   SPL,r16


И в прерывании хотя бы флаги надо сохранять:
Код:
INT0:
   push   r16
   in   r16,SREG
   push   r16
........................
........................
........................

   pop   r16
   out   SREG,r16
   pop   r16
   reti


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Сб фев 21, 2009 18:03:26 
Первый раз сказал Мяу!
Аватар пользователя

Зарегистрирован: Вт мар 25, 2008 16:23:57
Сообщений: 22
Откуда: Астрахань
Рейтинг сообщения: 0
Так сейчас попробуем...заранее спасибо..если что еще спрошу

_________________
Не бери от жизни все, а то не унесешь...


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Сб фев 21, 2009 23:10:17 
Мучитель микросхем

Зарегистрирован: Вс июн 01, 2008 12:16:38
Сообщений: 459
Рейтинг сообщения: 0
Demontrup писал(а):
Так сейчас попробуем...заранее спасибо..если что еще спрошу

ADCH не забывайте вычитывать.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вс фев 22, 2009 19:27:56 
Первый раз сказал Мяу!
Аватар пользователя

Зарегистрирован: Вт мар 25, 2008 16:23:57
Сообщений: 22
Откуда: Астрахань
Рейтинг сообщения: 0
Ребята в процессе отладки в Протеусе выяснил что у меня не работает АЦП, кто может сказать почему? вот переписал без всего лишнего:
Код:
.include "m8def.inc"

;Сегмент кода

.cseg
.org 0

;Определяем вектора прерываний

rjmp init         ;External Pin, Power-on Reset, Brown-out Reset, and Watchdog Reset
rjmp INT_0         ;External Interrupt Request 0




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

_________________
Не бери от жизни все, а то не унесешь...
Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 7952 ]     ... , , , 10, , , ...  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y