существует, но не рекомендую - косяков в нём много, лучше грызть технический инглиш, потихоньку он пойдёт, да и потом всёравно его учить придётся - сейчас без него никуда...
_________________ Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Заголовок сообщения: 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); книги которые вы посоветовали скачал и даже начал читать но мне кажется начал еще больше запутываться. И на данном этапе хочу хотя бы откомпилировать программу и загрузить ее в протеус и хотя бы увидеть в чем проблема, просматривая по шагам.
Заголовок сообщения: 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 : я так понимаю, что это макрос неправильно я записал.
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
я так понимаю, что это макрос неправильно я записал
нет, вы неверно макрос применили. PORT.x в нотации CVAVR (это не язык Си!!!) не является константой, а в качестве case-ветвей оператора switch допустимы только константные выражения.
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Заголовок сообщения: 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" и сохраним соотвествующие переменные }
нет, неправильно: 1) надо указывать конкретную ногу: DDRD.1 = 0; (в вашем случае на вход переключится весь порт (8 ног)). 2) нужно выключить возможно включенную подтяжку PORTD.1 = 0; так я в кодевижне перевёл 1 ногу порта д в z состояние. а зачем вам z состояние?
разрыв с чем? Не забывайте, кроме отключенного порта остаются как минимум защитные диоды (также периферия иногда может на ноги влиять)
_________________ Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
спрашивал в теме про 1307, спршу тут: DS1307+CVAVR3.22+Proteus8 чтобы не заморачиваться кодом решил использовать счетчик "день недели" из самой 1307 (естественно записав в нее правильные время, дату и день недели. При переходе на новые сутки счетчик автоматом прибавляет к week_day единицу и при опросе таймера показания выводятся на экранчик. если установить "6" (суббота) то следующее значение будет "7" т.е. воскресенье... а потом следующее "0" ...задумался ))) это у кого глюки? ps пробовал считать и вскр = 1, результат тот же - после 7-го дня начинается с ноля
// 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);
// 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
Здесь Вы сами и добавляете этот сдвиг. Хотя, технически, 0 в качестве дня недели из часов получаться не должен, и этот код срабатывать тоже. Нужно просто читать данные из RTC, и всё. Числа в диапазоне 1..7 - это дни недели. По даташиту 1 - это воскресенье, но чистая условность (хотя при эмуляции в Proteus это тоже так).
Да, тоже сейчас в своём проекте попробовал выставить 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;
Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
Добавлено: Вс июн 10, 2018 17:51:04
Вымогатель припоя
Карма: 13
Рейтинг сообщений: 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
Сейчас этот форум просматривают: Starichok51 и гости: 46
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения