Например TDA7294

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



Текущее время: Вт окт 20, 2020 11:51:50

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


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



Начать новую тему Ответить на тему  [ Сообщений: 8154 ]     ... , , , 394, , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Ср фев 28, 2018 10:39:08 
Друг Кота
Аватар пользователя

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

_________________
Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством :)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Ср фев 28, 2018 10:53:06 
Открыл глаза

Карма: 1
Рейтинг сообщений: 1
Зарегистрирован: Чт дек 28, 2017 23:07:31
Сообщений: 53
Рейтинг сообщения: 0
Ivanoff-iv писал(а):
но не рекомендую - косяков в нём много
косяки существуют даже в оригинале. Получить вменяемую информацию и выучить язык - как-бы не равнозначные по времени вещи...
Ivanoff-iv писал(а):
лучше грызть технический инглиш
- со временем это приходит автоматически


Вернуться наверх
 
JLCPCB, всего $2 за прототип печатной платы! Цвет - любой!

Отличное качество, подтвержденное более чем 600,000 пользователей! Более 10,000 заказов в день.

Зарегистрируйтесь и получите два купона по 5$ каждый:https://jlcpcb.com/quote

Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Чт мар 01, 2018 14:02:24 
Открыл глаза

Зарегистрирован: Вт май 05, 2009 17:32:50
Сообщений: 52
Рейтинг сообщения: 0
Добрый день city77 подскажи по поводу вот этой строки
TCCR1B = _BV(WGM12) | // WGM = 0100 - режим CTC
_BV(CS12)| // CS = 111 - от внешнего источника (по фронту)
_BV(CS11)|
_BV(CS10);
Должно быть так
TCCR1B = (1<<WGM12) | // WGM = 0100 - режим CTC
(1<<CS12)| // CS = 111 - от внешнего источника (по фронту)
(1<<CS11)|
(1<<CS10);
книги которые вы посоветовали скачал и даже начал читать но мне кажется начал еще больше запутываться. И на данном этапе хочу хотя бы откомпилировать программу и загрузить ее в протеус и хотя бы увидеть в чем проблема, просматривая по шагам.


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

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

Онлайн просмотровщик Gerber-файлов от PCBWay + Шестое юбилейное мероприятие в процессе
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Вт мар 06, 2018 13:04:35 
Открыл глаза

Зарегистрирован: Вт май 05, 2009 17:32:50
Сообщений: 52
Рейтинг сообщения: 0
Подскажите пожалуйста. Делаю опрос кнопок во так
#define KEY1 (!PIND.2) // сохранить
#define KEY2 (PORTD.3 = 1)// уменьшить
#define KEY3 (1 << PORTD.4)// увеличить
#define ANYKEY (KEY1 | KEY2 | KEY3)// маска кнопок
#define NOKEY 0 // кнопки не нажаты


switch (gety_key())
{
case KEY1 :
Buton_save(); // Проверим состояние кнопки "Save" и сохраним соотвествующие переменные
break;
};
Создал макрос KEY пробовал варианты 1 2 3 ни один не проходит выдает ошибку

Error: buton 1.c(155): constant integral expression required
и указывает на строку case KEY1 :
я так понимаю, что это макрос неправильно я записал.


Вернуться наверх
 
Как сократить время вычислений и освободить ресурсы центрального процессора?

Цифровые фильтры применяются в системах цифровой обработки сигналов (ЦОС) для решения двух основных задач: разделения и восстановления сигналов. Такие задачи могут решаться программными и аппаратными методами. Для их решения удобно использовать аппаратный цифровой фильтр FMAC, входящий в состав микроконтроллеров семейства STM32G4.

Читать статью>>
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Вт мар 06, 2018 13:37:17 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1764
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 15428
Откуда: Новочеркасск
Рейтинг сообщения: 1
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
bango писал(а):
я так понимаю, что это макрос неправильно я записал
нет, вы неверно макрос применили.
PORT.x в нотации CVAVR (это не язык Си!!!) не является константой, а в качестве case-ветвей оператора switch допустимы только константные выражения.

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


Вернуться наверх
 
STM32L562E-DK – первая отладочная платформа ST на ядре ARM Cortex-M33

STMicroelectronics представляет демонстрационно-отладочную платформу на базе ядра Cortex-M33 – STM32L562E-DK. Данная платформа основана на микроконтроллере нового семейства – STM32L5. STM32L562E-DK позволяет разработчику в полной мере раскрыть и опробовать новые возможности микроконтроллеров STM32L5 с тщательно проработанным функционалом для обеспечения высокого уровня безопасности и защиты.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Вт мар 06, 2018 14:16:19 
Открыл глаза

Зарегистрирован: Вт май 05, 2009 17:32:50
Сообщений: 52
Рейтинг сообщения: 0
я вас понял но не понятно как это исправить.
А все вроде бы так хорошо получалось.

Добавлено after 23 minutes 13 seconds:
в се спасибо что на путь истинный направили сделал так
if (gety_key())
{
if (KEY1)
{
Buton_save(); // Проверим состояние кнопки "Save" и сохраним соотвествующие переменные
}


Вернуться наверх
 


Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Вт мар 06, 2018 17:37:12 
Первый раз сказал Мяу!

Зарегистрирован: Вт дек 20, 2011 21:40:45
Сообщений: 30
Рейтинг сообщения: 0
Всем привет! Извините за детский вопрос ))

Хочу отцепить порт от микроконтроллера atmega8 (перевести его в Z-состояние).

В CVAVR набрал код:

#include <mega8.h>
void main(void)
{
DDRD = 0;
}

Это правильно? Как проверить, что ножка порта находится в Z-состоянии? Померить тестером, и омметр должен показывать разрыв?


Вернуться наверх
 


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

Карма: 39
Рейтинг сообщений: 1558
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Сообщений: 4924
Откуда: Сердце Пармы
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
нет, неправильно:
1) надо указывать конкретную ногу: DDRD.1 = 0; (в вашем случае на вход переключится весь порт (8 ног)).
2) нужно выключить возможно включенную подтяжку PORTD.1 = 0;
так я в кодевижне перевёл 1 ногу порта д в z состояние.
а зачем вам z состояние?

Добавлено after 3 minutes 34 seconds:
омметр должен показывать разрыв?
разрыв с чем?
Не забывайте, кроме отключенного порта остаются как минимум защитные диоды (также периферия иногда может на ноги влиять)

_________________
Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством :)


Вернуться наверх
 
Бытовой пирометр АКИП-9312 – просто удобно!

Диапазон 35 °С ...42°С (температура тела) погрешность 0,3 °С
Диапазон 0 °С ...100°С (бытовая сфера) погрешность 1,0 °С
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Сб мар 24, 2018 10:38:29 
Нашел транзистор. Понюхал.
Аватар пользователя

Зарегистрирован: Пн янв 24, 2011 01:51:48
Сообщений: 188
Откуда: Украина, Киев
Рейтинг сообщения: 0
кто нибудь знает как поменять язык вывода для макроса __DATE__? а еще лучше поменять формат вывода на числовой


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Чт мар 29, 2018 09:48:26 
Первый раз сказал Мяу!

Зарегистрирован: Ср окт 21, 2009 11:10:53
Сообщений: 28
Откуда: Минск
Рейтинг сообщения: 0
спрашивал в теме про 1307, спршу тут:
DS1307+CVAVR3.22+Proteus8
чтобы не заморачиваться кодом решил использовать счетчик "день недели" из самой 1307 (естественно записав в нее правильные время, дату и день недели.
При переходе на новые сутки счетчик автоматом прибавляет к week_day единицу и при опросе таймера показания выводятся на экранчик.
если установить "6" (суббота) то следующее значение будет "7" т.е. воскресенье... а потом следующее "0" ...задумался )))
это у кого глюки?
ps пробовал считать и вскр = 1, результат тот же - после 7-го дня начинается с ноля


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

Карма: 53
Рейтинг сообщений: 382
Зарегистрирован: Вс июл 12, 2009 19:15:29
Сообщений: 6877
Откуда: Ижевск
Рейтинг сообщения: 0
Согласно даташиту должно быть 1-7. Где-то код лажает походу.

_________________
Docendo discimus


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Чт мар 29, 2018 13:21:55 
Первый раз сказал Мяу!

Зарегистрирован: Ср окт 21, 2009 11:10:53
Сообщений: 28
Откуда: Минск
Рейтинг сообщения: 0
или протеус.
инкрементация значения происходит в самой 1307, код только читает оттуда.


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

Карма: 53
Рейтинг сообщений: 382
Зарегистрирован: Вс июл 12, 2009 19:15:29
Сообщений: 6877
Откуда: Ижевск
Рейтинг сообщения: 0
Без программы и желательно схемы только гадать.

_________________
Docendo discimus


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

Зарегистрирован: Ср окт 21, 2009 11:10:53
Сообщений: 28
Откуда: Минск
Рейтинг сообщения: 0
Без программы и желательно схемы только гадать.

Код:


#include <io.h>
  #include <delay.h>

   
#include <1wire.h>

// DS1820 Temperature Sensor functions
#include <ds18b20.h>
// TWI functions
#include <twi.h>

// DS1307 Real Time Clock functions for TWI
#include <ds1307_twi.h>

// Alphanumeric LCD functions
#include <alcd.h>
#include  <stdio.h>
  #define MAX_DEVICES 8
  #define SEARCH_ROM 0xF0

unsigned char rom_code[MAX_DEVICES][9];
// Declare your global variables here
 unsigned char hour, minu, sec;
  unsigned char string[20], string1[20];
unsigned char week_day,day,month,year,c, m, s, d, me, g;
  unsigned char  i,j,devices;
unsigned char n=1;
unsigned int aa,mm, addr = 1;
 volatile int  timm, temp;
 
 
void main(void)
{
// Declare your local variables here

// Input/Output Ports initialization
// Port B initialization
// Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In
DDRB=(0<<DDB7) | (0<<DDB6) | (0<<DDB5) | (0<<DDB4) | (0<<DDB3) | (0<<DDB2) | (0<<DDB1) | (0<<DDB0);
// State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T
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) | (1<<DDC3) | (1<<DDC2) | (1<<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=(1<<DDD7) | (1<<DDD6) | (1<<DDD5) | (0<<DDD4) | (0<<DDD3) | (0<<DDD2) | (0<<DDD1) | (0<<DDD0);
// State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T
PORTD=(0<<PORTD7) | (0<<PORTD6) | (0<<PORTD5) | (0<<PORTD4) | (0<<PORTD3) | (0<<PORTD2) | (0<<PORTD1) | (0<<PORTD0);

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
TCCR0=(0<<CS02) | (0<<CS01) | (0<<CS00);
TCNT0=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
// OC2 output: Disconnected
ASSR=0<<AS2;
TCCR2=(0<<PWM2) | (0<<COM21) | (0<<COM20) | (0<<CTC2) | (0<<CS22) | (0<<CS21) | (0<<CS20);
TCNT2=0x00;
OCR2=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=(0<<OCIE2) | (0<<TOIE2) | (0<<TICIE1) | (0<<OCIE1A) | (0<<OCIE1B) | (0<<TOIE1) | (0<<TOIE0);

// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
MCUCR=(0<<ISC11) | (0<<ISC10) | (0<<ISC01) | (0<<ISC00);

// USART initialization
// USART disabled
UCSRB=(0<<RXCIE) | (0<<TXCIE) | (0<<UDRIE) | (0<<RXEN) | (0<<TXEN) | (0<<UCSZ2) | (0<<RXB8) | (0<<TXB8);

// 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);
SFIOR=(0<<ACME);

// ADC initialization
// ADC disabled
ADCSRA=(0<<ADEN) | (0<<ADSC) | (0<<ADFR) | (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);

// 1 Wire Bus initialization
// 1 Wire Data port: PORTC
// 1 Wire Data bit: 0
// Note: 1 Wire port settings are specified in the
// Project|Configure|C Compiler|Libraries|1 Wire menu.
w1_init();

 delay_ms(100);
// Determine the number of DS1820 devices
// connected to the 1 Wire bus

lcd_init(16);


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

// DS1307 Real Time Clock initialization for TWI
// Square wave output on pin SQW/OUT: On
// Square wave frequency: 1 Hz

rtc_init(0,1,0);
aa=rtc_read(0); //прочесть нулевой байт
//rtc_write(0,(a&=0b01111111)); //обнулить старший бит(CH) запустить внутренний генератор
 
  rtc_set_time(23, 59, 51);
   rtc_set_date(7,26,3,18);
                //   rtc_write(0,0); //Запуск часов
  devices=w1_search(0xf0,rom_code);   
       sprintf(string1,"Device #%u:",devices);
       
        lcd_puts(string1);
       
           delay_ms(20);
             w1_init();
       
       


          devices=w1_search(0xf0,rom_code);

 
           delay_ms(1900);
while (1)
      {   
     if (PIND.1==0)
   
     {
    lcd_gotoxy(0,0);
    rtc_get_time(&c, &m, &s);
    rtc_get_date(&week_day,&day,&month,&year);

//тут вариант исправления
    if (week_day == 0) {week_day=1; rtc_set_date(week_day,day,month,year);}
     
      // Отформатировали
       
      sprintf(string, "%02i:%02i:%02i=%02i  ", c, m,s, week_day );
     
      // Вывели время
     
      lcd_puts(string); 
       
    lcd_gotoxy(0,1); 
   
         sprintf(string1,"%+.2f\xdf" "C",ds18b20_temperature(&rom_code[0][0])); 

 lcd_puts(string1);
 
   delay_ms(1900);
   
   
   
     timm=c*100+m;
   
     
     }
 ///////////////////////////////////////////////

// тут ниже всякие недоделки


  if (PIND==6){   
lcd_clear();
        rtc_get_time(&hour, &minu, &sec);
         //mm=&minu;   
                 hour++;   
                 if (hour>23){hour=0;}
         rtc_set_time(hour, minu, sec);
         rtc_get_time(&hour, &minu, &sec);   
             lcd_gotoxy(0,0);
  sprintf(string, "%02i:%02i=%02i  ",hour, minu, week_day );
 lcd_puts(string);
     
     
       
       
         delay_ms(200);
   //       #asm("sei")
        }   
          if (PIND==10){
  lcd_clear();
        rtc_get_time(&hour, &minu, &sec);
         //mm=&minu;   
                 minu++;   
                 if (minu>59){minu=0;}
rtc_set_time(hour, minu, sec);
         rtc_get_time(&hour, &minu, &sec);
                     lcd_gotoxy(0,0);
             lcd_gotoxy(0,0);
  sprintf(string, "%02i:%02i=%02i  ", hour, minu, week_day );
 lcd_puts(string);
          delay_ms(200);
       //   #asm("sei")
                                   }
 
 //////////////////////////////////////////
 
          if (PIND==18){
  lcd_clear();
        rtc_get_time(&hour, &minu, &sec);
         //mm=&minu;   
                 minu++;   
                 if (minu>59){minu=0;}
rtc_set_time(hour, minu, sec);
         rtc_get_time(&hour, &minu, &sec);
                     lcd_gotoxy(0,0);
             lcd_gotoxy(0,0);
  sprintf(string, "%02i:%02i=%02i  ", hour, minu, week_day );
 lcd_puts(string);
          delay_ms(200);
       //   #asm("sei")
                                   }
      }
}




Добавлено after 2 minutes 19 seconds:
проект


Вложения:
AAA.rar [20.21 KiB]
Скачиваний: 88
2018-03-29_15-09-12.png [41.06 KiB]
Скачиваний: 384
Вернуться наверх
 
В сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Чт мар 29, 2018 22:34:58 
Друг Кота
Аватар пользователя

Карма: 83
Рейтинг сообщений: 920
Зарегистрирован: Чт апр 11, 2013 11:19:59
Сообщений: 4519
Откуда: Минск
Рейтинг сообщения: 0
Про отступы в коде для его читабельности не в курсе?

Тогда для наглядности взгляните на это и это.

Я бы постыдился такой код выкладывать.

По теме:
Код:
            if (week_day == 0) {
                week_day = 1;
                rtc_set_date(week_day, day, month, year);
            }
Здесь Вы сами и добавляете этот сдвиг. Хотя, технически, 0 в качестве дня недели из часов получаться не должен, и этот код срабатывать тоже.
Нужно просто читать данные из RTC, и всё. Числа в диапазоне 1..7 - это дни недели. По даташиту 1 - это воскресенье, но чистая условность (хотя при эмуляции в Proteus это тоже так).


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Пт мар 30, 2018 08:50:51 
Первый раз сказал Мяу!

Зарегистрирован: Ср окт 21, 2009 11:10:53
Сообщений: 28
Откуда: Минск
Рейтинг сообщения: 0
Цитата:
Хотя, технически, 0 в качестве дня недели из часов получаться не должен, и этот код срабатывать тоже.


В соседней теме результат тот же.
тут
проверено oleg110592
Изображение


Вернуться наверх
 
В сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Пт мар 30, 2018 15:50:15 
Друг Кота
Аватар пользователя

Карма: 83
Рейтинг сообщений: 920
Зарегистрирован: Чт апр 11, 2013 11:19:59
Сообщений: 4519
Откуда: Минск
Рейтинг сообщения: 0
Да, тоже сейчас в своём проекте попробовал выставить 23:59 - текущий день, пятница (число 6 в регистре RTC) так и не переключился на субботу (7). Так что, похоже, Proteus действительно подвирает в этом смысле.

Собственно, предпочитаю в железе прошивки проверять. Это понадёжнее будет.

P.S. остальные байты - дата и прочее, срабатывают нормально.

Для себя, в своих проектах, я вообще не читаю weekday байт из часов в отдельную переменную. Предпочитаю вычислять день недели по дате приблизительно так:
Код:
int8_t rtcWeekDay()
{
    uint8_t a, y, m;
    int8_t ret;

    a = (rtc.month > 2 ? 0 : 1);
    y = 12 + rtc.year - a;
    m = rtc.month + 12 * a - 2;

    ret = (rtc.date + y + (y / 4) + ((31 * m) / 12)) % 7;
    if (ret == 0)
        ret = 7;

    return ret;
}


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

Зарегистрирован: Вт ноя 02, 2010 17:46:37
Сообщений: 568
Рейтинг сообщения: 0
Подскажите в CV есть аналогичный $PROJ_DIR$ как в IAR указывающий путь к текущей папке?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Вс июн 10, 2018 17:51:04 
Вымогатель припоя
Аватар пользователя

Карма: 11
Рейтинг сообщений: 9
Зарегистрирован: Пт фев 22, 2013 18:00:43
Сообщений: 508
Откуда: Беларусь, г. Гомель
Рейтинг сообщения: 0
Срочно нужна помощь Codevision AVRC. На железе не работает, в протеусе все ОК.

Как только отключаю запись в eeprom на железе начинает работать. Подскажите плз. куда рыть? Голову уже сломал ((((

#include <mega8.h>

// Макро-функции для работы с битами, где reg - байт, b - номер бита в байте reg
#define SB(reg, b) reg |= (1<<b) // Установить бит SetBit
#define CB(reg, b) reg &= (~(1<<b)) // Очистить бит ClearBit
#define IB(reg, b) reg ^= (1<<b) // Инвертировать бит InvertBit
#define VB(reg, b) ((reg & (1<<b)) != 0) // Проверить бит VerifyBit

#define SECURITY PINB.3

volatile unsigned char eeprom Err; // Сюда считывается ошибка из энергонезависимой память EEPROM

void WriteEEPROM (unsigned char Flag)
{
while (EECR & (1<<EEWE));
EEAR = 0x00;
EEDR =Flag;
EECR |= (1<<EEMWE);
EECR |= (1<<EEWE);
}

void main(void)
{
PORTB=0x0C; // Настройка портов
DDRB=0x00;
DDRC=0x1F;
PORTC=0x00;
DDRD=0x43;
PORTD=0x04;
GIFR=(1<<INTF0)|(1<<INTF1); // Установить флаг пререрывания INT0 и INT1
MCUCR=(1<<ISC00)|(0<<ISC10)|(0<<ISC11); // Настроить прерывание INT0 по любому состоянию, а прерыввание INT1 по низкому уровню
GICR=(1<<INT0)|(1<<INT1); // Разрешить прерывания INT0, INT1
TCCR0=(1<<CS02)|(1<<CS00); // Настроить TIMER0 на частоту 7812 Гц
TCCR1B=(1<<CS11)|(1<<CS10); // Предделитель TIMER1=64 частота 8000000/64=125000Гц
TCNT0=0x37; // Начальное значение счетчика TIMER0 (переполнение будет происходить 39,06 раз в секунду)
TCNT1=0x00; // Сброс счетчика TIMER1
ICR1=0x00; // Сброс регистра захвата TIMER1
CB(TCCR1B,ICES1); // Устанавливаем прерывание по спадающему фронту импульса
TIMSK=(1<<TICIE1)|(1<<TOIE1)|(1<<TOIE0); // Настроить TIMER0 по переполнению, а TIMER1 по захвату и переполнению
UCSRB=(1<<TXEN); // Разрешить передачу
UCSRC=(1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0); // Работаем с регистром UCSRC|8 бит данных|1 стоп бит
UBRRL=0x33; // Скорость передачи 9600 бит/сек
#asm("sei") // Разрешить внешние прерывания
if (Err==0xFF) WriteEEPROM(0x00); // Если первый запуск контроллера то заменить в EEPROM FF на 00

while (1)
{
if (!SECURITY) {#asm("sei") PORTD.0=1;PORTD.6=1;} else {#asm("cli") PORTD.0=0;PORTD.6=0;}
}
}


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

Зарегистрирован: Пн янв 24, 2011 01:51:48
Сообщений: 188
Откуда: Украина, Киев
Рейтинг сообщения: 0
Как только отключаю запись в eeprom...
https://www.drive2.ru/b/1299334/


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

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


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8


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

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


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