существует, но не рекомендую - косяков в нём много, лучше грызть технический инглиш, потихоньку он пойдёт, да и потом всёравно его учить придётся - сейчас без него никуда...
_________________ Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Заголовок сообщения: 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
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения