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

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

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

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

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

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

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

 
Опции темы

Таймер не слушается

Непрочитано 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.RUN
 
Аватар для 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.RUN
 
Аватар для 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.RUN
 
Регистрация: 10.01.2007
Сообщений: 3,411
Сказал спасибо: 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.RUN
 
Регистрация: 10.01.2007
Сообщений: 3,411
Сказал спасибо: 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


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


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.