Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

Закрытая тема
Опции темы
Непрочитано 05.07.2009, 19:31   #1
Archer07
Прописка
 
Регистрация: 25.03.2009
Сообщений: 137
Сказал спасибо: 22
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
Archer07 на пути к лучшему
По умолчанию Помогите с Таймером(mega169)

Здравствуйте.Хотел попросить помощи.
Коротко обрисую проблему.
У меня есть сигнал,который надо оцифровать и данные передать через UART.
Оцифровкой занимается _ADC_COMPL,
а вот передачу данных в порт я решил сделать с помощью таймера.Каждые 0,2с нужно отправлять байт в порт,все делаем по прерыванию от переполнения счетчика
Timer0.

1)Вместо этого я вижу в терминалке несколько байт и все.Подскажите пожалуйста,что я не правильно делаю.

2)Какое прерывание более приоритетное от АЦП или Переполнение Timer0?

;кварц 1MHz

.include "m169def.inc"
;-----------
.cseg
.org 0
rjmp _RESET
.org OVF0addr
rjmp _TIM0
.org ADCCaddr
rjmp _ADC_COMPL
;-----------
.org INT_VECTORS_SIZE
_RESET:
ldi r16,High(RAMEND)
out SPH,r16
ldi r16,Low(RAMEND)
out SPL,r16

......;запускаем АЦП
......Настраиваем UART


ldi R16,1‹‹TOIE1;Разрешаем прерывания от таймера
sts TIMSK0,R16
ldi r16,0;Начинаем считать от 0
sts TCNT0,r16
ldi R16,5; 00000101 предделитель на 1024
sts TCCR0A,r16

sei
;-----------
_MAIN:
rjmp _MAIN
;-----------
_ADC_COMPL:
...
; складываем в r17,r18 данные из ADCH ADCL
...
reti
_TIM0:
; USART_Transmit:
; ; Ждем пока буфер отправки пуст
; ;sbis UCSRA,UDRE заменил эту команду нижними.
; lds r16,UCSRA
; sbrs r16,UDRE
; rjmp USART_Transmit
; ; Скидываем байт в буфер,они улетают в порт
; sts UDR,r17
;
; ldi R16,1‹‹TOIE1;Опять разрешаем прерывание,оно было аппаратно сброшено.
; sts TIMSK0,R16
; ldi r16,0;обнуляем,считаем с 0
; sts TCNT0,r16
; ldi R16,5 ; 0000 0101 предделитель на 1024
; sts TCCR0A,r16
reti
Реклама:
Archer07 вне форума  
Непрочитано 14.07.2009, 22:29   #2
ra9mig
Прописка
 
Регистрация: 24.09.2008
Сообщений: 116
Сказал спасибо: 0
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
ra9mig на пути к лучшему
По умолчанию

Опять все наврал!!!
Цитата:
; ; Скидываем байт в буфер,они улетают в порт
; sts UDR,r17
"Скидываешь" один байт, а кто такие они?
Цитата:
ldi R16,1‹‹TOIE1;Опять разрешаем прерывание, оно было аппаратно сброшено.
; sts TIMSK0,R16
С чего Вы это взяли ???
И т.д. ...

P.S. Почитайте Вы наконец документацию!!!
__________________
Если мы вам не подходим, вы нам вовсе не нужны!
Услышал и забыл, увидел и запомнил, сделал и понял!
Нейрон - штука тонкая!
Чудес на свете не бывает!
ra9mig вне форума  
Непрочитано 22.07.2009, 02:03   #3
DrunyaRuma
Временная регистрация
 
Регистрация: 13.02.2008
Сообщений: 60
Сказал спасибо: 10
Сказали Спасибо 9 раз(а) в 9 сообщении(ях)
DrunyaRuma на пути к лучшему
По умолчанию Re: Помогите с Таймером(mega169)

Сообщение от Archer07
1)Вместо этого я вижу в терминалке несколько байт и все.Подскажите пожалуйста,что я не правильно делаю.

2)Какое прерывание более приоритетное от АЦП или Переполнение Timer0?
1)Переход по вектору прерывания выполняется командой
jmp xxx;

2)Счетчик TC0 инкрементируется,и Вы записав TCNT0=0
никак не добьетесь периода срабатывания 0.2сек,т.к.
до переполнения счетчика затратится больше времени;

3)
...(обработка прерывания от ТС0)
Сообщение от Archer07
; ldi R16,1‹‹TOIE1;Опять разрешаем прерывание,оно было аппаратно сброшено.
; sts TIMSK0,R16
Маска прерывания аппаратно не сбрасывается, сбрасыва-
ется флаг прерывания;(эти строки не имеют смысла)

Сообщение от Archer07
; ldi r16,0;обнуляем,считаем с 0
; sts TCNT0,r16
; ldi R16,5 ; 0000 0101 предделитель на 1024
; sts TCCR0A,r16
Перезапускать счетчик тоже не имеет смысла,т.к. Вы
его не остонавливали.

4)
Судя по всему Вы не запускаете преобразование АЦП
в следующие разы.

5)
У таймера приоритет выше.

Вот пример выполнения поставленной Вами задачи:

Код:
.include "m169def.inc"

   jmp   Main
   jmp   IntOut
   jmp   IntOut
   jmp   IntOut
   jmp   IntOut
   jmp   IntOut
   jmp   IntOut
   jmp   IntOut
   jmp   IntOut
   jmp   IntOut
   jmp   TC0
   jmp   IntOut
   jmp   IntOut
   jmp   IntOut
   jmp   IntOut
   jmp   IntOut
   jmp   IntOut
   jmp   IntOut
   jmp   IntOut
   jmp   IntOut
   jmp   IntOut
   jmp   IntOut
   jmp   IntOut

IntOut:
   reti 

Main:
   ldi   r16,High(RAMEND) 
   out   SPH,r16 
   ldi   r16,Low(RAMEND) 
   out   SPL,r16
//настраиваем Com port
   ldi   r16,(1‹‹TXEN)
   sts   UCSRB,r16
   ldi   r16,(1‹‹UCSZ1 | 1‹‹UCSZ0)
   sts   UCSRC,r16
   ldi   r16,6
   sts   UBRRL,r16
//настраиваем АЦП
   ldi   r16,(1‹‹ADEN | 1‹‹ADPS1 | 1‹‹ADPS0) 
   sts   ADCSRA,r16
//настраиваем TC0       
   ldi   r16,(1‹‹OCIE0A)
   sts   TIMSK0,r16
   ldi   r16,195
   out   OCR0A,r16
   ldi   r16,(1‹‹CS00 | 1‹‹CS02 | 1‹‹WGM01)
   out   TCCR0A,r16  
   sei 
q:
   rjmp  q     

TC0:
   lds   r16,ADCL
   rcall TXOut
   lds   r16,ADCH
   rcall TXOut
   lds   r16,ADCSRA
   ori   r16,(1‹‹ADSC)
   sts   ADCSRA,r16
   reti  
TXOut:
   lds   r17,UCSRA
   sbrs  r17,UDRE
   rjmp  TXOut
   sts   UDR,r16
   ret
Удачи.
DrunyaRuma вне форума  
Непрочитано 25.07.2009, 16:35   #4
Archer07
Прописка
 
Регистрация: 25.03.2009
Сообщений: 137
Сказал спасибо: 22
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
Archer07 на пути к лучшему
По умолчанию

Спасибо,теперь все работает.
Archer07 вне форума  
Закрытая тема

Закладки


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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с USART AVR mega169 Archer07 Микроконтроллеры, АЦП, память и т.д 20 28.07.2009 15:02
Помогите с таймером Stan88 Микроконтроллеры, АЦП, память и т.д 9 03.07.2009 13:40
Регистры r0-r15 у mega169 myxan Микроконтроллеры, АЦП, память и т.д 17 17.12.2008 13:30
Помогите с таймером maxNTF Микроконтроллеры, АЦП, память и т.д 2 26.06.2006 11:33
помогите с таймером! ZyXEL Микроконтроллеры, АЦП, память и т.д 10 06.10.2005 20:46


Часовой пояс GMT +4, время: 16:29.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot