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

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

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

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

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

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

AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR...

 
Опции темы
Непрочитано 26.12.2018, 23:27  
Михаил24
Прохожий
 
Регистрация: 26.12.2018
Сообщений: 1
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Михаил24 на пути к лучшему
По умолчанию Настройка таймера Т1 по переполнению.

Помогите настроить таймер Т1 для переполнения. Пожалуйста, очень нужна помощь.
И пожалуйста помогите найти ошибки. #include ‹avr/io.h›
#include ‹util/delay.h›
#include ‹avr/interrupt.h›
volatile unsigned int adc=0;
volatile unsigned char val=0; // старое значение для сравнения
volatile unsigned char On=0; // указатель, что включен
void adc_Init()// настройка АЦП
{
ADMUX|=(1‹‹REFS0)|(1‹‹MUX1); //включаем AVcc и выбираем 2-й канал
ADCSRA|=(1‹‹ADEN)|(1‹‹ADATE)|(1‹‹ADPS2)|(1‹‹ADPS1) |(1‹‹ADPS0); // включение АЦП и выбор режима - автоматический
ADCSRB|=(1‹‹ADTS2)|(1‹‹ADTS1); // выбор источника запуска преобразования в регистре ADCSRB таймера 1 - совпадение В
ADCSRA|=(1‹‹ADPS2)|(1‹‹ADPS1)|(1‹‹ADPS0); // запись коэффициента деления АЦП (12 в регистре ADCSRA
}

int main (void)// основная программа
{
DDRD=0xFF;
PORTD=0;
DDRB=0xFF;
PORTB=0;

adc_Init();
// Настройка Т1
TCCR1B|=(1‹‹CS12)|(1‹‹CS10) |(1‹‹WGM12); // настройка предделителя 1024 и запуск таймера 1
TIMSK1=(1‹‹OCIE1A); //разрешили по совпадению
OCR1A=10418; //загрузка числа в таймер
//Настройка Т0, ШИМ
TCCR0A|=(1‹‹COM0A1)|(1‹‹COM0A0)|(1‹‹WGM01)|(1‹‹WGM 00); //генерация ШИМ сигнала при совпадении, FastPWM
OCR0A=0; // начальное значение
TCCR0B=1‹‹CS00; // запуск
sei();
while (1)
{
// проверяем новое значение
if(adc!=val) // только если изменилось
{
OCR0A=adc/4; //значение для ШИМ
if(!On) //если не был включен
{
if(adc›471) //больше 2,3
{
PORTB=1; // включаем 1, 2 - не горит
On=1; // запоминаем
}
else PORTB=2; // если нет то включаем 2, 1 - не горит
}
else // если был включен
{
if(adc‹307) // если меньше 1,5
{
PORTB=2; // включаем 2
On=0; // запоминаем
}
else PORTB=1; // выключаем 1
}
val=adc; // обновляем значение
} // конец - если изменилось
}
return 0;
}
ISR (TIMER1_OVF_vect)// обработчик прерывания
{
OCR1A= 10418;
TCCR0B=1‹‹CS00; // запуск ШИМ
while(bit_is_clear(ADCSRA,ADIF)); //ожидание готовности результата , преобразование сигнала
ADCSRA|=(1‹‹ADIF); //сброс (прерывания) блока АЦП
TIFR1=TIFR1|1; // сброс флага прерывания
}
Реклама:
Михаил24 вне форума  
Непрочитано 02.01.2019, 20:38  
SergeBS
Вид на жительство
 
Аватар для SergeBS
 
Регистрация: 11.05.2007
Адрес: Владимир
Сообщений: 384
Сказал спасибо: 10
Сказали Спасибо 110 раз(а) в 47 сообщении(ях)
SergeBS на пути к лучшему
По умолчанию Re: Настройка таймера Т1 по переполнению.

Бред на входе -› бред на выходе. Я "навскидку" нашел 5 строк, которые компилятор не пропустит по самому банальному принципу - "непарности скобок". Дальше стало неинтересно...
Зачет "горит", а даже методичку лень искать?
SergeBS вне форума  
Непрочитано 02.01.2019, 20:55  
AR_Favorit
Почётный гражданин KAZUS.RU
 
Регистрация: 13.03.2010
Сообщений: 2,897
Сказал спасибо: 499
Сказали Спасибо 3,061 раз(а) в 1,425 сообщении(ях)
AR_Favorit на пути к лучшему
По умолчанию Re: Настройка таймера Т1 по переполнению.

Сообщение от SergeBS Посмотреть сообщение
Я "навскидку" нашел 5 строк, которые компилятор не пропустит по самому банальному принципу - "непарности скобок"
Это форум так корёжит текст при выкладывании. Причем тег code может тоже не особо помочь.
AR_Favorit вне форума  
Непрочитано 02.01.2019, 21:07  
SergeBS
Вид на жительство
 
Аватар для SergeBS
 
Регистрация: 11.05.2007
Адрес: Владимир
Сообщений: 384
Сказал спасибо: 10
Сказали Спасибо 110 раз(а) в 47 сообщении(ях)
SergeBS на пути к лучшему
По умолчанию Re: Настройка таймера Т1 по переполнению.

Сообщение от AR_Favorit Посмотреть сообщение
Это форум так корёжит текст при выкладывании. Причем тег code может тоже не особо помочь.
Проверяю:
#include ‹avr/io.h›
#include ‹avr/interrupt.h› //cli()
#include ‹util/delay.h›
#include ‹stdlib.h›

//
// Определение подключений выводов
//
#define HWDDR DDRA
#define HWPORT PORTA
#define LED PA0 // LED PIN20
#define BATADC PA1 // ADC1 - Ubat, PIN19
#define PowerOn PA2 // 1 - Power On PIN18
#define BUTTON PA3 // BUTTON1 PIN17
#define Discharge PA4 // 1 - разряд PIN14
#define Charge PA5 // 0 - заряд PIN13
#define COMPLUS PA6 // Comparator +In PIN12
#define COMMINUS PA7 // Comparator -In PIN11

//порт - подключение LCD
#define TICDDR DDRB
#define TICPORT PORTB
#define MOSI PB0
#define MISO PB1
#define SCK PB2
#define PWMOUT PB3
#define DIN PB4
#define DCLK PB5
#define LOAD PB6
#define RESET PB7

#include "TIC.c" // Библиотека TIC I/O

// Включение модулей:
//#define PwmUse // разрешение работы pwm
#define TestCharge // проверка зарядом

volatile uint8_t num[10];
// константы - коды цифр LCD 0..9 + пробел
unsigned char Digits[] = {Dig0, Dig1, Dig2, Dig3, Dig4, Dig5, Dig6, Dig7, Dig8, Dig9};

#ifdef TestCharge // проверка зарядом
#define MAXOVERFLOW 0x04 // TCNT0 Max Overflows до вывода "- Short -"
volatile unsigned char Tcnt0ovf; // TCNT0 - overflows, volatile - иначе портится
#endif

//================================================== ========
// Прерывания
//================================================== ========
#ifdef TestCharge // проверка зарядом
ISR(TIMER0_OVF0_vect)
{
Tcnt0ovf++;
if (Tcnt0ovf › MAXOVERFLOW)
{
ACSR |= (1‹‹ACBG); //"+"вход - на 1.18 В - компаратор сработает, т.к. "-" вход 0.2/0.4 В
}
}
//ISR(ANA_COMP_vect) //{ //}
#endif

//************************************************** ************
// Функции
//************************************************** ************

//************************************************** ********
// Main program
//************************************************** ********

int main(void)
{
// Declare your local variables here
#ifdef TestCharge // проверка зарядом
// volatile unsigned char Tcharge1, num0, num1, num2, num3, num4;
// volatile unsigned char Count1 = 0x00;
// volatile unsigned int Tsum = 0x0000;
unsigned char Tcharge1, num0, num1, num2, num3, num4;
unsigned char Count1, State;
unsigned int Tsum, T100, T300;
#endif

cli();
SP = RAMEND; //Stack
// TIMSK = 0x00; // запрет прерываний таймеров, initial =0x00

//************************************************** **********
// Инициализация периферии
//************************************************** **********
//выходы: A2 - P_ON, A4 - Discharge, A5 - Charge
HWDDR = (1‹‹LED) | (1‹‹PowerOn) | (1‹‹Charge) | (1‹‹Discharge);
//при старте - Charge - off(1), Discharge - on(1), Mode - PullUp, Power - On (1), D0 - PullUp
HWPORT = (1‹‹BUTTON) | (1‹‹ Discharge) | (1‹‹ Charge);

// TICPORT PB0,1,2 - n/u (programming), RESET PB7; outputs: PWMOUT PB3, DIN PB4, DCLK PB5, LOAD PB6
TICDDR = (1‹‹MISO) | (1‹‹DCLK) | (1‹‹DIN) | (1‹‹LOAD) | (1‹‹PWMOUT); // 1 - OUT
TICPORT = (1‹‹MOSI) | (1‹‹RESET); // 1: OUT -› 1, IN -›PullUp R - On (1)

//=======================================
#ifdef PwmUse
// CK (CPU clock) used
PLLCSR = 0x00;

// Max Value of TCNT1 in PWM:
OCR1C = 250;
// OCR1B - compare match, OC1B, (inv)OC1B changed
OCR1B = 15; // Vcc = 5V -› Uex = 0.3V
// OCR1B = 10; // Vcc = 5V -› Uex = 0.2V
// OCR1B = 5; // Vcc = 5V -› Uex = 0.1V
// OCR1B = 24 ; // 12-0.2V, 24-0.4V (при 3.3В!)

// PWMOUT: PB3/OC1B, mode - PWM1
TCCR1A = (1‹‹COM1B1) | (1‹‹PWM1B); // TCNT1 = OCR1B =› OC1B -› 0, CTC1 = 0
TCCR1B = (1‹‹CS10); //старт ШИМ F = CK
#endif

//=======================================
#ifdef TestCharge
// TCCR0 - прогон 1 временного цикла счетчика для правильного 1-го отсчета

Tcnt0ovf = 0x00;
TIMSK = (1‹‹TOIE0); // TCNT0 Overflow Interrupt Enable
//#define SHORT // 1-й отсчет - Short - при 9000 uF
#ifndef SHORT
TCCR0 = (1‹‹CS01) | (1‹‹CS00); //Start Timer0 CK/64
sei();
while(!(Tcnt0ovf)); // ждем прерывание
#endif
// При С 9000 uF отключение этой строки - 1-е измерение будет - Short -
TCCR0 = 0x00; // Stop Timer0 TCNT0
Tsum = 0x0000;
Count1 = 0x00;
State = 0x00;
HWPORT |= (1‹‹PowerOn);
#endif

Тупо Ctrl-C/Ctrl-V.
Пустых строчек с #include не наблюдаю. "Пропадания" скобок тоже. Что я делаю не так?

UPDATED: а #include РЕАЛЬНО стали пустыми, хотя в предпросмотре все было хорошо. Забавно...
Корежит не по-детски. Не замечал (не пихал код). Пардоньте...
Ну и вывод - вкладывать исходник в zip или что еще из архиваторов, чтобы видно было РЕАЛЬНЫЙ код.
А то ФИГНЯ полная на выходе... Ничего не разобрать...

Последний раз редактировалось SergeBS; 02.01.2019 в 21:18.
SergeBS вне форума  
Непрочитано 02.01.2019, 21:14  
ForcePoint
Почётный гражданин KAZUS.RU
 
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 6,888
Сказал спасибо: 2,959
Сказали Спасибо 3,144 раз(а) в 2,133 сообщении(ях)
ForcePoint на пути к лучшему
По умолчанию Re: Настройка таймера Т1 по переполнению.

Сообщение от AR_Favorit Посмотреть сообщение
Это форум так корёжит текст при выкладывании. Причем тег code может тоже не особо помочь.
"Помилуй, Бог! Надобно-же и умение." как говорил А. В. Суворов.

Михаил24, отредактируй сообщение с использованием тега "code" и кнопки "Предварительный просмотр".
__________________
Экзорцист 40-го уровня.
ForcePoint вне форума  
Непрочитано 02.01.2019, 21:25  
SergeBS
Вид на жительство
 
Аватар для SergeBS
 
Регистрация: 11.05.2007
Адрес: Владимир
Сообщений: 384
Сказал спасибо: 10
Сказали Спасибо 110 раз(а) в 47 сообщении(ях)
SergeBS на пути к лучшему
По умолчанию Re: Настройка таймера Т1 по переполнению.

У меня в предварительном просмотре и без тега "код" все было прекрасно... Так что самым модным программерам нужно "кое-что" прищемить, чтобы предпросмотр соответствовал реальности ИХ творческих изысков.
SergeBS вне форума  
Непрочитано 02.01.2019, 22:09  
AR_Favorit
Почётный гражданин KAZUS.RU
 
Регистрация: 13.03.2010
Сообщений: 2,897
Сказал спасибо: 499
Сказали Спасибо 3,061 раз(а) в 1,425 сообщении(ях)
AR_Favorit на пути к лучшему
По умолчанию Re: Настройка таймера Т1 по переполнению.

тег CODE, ЕМНИП тоже глючил, а вот с тегом PHP всё красиво и разноцветненько, а главное, без сжирания части кода форумом...
AR_Favorit вне форума  
Непрочитано 02.01.2019, 22:56  
ForcePoint
Почётный гражданин KAZUS.RU
 
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 6,888
Сказал спасибо: 2,959
Сказали Спасибо 3,144 раз(а) в 2,133 сообщении(ях)
ForcePoint на пути к лучшему
По умолчанию Re: Настройка таймера Т1 по переполнению.

Сообщение от AR_Favorit Посмотреть сообщение
с тегом PHP всё красиво и разноцветненько
Проба (сдвиг на 8 разрядов):
PHP код:
mov AX,(mask ‹‹ 8
P.S. Да, так работает.
__________________
Экзорцист 40-го уровня.
ForcePoint вне форума  
Непрочитано 07.01.2019, 09:36  
Signalshik2
Вид на жительство
 
Аватар для Signalshik2
 
Регистрация: 11.08.2015
Сообщений: 408
Сказал спасибо: 17
Сказали Спасибо 37 раз(а) в 28 сообщении(ях)
Signalshik2 на пути к лучшему
По умолчанию Re: Настройка таймера Т1 по переполнению.

А какой микроконтроллер у автора?
Signalshik2 вне форума  
Непрочитано 08.01.2019, 01:40  
usr10000
Временная регистрация
 
Регистрация: 12.11.2008
Адрес: LT
Сообщений: 69
Сказал спасибо: 12
Сказали Спасибо 33 раз(а) в 23 сообщении(ях)
usr10000 на пути к лучшему
По умолчанию Re: Настройка таймера Т1 по переполнению.

AVR-ка какая-то, надо думать. По-моему, автору уже не актуально
usr10000 вне форума  
 

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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
STM32 Настройка таймера rihkov ARM 76 29.03.2018 17:12
"Глюк" AVR таймера от кварца 32768 Гц alexgap Коллекция глюков 23 16.09.2013 07:29
Проблема при симуляции puchik006 Proteus 57 30.06.2013 08:13
Настройка таймера при переходе с atmega128 на atmega1284p KamomeDono Микроконтроллеры, АЦП, память и т.д 0 23.11.2011 16:57


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


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