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

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

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

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

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

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

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

 
Опции темы
Непрочитано 23.11.2007, 20:39  
avr123-nm-ru
Почётный гражданин KAZUS.RU
 
Регистрация: 13.05.2006
Адрес: Москва
Сообщений: 3,559
Сказал спасибо: 76
Сказали Спасибо 326 раз(а) в 230 сообщении(ях)
avr123-nm-ru на пути к лучшему
По умолчанию

Сообщение от retcom
Я уже опух. Пожалейте меня!
Я понимаю 2ШИМ, это когда на PD5 - 1 в то время, когда на PD6 - 0.
А что у тебя в примере к задаче 8 курса где 2 ШИМ не получается менять ШИМ ???

У меня меняется. И этот же пример на заглавной странице курса рассмотрен.
Реклама:
__________________
Обучалка AVR PIC ARM начинающим программирование курс самоучитель шаг за шагом с нуля, CVAVR, PROTEUS, MPLAB, WinAVR, IAR, KEIL электроника - http://proavr.narod.ru
avr123-nm-ru вне форума  
Непрочитано 23.11.2007, 23:10  
tempora
Почётный гражданин KAZUS.RU
 
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
tempora на пути к лучшему
По умолчанию

Сообщение от retcom
Я понимаю 2ШИМ, это когда на PD5 - 1 в то время, когда на PD6 - 0.
Неа, неправильно понимаешь. Два ШИМа получаются, в общем случае,
независимо друг от друга. Я же тебе уже говорил - смени OCR0A с нуля на что-нибудь среднее (на 0x80, например) - неужели не приходила мысль в голову, чтобы
получить второй ШИМ-сигнал на втором выходе, сменить OCR0B с 0xFF также на что-нить среднее? Если оба значения будут одинаковыми - будет одинаковая
скважность, разными - разная скважность (при Wave Generation Mode, равном 7 (0b111)). А в твоем изначальном варианте у тебя по одному выводу шёл сигнал со скважностью 0%, а по другому - 100% (процентами пользуюсь с намёком! ), вот ты и видел на одном выводе всегда ноль, а другом - всегда единицу...
В даташите это всё английским по белому прописано... Лень читать, что ли?

Сообщение от avr123-nm-ru
...то помочь тебе было бы легче
Куда уж легче-то? Чтобы обнаружить грубые ошибки, симулятор не нужен, то есть - напрочь!

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

tempora вне форума  
Непрочитано 24.11.2007, 03:07  
tempora
Почётный гражданин KAZUS.RU
 
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
tempora на пути к лучшему
По умолчанию

Совсем уже сплю - "разная скважность (при Wave Generation Mode, равном 7 (0b111))" - на самом деле все эти рассуждения относятся к Wave Generation Mode, равном 3 (0b011).
Ффсё, спааать!
tempora вне форума  
Непрочитано 24.11.2007, 09:53  
tempora
Почётный гражданин KAZUS.RU
 
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
tempora на пути к лучшему
По умолчанию

retcom, а ведь у тебя именно седьмая мода генерации включена... смени-ка её на третью! Вот тут - "TCCR0B=0x0D;//00001101" - сбрось бит WGM02: "TCCR0B=0x05;//00000101".

_______________________________
"Сядем retcom, поговорим lat-com...
tempora вне форума  
Непрочитано 25.11.2007, 21:50  
retcom
Вид на жительство
 
Регистрация: 27.07.2006
Сообщений: 308
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
retcom на пути к лучшему
По умолчанию

Цитата:
Я же тебе уже говорил - смени OCR0A с нуля на что-нибудь среднее (на 0x80, например) - неужели не приходила мысль в голову, чтобы
получить второй ШИМ-сигнал на втором выходе, сменить OCR0B с 0xFF также на что-нить среднее?
Из 2ШИМ, OCR0A управляет 1ШИМ, а OCR0B для другого?

Цитата:
ведь у тебя именно седьмая мода генерации включена... смени-ка её на третью! Вот тут - "TCCR0B=0x0D;//00001101" - сбрось бит WGM02: "TCCR0B=0x05;//00000101".
Не успел еще сделать, завтра сделаю.

Более-менее разобрался, огромное спасибо. Отдельно хочу поблагодарить tempora, твои советы оказались неоценимы для меня.
У меня осталось еще в этой теме несколько вопросов. Ответьте, пожалуйста, и если можно, также как и раньше отвечали:

Я выставляю начальную частоту генератора 3 686 400 Гц.
Делю пределителем на 1024. Получаю 3600.
Ставлю в ТСNТ0 значение 184, чтоб в итоге частота прерываний была 50 Гц.

1.Вопрос:
На какой частоте совершаются действия в прерывании?
3686400, 3600 или 50 Гц?

//================================================== ==

Для ATmega48, вот такая кодировка:

Код:
interrapt()
{
   PINB.0 = 1;
}
Будет выводить в каждом нечетном разе лог. 1, в каждом четном лог. 0.

2.Вопрос:
Как сделать, чтоб значение на выводе PINx, не инвертировалось? Чтоб значение держалось постоянно? Другой контроллер попробовать?
retcom вне форума  
Непрочитано 25.11.2007, 22:55  
tempora
Почётный гражданин KAZUS.RU
 
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
tempora на пути к лучшему
По умолчанию

Для начала скажу, что ты смешал программный и аппаратный ШИМы, а это не одно и то же - программно ты генеришь ШИМ сигнал, переключая выход инструкцией вывода, а аппаратно ты только настраиваешь ШИМ-периферию, а дальше она делает всё сама, а программа может заниматься другими делами.
Сообщение от retcom
Из 2ШИМ, OCR0A управляет 1ШИМ, а OCR0B для другого?
В режиме WGM=3, так и есть.
Сообщение от retcom
1.Вопрос: На какой частоте совершаются действия в прерывании? 3686400, 3600 или 50 Гц?
Смотри на блок-схему из даташита - счётчик тактируется от выбранного источника (см. биты CS (ClockSelect) в управляющем регистре TCCRxn), пропущенного через предделитель. По достижении верхнего значения, счетчик сбрасывается в 0 и может сгенерить прерывание по переполнению. То есть, прерывание возникает с частотой Fclck/N_Div/Top. Для 8-битного счетчика Top=255 и сбрасывается он в 0, но период счета можно сократить, если в прерывании, возникшем после сброса счетчика в 0, вписать в счетчик большее начальное значение счета.

[quote="retcom"]
Сообщение от retcom
Код:
interrupt()
{
   PINB.0 = 1;
}
2.Вопрос: Как сделать, чтоб значение на выводе PINx, не инвертировалось? Чтоб значение держалось постоянно? Другой контроллер попробовать?
Если понимать этот вопрос буквально, то сделать это просто - отключить прерывание (или, если оно делает еще что-то полезное, убрать из него инструкцию, перекидывающую пин), сконфигурить пин на выход и вывести в него то значение, которое ты хотел видеть там постоянно. Но сдается мне, ты подразумевал что-то другое.
Если все, чего ты добиваешься, это получение ШИМ-сигнала на выходе, то ты его уже получил аппаратным ШИМом и генерить его ещё и программно, абсолютно незачем. Хуже того - ты же будешь мешать аппаратному ШИМу, записывая что-то из обработчика прерываний в те же пины, в которые пишет аппаратный ШИМ.
В том коде, который ты уже нащупал, нужно-то было только сменить инициализацию WGM'а - писать туда не семерку, а тройку. И всё - никаких прерываний, делай что хочешь другое.
‹center›
-- Прилагается рисунок: --
‹IFRAME src = "nuke/users_images/25112007/992752.gif" frameborder="0" name="fr5977858" scrolling="yes" width="470" height="509" align="bottom"›[img]nuke/users_images/25112007/992752.gif[/img]
‹font color=red›Рисунок не умещается на странице и поэтому сжат!‹/font›
Для того, чтобы просмотреть его полностью, щелкните здесь.

‹/IFRAME›
‹/center›
tempora вне форума  
Непрочитано 26.11.2007, 11:07  
retcom
Вид на жительство
 
Регистрация: 27.07.2006
Сообщений: 308
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
retcom на пути к лучшему
По умолчанию

Значит в прерывании работа идет на 3600.

Цитата:
убрать из него инструкцию, перекидывающую пин
Как это делается?
retcom вне форума  
Непрочитано 26.11.2007, 11:54  
tempora
Почётный гражданин KAZUS.RU
 
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
tempora на пути к лучшему
По умолчанию

Сообщение от retcom
Значит в прерывании работа идет на 3600.
Нет, я так понимаю, что на 50-ти герцах... точнее - на ста, ведь, чтобы получить 50 единиц и 50 нулей в секунду, твое прерывание должно 100 раз в секунду выполнить инструкцию PINB.0 = 1.
Сообщение от retcom
Как это делается?
Ну, например, вот так:
Сообщение от tempora исправил то, что retcom
interrupt()
{
/* PINB.0 = 1; */
}
По-моему, ты не понял моих намеков на необходимость различать аппаратный и программный ШИМ... Различать и не пытаться соединить их на одних и тех же пинах... Ну, что ж, "свои грабли ближе ко лбу", как говорится...
На вот, поиграйся с параметрами времён, посмотри, как оно дышит, попереключайся между WGM0=3 и WGM0=7. Заметь - никаких прерываний нет напрочь!
Код:
/**************************************************  ***
Project : Fast PWM feature testing
Version : 1.0
Date    : 26.11.2007
Author  : tempora
Company : na
Comments:

Chip type           : ATtiny45
Clock frequency     : 8.000000 MHz
Memory model        : Tiny
External SRAM size  : 0
Data Stack size     : 64
**************************************************  ***/

#include ‹tiny45.h›
#include ‹delay.h›

void    InitMC( void ){
        // Crystal Oscillator division factor: 1
        #pragma optsize-
        CLKPR=0x80;
        CLKPR=0x00;
        #ifdef _OPTIMIZE_SIZE_
        #pragma optsize+
        #endif

        // Input/Output Ports initialization
        PORTB=0x00;
        DDRB=0x03;

        // Timer/Counter 0 initialization
        // Clock source: System Clock
        // Clock value: 125.000 kHz
        // Mode: Fast PWM top=OCR0A
        // OC0A output: Non-Inverted PWM
        // OC0B output: Non-Inverted PWM
        TCCR0A=0xA3;
        //TCCR0B=0x0A;    // WGM02 = 1 :: FastPWM, TOP = OCR0A (седьмой режим WGM0)
        TCCR0B=0x02;    // WGM02 = 0 :: FastPWM, TOP = 0xFF (третий режим WGM0)
        TCNT0=0xB8;
        OCR0A=0x10;
        OCR0B=0x10;

        // Timer/Counter 1 initialization - all off
        PLLCSR=0x00;
        TCCR1=0x00;
        GTCCR=0x00;
        TCNT1=0x00;
        OCR1A=0x00;
        OCR1B=0x00;
        OCR1C=0x00;

        // INT0: Off
        GIMSK=0x00;
        MCUCR=0x00;

        // Timer(s)/Counter(s) Interrupt(s) initialization
        TIMSK=0x00;

        // Universal Serial Interface initialization - Off
        USICR=0x00;

        // Analog Comparator initialization - Off
        ACSR=0x80;
        ADCSRB=0x00;
}

void main(void)
{

        InitMC();

        while (1) {
            delay_ms(2000);
            OCR0A=0x05;
            OCR0B=0x05;

            delay_ms(2000);
            OCR0A=0xF8;
            OCR0B=0xF8;

            delay_ms(2000);
            OCR0A=0xF8;
            OCR0B=0x10;

            delay_ms(2000);
            OCR0A=0x10;
            OCR0B=0xF8;
        };
}
Светодиоды на 5-ю и 6-ю ноги повесь, дааа?!
tempora вне форума  
Непрочитано 26.11.2007, 14:07  
urry
Почётный гражданин KAZUS.RU
 
Аватар для urry
 
Регистрация: 06.02.2007
Сообщений: 1,340
Сказал спасибо: 3
Сказали Спасибо 106 раз(а) в 66 сообщении(ях)
urry на пути к лучшему
По умолчанию

Как говорят дамы - проще дать, чем объяснить, почему ты его не хочешь...
urry вне форума  
Непрочитано 26.11.2007, 14:40  
tempora
Почётный гражданин KAZUS.RU
 
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
tempora на пути к лучшему
По умолчанию

Здарова!
Я всю волю собрал в кулак, чтобы этого не сказать.
tempora вне форума  
 

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

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

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, время: 01:49.


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