Например TDA7294

Форум РадиоКот • Просмотр темы - CodeVision AVR в вопросах и ответах
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Вт апр 16, 2024 11:21:31

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 8273 ]     ... , , , 399, , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Чт авг 16, 2018 13:54:59 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
SIM31 писал(а):
Все равно каждые 2 секунды перезагружает после отработки прерывания.
изучите, наконец, даташит - с WDT просто так работать нельзя, надо выдерживать определенную последовательность действий при смене его режима работы. не надо гадать - в даташите есть примеры, которые будут работать.

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Вс авг 19, 2018 02:51:15 
Это не хвост, это антенна
Аватар пользователя

Карма: 17
Рейтинг сообщений: 12
Зарегистрирован: Чт апр 04, 2013 22:22:57
Сообщений: 1357
Откуда: Белгород, РФ
Рейтинг сообщения: 0
Все равно похоже инициализация WDT глючит, только не Proteus, а старая версия CV 3.12, а новее у меня нет.

Наверное это пофиксили в версии 3.25

"Improved the code generated for initializing the watchdog of non-Xmega chips"


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Чт авг 23, 2018 11:13:27 
Нашел транзистор. Понюхал.

Карма: 3
Рейтинг сообщений: 2
Зарегистрирован: Вт сен 29, 2009 09:28:51
Сообщений: 175
Откуда: Ульяновск
Рейтинг сообщения: 0
День Добрый!

Понимаю что тема уже не раз поднималась, не могу понять почему не работает. Компилируется без ошибок.
Код:
#include <mega328p.h>
//используем стандартную процедуру задержки
#include <delay.h>

// Declare your global variables here
// Standard Input/Output functions
#include <stdio.h>
// TWI functions
#include <twi.h>

#define KEY1 (1<<PORTD2)
#define KEY2 (1<<PORTD3)
#define ANYKEY (KEY1 | KEY2)
#define NOKEY 0

unsigned char getkey(void)
{
   unsigned char key = ~(PIND & ANYKEY);
   delay_ms(20);
   if(~(PIND & ANYKEY) == key)
      return key;
   else
      return NOKEY;
}

void main(void)
{

// Declare your local variables here

// Crystal Oscillator division factor: 1
#pragma optsize-
CLKPR=(1<<CLKPCE);
CLKPR=(0<<CLKPCE) | (0<<CLKPS3) | (0<<CLKPS2) | (0<<CLKPS1) | (0<<CLKPS0);
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endif

// Input/Output Ports initialization
// Port B initialization
// Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=Out Bit2=Out Bit1=Out Bit0=Out
DDRB=(0<<DDB7) | (0<<DDB6) | (0<<DDB5) | (0<<DDB4) | (1<<DDB3) | (1<<DDB2) | (1<<DDB1) | (1<<DDB0);
// State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=0 Bit2=0 Bit1=0 Bit0=0
PORTB=(0<<PORTB7) | (0<<PORTB6) | (0<<PORTB5) | (0<<PORTB4) | (0<<PORTB3) | (0<<PORTB2) | (0<<PORTB1) | (0<<PORTB0);

// Port C initialization
// Function: Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In
DDRC=(0<<DDC6) | (0<<DDC5) | (0<<DDC4) | (0<<DDC3) | (0<<DDC2) | (0<<DDC1) | (0<<DDC0);
// State: Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T
PORTC=(0<<PORTC6) | (0<<PORTC5) | (0<<PORTC4) | (0<<PORTC3) | (0<<PORTC2) | (0<<PORTC1) | (0<<PORTC0);

// Port D initialization
// Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In
DDRD=(0<<DDD7) | (0<<DDD6) | (0<<DDD5) | (0<<DDD4) | (0<<DDD3) | (0<<DDD2) | (0<<DDD1) | (0<<DDD0);
// State: Bit7=P Bit6=P Bit5=P Bit4=P Bit3=P Bit2=P Bit1=T Bit0=T
PORTD=(1<<PORTD7) | (1<<PORTD6) | (1<<PORTD5) | (1<<PORTD4) | (1<<PORTD3) | (1<<PORTD2) | (0<<PORTD1) | (0<<PORTD0);

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=0xFF
// OC0A output: Disconnected
// OC0B output: Disconnected
TCCR0A=(0<<COM0A1) | (0<<COM0A0) | (0<<COM0B1) | (0<<COM0B0) | (0<<WGM01) | (0<<WGM00);
TCCR0B=(0<<WGM02) | (0<<CS02) | (0<<CS01) | (0<<CS00);
TCNT0=0x00;
OCR0A=0x00;
OCR0B=0x00;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer1 Stopped
// Mode: Normal top=0xFFFF
// OC1A output: Disconnected
// OC1B output: Disconnected
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=(0<<COM1A1) | (0<<COM1A0) | (0<<COM1B1) | (0<<COM1B0) | (0<<WGM11) | (0<<WGM10);
TCCR1B=(0<<ICNC1) | (0<<ICES1) | (0<<WGM13) | (0<<WGM12) | (0<<CS12) | (0<<CS11) | (0<<CS10);
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;

// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer2 Stopped
// Mode: Normal top=0xFF
// OC2A output: Disconnected
// OC2B output: Disconnected
ASSR=(0<<EXCLK) | (0<<AS2);
TCCR2A=(0<<COM2A1) | (0<<COM2A0) | (0<<COM2B1) | (0<<COM2B0) | (0<<WGM21) | (0<<WGM20);
TCCR2B=(0<<WGM22) | (0<<CS22) | (0<<CS21) | (0<<CS20);
TCNT2=0x00;
OCR2A=0x00;
OCR2B=0x00;

// Timer/Counter 0 Interrupt(s) initialization
TIMSK0=(0<<OCIE0B) | (0<<OCIE0A) | (0<<TOIE0);

// Timer/Counter 1 Interrupt(s) initialization
TIMSK1=(0<<ICIE1) | (0<<OCIE1B) | (0<<OCIE1A) | (0<<TOIE1);

// Timer/Counter 2 Interrupt(s) initialization
TIMSK2=(0<<OCIE2B) | (0<<OCIE2A) | (0<<TOIE2);

// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// Interrupt on any change on pins PCINT0-7: Off
// Interrupt on any change on pins PCINT8-14: Off
// Interrupt on any change on pins PCINT16-23: Off
EICRA=(0<<ISC11) | (0<<ISC10) | (0<<ISC01) | (0<<ISC00);
EIMSK=(0<<INT1) | (0<<INT0);
PCICR=(0<<PCIE2) | (0<<PCIE1) | (0<<PCIE0);

// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: On
// USART Transmitter: On
// USART0 Mode: Asynchronous
// USART Baud Rate: 9600
UCSR0A=(0<<RXC0) | (0<<TXC0) | (0<<UDRE0) | (0<<FE0) | (0<<DOR0) | (0<<UPE0) | (0<<U2X0) | (0<<MPCM0);
UCSR0B=(0<<RXCIE0) | (0<<TXCIE0) | (0<<UDRIE0) | (1<<RXEN0) | (1<<TXEN0) | (0<<UCSZ02) | (0<<RXB80) | (0<<TXB80);
UCSR0C=(0<<UMSEL01) | (0<<UMSEL00) | (0<<UPM01) | (0<<UPM00) | (0<<USBS0) | (1<<UCSZ01) | (1<<UCSZ00) | (0<<UCPOL0);
UBRR0H=0x00;
UBRR0L=0x67;

// Analog Comparator initialization
// Analog Comparator: Off
// The Analog Comparator's positive input is
// connected to the AIN0 pin
// The Analog Comparator's negative input is
// connected to the AIN1 pin
ACSR=(1<<ACD) | (0<<ACBG) | (0<<ACO) | (0<<ACI) | (0<<ACIE) | (0<<ACIC) | (0<<ACIS1) | (0<<ACIS0);
ADCSRB=(0<<ACME);
// Digital input buffer on AIN0: On
// Digital input buffer on AIN1: On
DIDR1=(0<<AIN0D) | (0<<AIN1D);

// ADC initialization
// ADC disabled
ADCSRA=(0<<ADEN) | (0<<ADSC) | (0<<ADATE) | (0<<ADIF) | (0<<ADIE) | (0<<ADPS2) | (0<<ADPS1) | (0<<ADPS0);

// SPI initialization
// SPI disabled
SPCR=(0<<SPIE) | (0<<SPE) | (0<<DORD) | (0<<MSTR) | (0<<CPOL) | (0<<CPHA) | (0<<SPR1) | (0<<SPR0);

// TWI initialization
// Mode: TWI Master
// Bit Rate: 100 kHz
twi_master_init(100);

// Global enable interrupts
#asm("sei")



while (1)

      {
      // Place your code here
     
    switch(getkey())
    {
      case KEY1: 
      // обработка кнопки 1
      PORTB.2=1;
      break;
    }
     
      }
}


При замыкании вывода порта PORTD2 (KEY1) на землю, PORTb.2 включил светодиод.

Добавлено after 21 minute 48 seconds:
Сам нашел)))
Изменил на:
Код:
unsigned char getkey(void){
unsigned char key;
   key = ~PIND & ANYKEY;
   delay_ms(15);
   if(key == (~PIND & ANYKEY))
      return key;
     else
      return NOKEY;
}


а было:
Код:
unsigned char getkey(void)
{
   unsigned char key = ~(PIND & ANYKEY);
   delay_ms(20);
   if(~(PIND & ANYKEY) == key)
      return key;
   else
      return NOKEY;
}


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Пн авг 27, 2018 06:33:13 
Прорезались зубы

Зарегистрирован: Вт авг 09, 2011 19:53:28
Сообщений: 222
Рейтинг сообщения: 0
Atmega 644 PA. прошивал ппосталом2. фьюзы прошились не правильно. проверил этой программой.на JTAGEN нет галки, а должна быть. сконектился этой программой. выставил фьюзы так. не нашел здесь фьюза SPIEN(куда он делся?). выставил и прошшил фьюзы.как на картинке и проц залочился, не определяется теперь. где ошибся?


Вложения:
фьюзищи.jpg [86.01 KiB]
Скачиваний: 505
Вернуться наверх
 
Организация питания на основе надежных литиевых аккумуляторов EVE и микросхем азиатского производства

Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Пн авг 27, 2018 07:01:07 
Друг Кота
Аватар пользователя

Карма: 46
Рейтинг сообщений: 2030
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Сообщений: 6618
Откуда: Сердце Пармы
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Ну, так ты его на работу с кварцем настроил... наверно потому и не определяется

_________________
Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Пн авг 27, 2018 07:04:47 
Прорезались зубы

Зарегистрирован: Вт авг 09, 2011 19:53:28
Сообщений: 222
Рейтинг сообщения: 0
каким фьюзом? башка кругом, не знал да еще забыл. мне надо то было СМА оживить. уже неделю гуглю.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Пн авг 27, 2018 09:18:01 
Друг Кота
Аватар пользователя

Карма: 46
Рейтинг сообщений: 2030
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Сообщений: 6618
Откуда: Сердце Пармы
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
если кварц там стоит, то всё ок. если нет - придется генератор городить (частота не сильно критична, оrоло 1МГц) и подавать импульсы на XTAL1

Добавлено after 32 minutes 11 seconds:
источник тактирования настраивается фьюзами CKSEL(3..0)

_________________
Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Пн авг 27, 2018 09:48:25 
Друг Кота
Аватар пользователя

Карма: 86
Рейтинг сообщений: 1018
Зарегистрирован: Чт апр 11, 2013 11:19:59
Сообщений: 4875
Откуда: Минск
Рейтинг сообщения: 0
Да, судя по всему, там на кварц 3..8МГц выставлено.

Повторил "галочки" на fuse calculator:

Изображение

Собственно, вот из-за этого недолюбливаю все эти программы с "галочками". Avrdude просто передаёшь готовые параметры (-U lfuse:w:0x1d:m -U hfuse:w:0x06:m -U efuse:w:0xfa:m) через тот же Makefile или любой скрипт, и никогда не ошибёшься.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Пн авг 27, 2018 10:13:26 
Друг Кота
Аватар пользователя

Карма: 46
Рейтинг сообщений: 2030
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Сообщений: 6618
Откуда: Сердце Пармы
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
если кварца конструкцией не предусмотрено, то, скорее всего, человек стал очередной жертвой инверсии фьюзов. :cry:
слава богу, в его случае - не смертельно...

_________________
Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Пн авг 27, 2018 10:50:26 
Прорезались зубы

Зарегистрирован: Вт авг 09, 2011 19:53:28
Сообщений: 222
Рейтинг сообщения: 0
расколдовал, внешним генератором. с фьюзами вроде разобрался. не хочет и эта программа. прописывать JTAGEN. проц наерное мертвый.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Вт авг 28, 2018 20:48:15 
Нашел транзистор. Понюхал.

Карма: 3
Рейтинг сообщений: 2
Зарегистрирован: Вт сен 29, 2009 09:28:51
Сообщений: 175
Откуда: Ульяновск
Рейтинг сообщения: 0
День Добрый!

Каким образом можно организовать алгоритм. Включили порт - 30 минут ждем - выключили порт.

По таймеру? Но что-то запутался. Подкиньте код.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Вт авг 28, 2018 22:16:46 
Друг Кота
Аватар пользователя

Карма: 86
Рейтинг сообщений: 1018
Зарегистрирован: Чт апр 11, 2013 11:19:59
Сообщений: 4875
Откуда: Минск
Рейтинг сообщения: 0
Да, по таймеру. В основном цикле кнопки при нажатии кнопки включаем порт и устанавливаем переменную в N. В обработчике прерывания таймера эта переменная декрементируется, пока она больше нуля (if (N>0) {N--;}). В основном цикле, помимо опроса кнопок, проверяем эту переменную, если она равна нулю - значит, N времени прошло, устанавливаем N в -1, и выключаем порт.

N должно соответстовать 30 минутам. В зависимости от частоты вызова прерывания это может быть одна переменная типа int или long (если хватает), или можно её разбить на две (по аналогии с секундами-минутами) - одна декрементируется постоянно в каждом прерывании, другая - при "переполнении" первой.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Ср авг 29, 2018 05:33:15 
Прорезались зубы

Зарегистрирован: Вт авг 09, 2011 19:53:28
Сообщений: 222
Рейтинг сообщения: 0
расколдовал, внешним генератором. с фьюзами вроде разобрался. не хочет и эта программа. прописывать JTAGEN. проц наерное мертвый.
незнаю на каком этапе, но прц я угандошил. новый нормально записался и фьюзы тоже.
ВСЕМ СПАСИБО.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Ср авг 29, 2018 05:37:45 
Друг Кота
Аватар пользователя

Карма: 46
Рейтинг сообщений: 2030
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Сообщений: 6618
Откуда: Сердце Пармы
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
для успокоения души сноси его к фьюз-доктору, если проц жив, то доктор все регистры ему на место вправит

_________________
Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Ср авг 29, 2018 06:32:26 
Прорезались зубы

Зарегистрирован: Вт авг 09, 2011 19:53:28
Сообщений: 222
Рейтинг сообщения: 0
я его расколдовал, пишу и читаю, но в СМА не работает. новый проц запустил машину.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Ср авг 29, 2018 06:57:29 
Друг Кота
Аватар пользователя

Карма: 46
Рейтинг сообщений: 2030
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Сообщений: 6618
Откуда: Сердце Пармы
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
может ноги подгорели?

Добавлено after 1 minute 57 seconds:
если СМА = стиральная машина автомат, то проверь протечки на разъем мотора, и за сырости в нем бывает вышибает цепи тахометра...

_________________
Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Чт ноя 01, 2018 17:45:14 
Нашел транзистор. Понюхал.

Зарегистрирован: Вс мар 30, 2014 21:41:24
Сообщений: 170
Откуда: Украина
Рейтинг сообщения: 0
Здравствуйте. Делаю тахометр. Atmega8 будет измерять период сигнала с катушки зажигания, преобразовывать в частоту/обороты в минуту и выводить на семисегментник. Програму написал, все мерит, вроде нормально, на железке тоже работает. НО при исчезновения сигнала (в момент остановки двигателя), на дисплее остается последнее значение, а хотелось бы "0000". Я не особо опытный в этих делах, прошу помочь. Цепляю исходник, Proteus, файлы проекта.
Спойлер
Код:
#include <mega8.h>
#include <delay.h>
unsigned char i,OFcount,var[4],zamer_T,c3,c2,c1,c0;
unsigned long T,f;
unsigned int rising1,rising2;
static flash unsigned char SEGMENTE[]=    // масив для индикатора
 {
  (0b10111110), // 0
  (0b10001000), // 1
  (0b11110010), // 2
  (0b11011010), // 3
  (0b11001100), // 4
  (0b01011110), // 5
  (0b01111110), // 6
  (0b10001010), // 7
  (0b11111110), // 8
  (0b11011110), // 9     
 };
void bcd(unsigned long s)   
 {
 c3=0;c2=0;c1=0; 
 while (s>=1000){s-=1000;c3++;}
 while (s>=100){s-=100;c2++;}
 while (s>=10){s-=10;c1++;}
 c0=s; 
 }
interrupt [TIM1_OVF] void timer1_ovf_isr(void)
{
OFcount++;//считаем количество переполнений
}

interrupt [TIM1_CAPT] void timer1_capt_isr(void)
 {
 switch(zamer_T)
      {
      case 0:
      rising1 = ICR1; // Запоминаем значение счётчика
      OFcount = 0;    // Обнуляем количество переполнений счётчика
      zamer_T = 1;    // Переходим к следующему вычислению
      break;
         
      case 1:
      rising2 = ICR1; // Запоминаем значение счётчика
      T = (unsigned long)rising2 - (unsigned long)rising1 + ((unsigned long)OFcount * 65536); // Приводим все переменные к одному типу и вычисляем период импульса
      f = 30000000/T; // Вычисляем обороты в минуту
      zamer_T = 0;                 
      break;   
      }
 }
 
// Индикация
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
 {
 TCNT0=0x06;
 PORTC &=~ (1<<i);                       
 i++;
 if(i>=4)i=0;   
 PORTB=SEGMENTE[var[i]];  //значение для индикации
 PORTC |= (1<<i);         
 }

void main(void)
{
DDRB=(1<<DDB7) | (1<<DDB6) | (1<<DDB5) | (1<<DDB4) | (1<<DDB3) | (1<<DDB2) | (1<<DDB1) | (0<<DDB0);
PORTB=(0<<PORTB7) | (0<<PORTB6) | (0<<PORTB5) | (0<<PORTB4) | (0<<PORTB3) | (0<<PORTB2) | (0<<PORTB1) | (1<<PORTB0);
 
DDRC=(0<<DDC6) | (0<<DDC5) | (0<<DDC4) | (1<<DDC3) | (1<<DDC2) | (1<<DDC1) | (1<<DDC0);
PORTC=(0<<PORTC6) | (0<<PORTC5) | (0<<PORTC4) | (0<<PORTC3) | (0<<PORTC2) | (0<<PORTC1) | (0<<PORTC0);
 
DDRD=(0<<DDD7) | (0<<DDD6) | (0<<DDD5) | (0<<DDD4) | (0<<DDD3) | (0<<DDD2) | (0<<DDD1) | (0<<DDD0);
PORTD=(0<<PORTD7) | (0<<PORTD6) | (0<<PORTD5) | (0<<PORTD4) | (0<<PORTD3) | (0<<PORTD2) | (0<<PORTD1) | (0<<PORTD0);

// Clock value: 125,000 kHz
TCCR0=(0<<CS02) | (1<<CS01) | (1<<CS00);
TCNT0=0x06;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 125,000 kHz
// Mode: Normal top=0xFFFF
// Input Capture on Rising Edge
// Input Capture Interrupt: On
TCCR1A=0x00;
TCCR1B=0xC2;
TCNT1=0x00;
ICR1=0x00;

TIMSK=(0<<OCIE2) | (0<<TOIE2) | (1<<TICIE1) | (0<<OCIE1A) | (0<<OCIE1B) | (1<<TOIE1) | (1<<TOIE0);

#asm("sei")

while (1)
      {                                   
       var[0]=c3;
       var[1]=c2;
       var[2]=c0;
       var[3]=c1;
       bcd(f);     
      }
}

Изображение


Вложения:
Taho.rar [98.94 KiB]
Скачиваний: 214
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Чт ноя 01, 2018 21:06:25 
Это не хвост, это антенна
Аватар пользователя

Карма: 17
Рейтинг сообщений: 12
Зарегистрирован: Чт апр 04, 2013 22:22:57
Сообщений: 1357
Откуда: Белгород, РФ
Рейтинг сообщения: 1
Наверное в модуле индикации сделать проверку в конце:

Код:
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
 {
 TCNT0=0x06;
  ...
 PORTB=SEGMENTE[var[i]];  //значение для индикации
 PORTC |= (1<<i);         

 if (OFcount>1000) f=0; // в счетчике интервала значение за разумными пределами
 }


или тут
Код:
interrupt [TIM1_OVF] void timer1_ovf_isr(void)
{
OFcount++;//считаем количество переполнений
if (OFcount>1000) f=0; // в счетчике интервала значение за разумными пределами
}


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Чт ноя 01, 2018 21:25:28 
Нашел транзистор. Понюхал.

Зарегистрирован: Вс мар 30, 2014 21:41:24
Сообщений: 170
Откуда: Украина
Рейтинг сообщения: 0
SIM31 писал(а):
сделать проверку в конце
Спасибо. Но не один не второй вариант не дал ни какого результата.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Чт ноя 01, 2018 21:53:02 
Это не хвост, это антенна
Аватар пользователя

Карма: 17
Рейтинг сообщений: 12
Зарегистрирован: Чт апр 04, 2013 22:22:57
Сообщений: 1357
Откуда: Белгород, РФ
Рейтинг сообщения: 1
Наверное просто не дождались, слишком большая константа, через 65535*1000/125000=511 секунд обнулится, если правильно понял логику программы )) можно вместо 1000 написать число 2, должно обнуляться через 1 секунду.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 8273 ]     ... , , , 399, , , ...  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: metan и гости: 21


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

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y