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

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

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

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

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

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

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

 
Опции темы
Непрочитано 21.11.2007, 16:39  
retcom
Вид на жительство
 
Регистрация: 27.07.2006
Сообщений: 308
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
retcom на пути к лучшему
По умолчанию Таймер не слушается

Привет! У меня такая проблема, ATmega48,
Мне нужно подавать сигнал на ножку с частотой 50 Гц. Делаю:

Код:
Частота МК 3686400 Гц.

interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
TCNT0=0xB8;
PORTB.0 = PORTB.0^1;
}

PORTB=0x00;
DDRB=0x01;

TCCR0A = 0x00;
TCCR0B = 0x05;  //   Clk/1204=3600
TCNT0 = B8;     //   3600/72=50

TIMSK0=0x01;
С ножки снимаю сигнал 5 Гц. Почему так?
Все по ДШ.
Реклама:
retcom вне форума  
Непрочитано 21.11.2007, 17:17  
dimonbest
Гражданин KAZUS.RU
 
Аватар для dimonbest
 
Регистрация: 30.04.2006
Сообщений: 984
Сказал спасибо: 5
Сказали Спасибо 18 раз(а) в 14 сообщении(ях)
dimonbest на пути к лучшему
По умолчанию

При таких настройках таймера, "1" на выходе будет 20мс, потом "0" также будет 20мс. Общий период сигнала будет 40мс, тобиш 25Гц. 5Гц никак не может быть.. проверяли в протеусе или в железе?
dimonbest вне форума  
Непрочитано 21.11.2007, 17:42  
retcom
Вид на жительство
 
Регистрация: 27.07.2006
Сообщений: 308
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
retcom на пути к лучшему
По умолчанию

Посылаю полную текстушку.
Показания осцилла:
50 ms - длительность
5 клеток в периоде.
Вот сейчас, тот же исходник, а частота 4 Гц, почему-то.

Прикрепленный файл: 5741312.rar
retcom вне форума  
Непрочитано 21.11.2007, 18:09  
retcom
Вид на жительство
 
Регистрация: 27.07.2006
Сообщений: 308
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
retcom на пути к лучшему
По умолчанию

Извиняюсь, вид развертки был установлен в 0.1. Все правильно в исходнике.
retcom вне форума  
Непрочитано 22.11.2007, 13:10  
retcom
Вид на жительство
 
Регистрация: 27.07.2006
Сообщений: 308
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
retcom на пути к лучшему
По умолчанию

Теперь другая проблема:

//Clock frequency : 3,686400 MHz

interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
PINB.0 = 1;
PINB.0 = 0;
}

DDRB=0x03;

TCCR0A=0x00;
TCCR0B=0b00000101; //clk1024
TCNT0=0b11011100; //50 Hz
OCR0A=0x00;
OCR0B=0x00;

TIMSK0=0x01; //interrapt

На выходе 25 Гц. Подскажите, пожалуйста, как сделать 50 Гц.
retcom вне форума  
Непрочитано 22.11.2007, 14:15  
dimonbest
Гражданин KAZUS.RU
 
Аватар для dimonbest
 
Регистрация: 30.04.2006
Сообщений: 984
Сказал спасибо: 5
Сказали Спасибо 18 раз(а) в 14 сообщении(ях)
dimonbest на пути к лучшему
По умолчанию

Сообщение от retcom
Теперь другая проблема:

interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
PINB.0 = 1;
PINB.0 = 0;
}
Нету смысла в таком выражении, нельзя присваивать PINу, с него можно только считывать...
dimonbest вне форума  
Непрочитано 22.11.2007, 14:38  
tempora
Почётный гражданин KAZUS.RU
 
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
tempora на пути к лучшему
По умолчанию

Сообщение от dimonbest
Нету смысла в таком выражении, нельзя присваивать PINу, с него можно только считывать...
Так-таки и нету смысла? И присваивать нельзя?
Очень даже можно, более того - так и нужно делать, для генерации меандра.
А вот второе присваивание действительно не нужно - работает только присвоение единицы, а не нуля.
И, кстати, частота должна быть именно 25, а не 50, так как каждое присвоение единицы, перекидывает пин в противоположное значение.

Для справки (даташит на мегу48, хотя, это и к другим атмелам относится):

-- Прилагается рисунок: --

tempora вне форума  
Непрочитано 22.11.2007, 14:47  
retcom
Вид на жительство
 
Регистрация: 27.07.2006
Сообщений: 308
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
retcom на пути к лучшему
По умолчанию

Цитата:
Очень даже можно, более того - так и нужно делать, для генерации меандра.
Ты совершенно прав! Я убрал строку присваявающую 0, и ничего неизменилось.
И частота осталась 25 Гц.
Почему у меня неполучается выставлять различные частоты? Вроде делаю все по ДШ?
retcom вне форума  
Непрочитано 22.11.2007, 15:08  
tempora
Почётный гражданин KAZUS.RU
 
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
tempora на пути к лучшему
По умолчанию

Сообщение от retcom
И частота осталась 25 Гц.
Почему у меня неполучается выставлять различные частоты? Вроде делаю все по ДШ?
Где же "не получается"? Всё как раз получается, просто ты не знал, как работает вывод в пин - что он перекидывает пин туда-сюда, что означает деление частоты пополам. Теперь тебе остается удвоить частоту прерывания от таймера и получить искомую. Уменьши прескейлер в два раза.

А вот фигушки - предыдущее значение прескейлера не 512, а 256 - значит, одним TCCR0B'ом не обойтись, придется и другими параметрами играться.
tempora вне форума  
Непрочитано 22.11.2007, 15:24  
retcom
Вид на жительство
 
Регистрация: 27.07.2006
Сообщений: 308
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
retcom на пути к лучшему
По умолчанию

Цитата:
Уменьши прескейлер в два раза
В два раза не получается.
Можно делить только на 8-, 64-, 256- и 1024-.

Пытаюсь:

Код:
Clock frequency     : 1,000000 MHz

interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
PINB.0 = 1;
}

DDRB=0x01; 

TCCR0A=0x00;
TCCR0B=0x04;
TCNT0=0xB2;
OCR0A=0x00;
OCR0B=0x00;

TIMSK0=0x01;
Должно быть 50 Гц, а с вывода РВ0 снимаю 100 Гц.
У меня или 25 или 100 Гц почему-то всегда получается.
retcom вне форума  
 

Закладки
Опции темы

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
CVAVR while и таймер kr11507 Микроконтроллеры, АЦП, память и т.д 10 13.12.2008 21:29
Таймер на 5 часов alecsandr27 Автоматика и аппаратура связи 6 11.10.2008 20:25
Часы - таймер s5s5 Микроконтроллеры, АЦП, память и т.д 5 16.05.2008 11:36
Таймер Serq Автоматика и аппаратура связи 18 27.11.2007 18:32
Таймер dem9968 Делимся опытом 1 03.02.2005 09:03


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


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