Поиск по сайту

Результаты поиска по тегам 'CVAVR'.

  • Поиск по тегам

    Введите теги через запятую.
  • Поиск по автору

Тип публикаций


Категории и разделы

  • Вопрос-Ответ. Для начинающих
    • Песочница (Q&A)
    • Дайте схему!
    • Школьникам и студентам
    • Начинающим
    • Паяльник TV
    • Обсуждение материалов с сайта
  • Радиоэлектроника для профессионалов
    • Световые эффекты и LED
    • Роботы и модели на ДУ-управлении
    • Автоматика
    • Самодельные устройства к компьютеру
    • Программное обеспечение
    • Автомобильная электроника
    • Системы охраны и наблюдения. Личная безопасность
    • Питание
    • Электрика
    • Промышленная электроника
    • Ремонт
    • Металлоискатели
    • Измерительная техника
    • Мастерская радиолюбителя
    • Сотовая связь
    • Спутниковое ТВ
    • КВ и УКВ радиосвязь
    • Жучки
    • Телефония и фрикинг
    • Высокое напряжение
    • Идеи и технологии будущего
    • Справочная радиоэлементов
    • Литература
    • Разное
  • Аудио
    • FAQ, Технологии и компоненты
    • Для начинающих
    • Источники звука
    • Предусилители, темброблоки, фильтры
    • Питание аудио аппаратуры
    • Усилители мощности
    • Акустические системы
    • Авто-аудио
    • Ламповая техника
    • Гитарное оборудование
    • Прочее
  • Микроконтроллеры
    • МК для начинающих
    • AVR
    • PIC
    • STM32
    • Arduino и Raspberry Pi
    • ПЛИС
    • Другие микроконтроллеры и семейства
    • Алгоритмы
    • Программаторы и отладочные модули
    • Периферия и внешние устройства
    • Разное
  • Товары и услуги
    • Коммерческие предложения
    • Продам-Отдам, Услуги
    • Куплю
    • Уголок потребителя
    • Вакансии и разовая работа
    • Наши обзоры и тесты
  • Разное
    • Конкурсы сайта с призами
    • Сайт Паяльник и форум
    • Курилка
    • Технический английский (English)
    • Наши проекты для Android и Web
    • FAQ (Архив)
    • Личные блоги
    • Корзина
    • Вопросы с VK
  • ATX->ЛБП Переделки
  • Юмор в youtube Киловольты юмора
  • Надежность и группы продавцов Радиолюбительская доска объявлений exDIY
  • разные темы Переделки

Блоги

Нет результатов для отображения.

Нет результатов для отображения.

Местоположения

  • Пользователи форума

Группа


ICQ


Skype


Интересы


Город


Сфера радиоэлектроники


Оборудование

Найдено 11 результатов

  1. Прогресс бар в CVAVR

    Уважаемые электроники-программисты. Кто силен в CVAVR? Или может кто подскажет где уже есть. Есть вот такой прогресс бар https://radioparty.ru/programming/avr/c/361-lesson-lib-lcd написанный в Atmel Studio. Но у меня весь проект в CVAVR, попытался привязать его, но не поддается он мне. Помогите или дайте вектор. На Ардуино много, но там для меня совсем темень
  2. Програмный UART CVAVR

    Всем привет. Сделал устройство с семисегментным индикатором,но понадобилось снимаемые значения еще и на пк выводить. А порт UART'а занят,связь нужна симплексная,т.е. в одну сторону. Можно ли как-то вывести инфу на порт В0?Или проще задействовать реализацию железа,а индикатор перебросить на другие порты?
  3. CVAvr Uart Нужна помощь

    Всем привет. CVAVR начал осваивать только недавно. Да и вообще раньше не особо работал с UART. Такой вопрос. Допустим по UART приходят строки типа: T:21.33 E:0 B:73.0 T:21.29 E:0 B:73.1 T:21.25 E:0 B:73.2 Каким образом можно вытягивать нужную информацию? С последующим выводом в нужные места? Можете показать пример и тыкнуть носом? Заранее спасибо за помощь!
  4. Помощь по CVAVR

    подскажите, уважаемые форумчане, заработает ли такая программа? суть её такова: подключаем матричную клавиатуру, 4х3, считываем с неё нажатия кнопок, которые соответствуют цифрам собираем 3-х значное число, которое затем нужно конвертировать из 10-й в 16-ю систему счисления p.s. только начал кодить, поэтому ОЧЕНЬ! прошу: если имеются ошибки, покажите как было и как должно быть, желательно с пояснениями заранее благодарю new.c
  5. Всем доброго дня! Необходима помощь по переносу кода на CVAVR. За основу взята плата и исходники с сайта:http://garydion.com/...ts/videoverlay/ Мой код в CVAVR выглядит так: #include <mega8.h> #define WatchdogReset() #asm("wdr") #define Wait() while(!(SPSR & (1<<SPIF))) //Статические функции и переменные unsigned char line; /* Номер строки*/ unsigned char i; short ltemp; short ntemp; unsigned char head[] = "NGTXI@BALLOON@"; unsigned char spd[] = "162"; unsigned char hdg[] = "281"; unsigned char time[] = "145446"; unsigned char date[] = "122504"; unsigned char lat[] = "@3435.68N"; unsigned char lon[] = "08918.75W"; /* ' ' A B C D E F G H I J K L M N O P Q R S T U V W X Y Z */ unsigned char ltrs[189] = { 255,231,131,195,135,129,129, 195,189,131,129,189,191,125, 125,195,131,195,131,195,131, 189,189,125,125,125, 1,255, 219,189,189,187,191,191,189, 189,239,247,187,191, 57, 61, 189,189,189,189,189,239,189, 189,125,187,187,251,255,189, 189,191,189,191,191,191,189, 239,247,183,191, 85, 93,189, 189,189,189,191,239,189,189, 109,215,215,247,255,189,131, 191,189,131,131,177,129,239, 247,143,191,109,109,189,131, 189,131,195,239,189,219,109, 239,239,239,255,129,189,191, 189,191,191,189,189,239,247, 183,191,125,117,189,191,179, 183,253,239,189,219,109,215, 239,223,255,189,189,189,187, 191,191,189,189,239,183,187, 129,125,121,189,191,185,187, 189,239,189,219,147,187,239, 191,255,189,131,195,135,129, 191,195,189,131,207,189,129, 125,125,195,191,205,189,195, 239,195,231,147,125,239, 1}; /* - . / 0 1 2 3 4 5 6 7 8 9 : */ unsigned char nums[98] = { 255,255,207,131,239,131,131, 227, 1,131, 1,131,131,255, 255,255,187,125,207,125,125, 219,127,127,253,125,125,239, 255,255,187,125,239,253,253, 187,127,127,251,125,125,255, 131,255,207,125,239,243,227, 123,131, 3,247,131,129,255, 255,255,255,125,239,207,253, 1,253,125,239,125,251,255, 255,231,255,125,239,191,125, 251,125,125,239,125,247,239, 255,231,255,131,199, 1,131, 251,131,131,239,131,207,255}; interrupt [EXT_INT0] void ext_int0_isr(void) { line++; TCNT0 = 135; if (line > 220) TCNT0 = 172; if (line > 230) TCNT0 = 175; if (line > 240) TCNT0 = 185; TIFR |= 1<<TOV0; TIMSK |= 1<<TOIE0; //Включить прерывание таймера №0 } interrupt [EXT_INT1] void ext_int1_isr(void) { line = 0; } interrupt [TIM0_OVF] void timer0_ovf_isr(void) { TIMSK &= ~(1<<TOIE0); //Выключить прерывание таймера №0 if ((line > 40) && (line < 48)) { SPSR = 0; ltemp = (line - 41) * 27 - 64; ntemp = (line - 41) * 14 - 45; DDRD = 0x80; for (i=0;i<=12;i++) {SPDR = ltrs[head[i] + ltemp];Wait();}; DDRD = 0x00; } if ((line > 220) && (line < 228)) { ltemp = (line - 221) * 27 - 64; ntemp = (line - 221) * 14 - 45; SPSR = 1; // Включение узкого шрифта DDRD = 0x80; SPDR = ltrs['S' + ltemp]; Wait();/*Вывод символа S */ SPDR = nums[':' + ntemp]; Wait();/*Вывод символа : */ SPDR = nums[spd[0] + ntemp]; Wait();/*Вывод символа 1 */ SPDR = nums[spd[1] + ntemp]; Wait();/*Вывод символа 6 */ SPDR = nums[spd[2] + ntemp]; Wait();/*Вывод символа 2 */ SPDR = ltrs['@' + ltemp]; Wait();/*Вывод '@'-пробел */ SPDR = ltrs['H' + ltemp]; Wait();/*Вывод символа H */ SPDR = nums[':' + ntemp]; Wait();/*Вывод символа : */ SPDR = nums[hdg[0] + ntemp]; Wait();/*Вывод символа 2 */ SPDR = nums[hdg[1] + ntemp]; Wait();/*Вывод символа 8 */ SPDR = nums[hdg[2] + ntemp]; Wait();/*Вывод символа 1 */ SPDR = ltrs['@' + ltemp]; Wait();/*Вывод '@'-пробел */ SPDR = ltrs['A' + ltemp]; Wait();/*Вывод символа A */ SPDR = nums[':' + ntemp]; Wait();/*Вывод символа : */ SPSR = 0;// Выключение узкого шрифта SPDR = nums[time[0] + ntemp]; Wait();/*Вывод символа 1 */ SPDR = nums[time[1] + ntemp]; Wait();/*Вывод символа 4 */ SPDR = nums[time[2] + ntemp]; Wait();/*Вывод символа 5 */ SPDR = nums[time[3] + ntemp]; Wait();/*Вывод символа 4 */ SPDR = nums[time[4] + ntemp]; Wait();/*Вывод символа 4 */ SPDR = nums[time[5] + ntemp]; Wait();/*Вывод символа 6 */ DDRD = 0x00; } if ((line > 230) && (line < 238)) { ltemp = (line - 231) * 27 - 64; ntemp = (line - 231) * 14 - 45; SPSR = 1; // Включение узкого шрифта */ DDRD = 0x80; SPDR = nums[time[0] + ntemp]; Wait();/*Вывод символа 1 */ SPDR = nums[time[1] + ntemp]; Wait();/*Вывод символа 4 */ SPDR = nums[':' + ntemp]; Wait();/*Вывод символа : */ SPDR = nums[time[2] + ntemp]; Wait();/*Вывод символа 5 */ SPDR = nums[time[3] + ntemp]; Wait();/*Вывод символа 4 */ SPDR = nums[':' + ntemp]; Wait();/*Вывод символа : */ SPDR = nums[time[4] + ntemp]; Wait();/*Вывод символа 4 */ SPDR = nums[time[5] + ntemp]; Wait();/*Вывод символа 6 */ SPDR = ltrs['@' + ltemp]; Wait();/*Вывод '@'-пробел */ SPSR = 0;// Выключение узкого шрифта SPDR = ltrs[lat[0] + ltemp]; Wait();/*Вывод '@'-пробел */ SPDR = nums[lat[1] + ntemp]; Wait();/*Вывод символа 3 */ SPDR = nums[lat[2] + ntemp]; Wait();/*Вывод символа 4 */ SPSR = 1; // Включение узкого шрифта SPDR = nums['/' + ntemp]; Wait();/*Вывод символа ° */ SPSR = 0;// Выключение узкого шрифта SPDR = nums[lat[3] + ntemp]; Wait();/*Вывод символа 3 */ SPDR = nums[lat[4] + ntemp]; Wait();/*Вывод символа 5 */ SPSR = 1; // Включение узкого шрифта SPDR = nums[lat[5] + ntemp]; Wait();/*Вывод символа . */ SPSR = 0;// Выключение узкого шрифта SPDR = nums[lat[6] + ntemp]; Wait();/*Вывод символа 6 */ SPDR = nums[lat[7] + ntemp]; Wait();/*Вывод символа 8 */ DDRD = 0x00; } if ((line > 240) && (line < 248)) { ltemp = (line - 241) * 27 - 64; ntemp = (line - 241) * 14 - 45; SPSR = 1; // Включение узкого шрифта */ DDRD = 0x80; SPDR = nums[date[0] + ntemp]; Wait();/*Вывод символа 1 */ SPDR = nums[date[1] + ntemp]; Wait();/*Вывод символа 2 */ SPDR = nums['-' + ntemp]; Wait();/*Вывод символа - */ SPDR = nums[date[2] + ntemp]; Wait();/*Вывод символа 2 */ SPDR = nums[date[3] + ntemp]; Wait();/*Вывод символа 5 */ SPDR = nums['-' + ntemp]; Wait();/*Вывод символа - */ SPDR = nums[date[4] + ntemp]; Wait();/*Вывод символа 0 */ SPDR = nums[date[5] + ntemp]; Wait();/*Вывод символа 4 */ SPDR = ltrs['@' + ltemp]; Wait();/*Вывод '@'-пробел */ SPSR = 0;// Выключение узкого шрифта SPDR = nums[lon[0] + ntemp]; Wait();/*Вывод символа 0 */ SPDR = nums[lon[1] + ntemp]; Wait();/*Вывод символа 8 */ SPDR = nums[lon[2] + ntemp]; Wait();/*Вывод символа 9 */ SPSR = 1; // Включение узкого шрифта SPDR = nums['/' + ntemp]; Wait(); /*Вывод символа ° */ SPSR = 0;// Выключение узкого шрифта SPDR = nums[lon[3] + ntemp]; Wait();/*Вывод символа 1 */ SPDR = nums[lon[4] + ntemp]; Wait();/*Вывод символа 8 */ SPSR = 1; // Включение узкого шрифта SPDR = nums[lon[5] + ntemp]; Wait();/*Вывод символа . */ SPSR = 0;// Выключение узкого шрифта SPDR = nums[lon[6] + ntemp]; Wait();/*Вывод символа 7 */ SPDR = nums[lon[7] + ntemp]; Wait();/*Вывод символа 5 */ DDRD = 0x00; } } void main(void) { // Описание локальных переменных // Port B initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=P State6=P State5=P State4=P State3=P State2=P State1=P State0=P PORTB = 0x00; DDRB = 0xFF; // Port D initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTD=0x00; DDRD=0x00; // Timer/Counter 0 initialization // Clock source: System Clock // Clock value: 2000,000 kHz TCCR0=0x02; TCNT0=0x00; // Timer/Counter 1 initialization // Clock source: System Clock // Clock value: 2000,000 kHz // Mode: Normal top=0xFFFF // OC1A output: Discon. // OC1B output: Discon. // 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=0x00; TCCR1B=0x02; TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x02; // Timer/Counter 2 initialization // Clock source: System Clock // Clock value: 15,625 kHz // Mode: Normal top=0xFF // OC2 output: Disconnected ASSR=0x00; TCCR2=0x07; TCNT2=0x00; OCR2=0x00; // External Interrupt(s) initialization // INT0: On // INT0 Mode: Falling Edge // INT1: On // INT1 Mode: Falling Edge GICR|=0xC0;//GICR=(1<<INT0)+(1<<INT1); MCUCR=0x0A;//MCUCR=(1<<ISC01)+(1<<ISC11); GIFR=0xC0; // Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x01; // SPI initialization // SPI disabled SPCR=0x54;//SPCR=/*(1<<SPIE)|*/(1<<SPE) | (1<<MSTR) | (1<<CPHA); SPSR=0x01;//SPSR= (1<<SPI2X); // Analog Comparator initialization ACSR=0x48; //ACSR = (1<<ACBG) | (1<<ACIE); SFIOR=0x00; // Watchdog Timer initialization // Watchdog Timer Prescaler: OSC/2,048K #pragma optsize- WDTCR=0x18; // Wake-up the watchdog register WDTCR=0xff; // Enable and timeout around 2.1s #ifdef _OPTIMIZE_SIZE_ #pragma optsize+ #endif // Global enable interrupts #asm("sei") // Reset watchdog WatchdogReset(); while (1) { } } Проблема в следующем: при прошивке МК кодом автора, плата(макетная) прекрасно работает (Частота 16MHz), но скомпилированной прошивкой в CVAVR нет. Символы размыты и не читабельны, да и к тому же строки с символами дрожат. Оптимизация кода по скорости в настройках компилятора. Есть предположение что не дописано: режим сна таймера... Подскажи мою ошибку,что сделано не так? Направьте в нужное русло. Исходный авторские файлы: overlay.zip Мои тестовые файлы: test.zip
  6. Доброй ночи уважаемые! Я целый вечер долбусь уже , и не могу решить этот ребус.... Есть файл m32.c , в нем подключаю такие библиотеки: #include <mega32a.h> #include <delay.h> #include "I2C.h" #include "ds1307.h" в файле "ds1307.h" на сколько я понял - подключается файл .lib и описываются функции этого файла. вот содержимое: в файле "I2C.h" такое содержимое: в файле ds1307.lib такое содержимое: ЕСЛИ отрубить в файле m32.c библиотеку: #include "I2C.h" то все компилируется нормально. Но мне ее надо подключить к этому файлу! Так как мне из этой библиотеки надо инициализировать i2C модуль функция // I2C Bus initialization i2c_init_(); если подключаю эту библиотеку - ругается , мол повторное объявление функций что ли... если отключаю эту библиотеку но функция i2c_init_() прописана - то вываливает ошибку : типа , не известные символы ))) я в шоке .... как обойти эту проблему? Только в CVAVR сталкиваюсь с таким геморроем... Заранее спасибо за помощь. Обошел этот костыль так: в файле ds1307.lib прописал: void rtc_bus_init() { i2c_init_(); } в файле ds1307.h показал эту функцию. и потом ее прописал в основном файле ))) выглядит криво , но зато работает.
  7. Доброго времени суток. Самостоятельно изучаю CVAVR. Сейчас делаю себе цифровую приборку в автомобиль. Есть вопрос по измерению уровня топлива в баке. В основе лежит емкостный ДУТ. В зависимости от уровня топлива он выдает от 0 до 5В на выходе. При 0В - бак пустой, при 5В - бак полный. Вроде бы все просто - бак имеет правильную форму, емкость - 40Л. Достаточно измерять результат и умножить его на 8 - получим уровень топлива в литрах. Но на практике нужно делать нечто вроде тарировочной таблицы. В этой таблице определенному напряжению на входе АЦП должен соответствовать определенный уровень. Как это сделать программно - опыта не хватает. В интернете и на форуме ничего подобного не нашел. Как правильно это сделать? Привожу свой рабочий код, точнее его кусок отвечающий за топливо, сейчас приборка работает "по простому": i=0; while(i<127) { result=((5.00*adc_data[1])/255.00); //Заполняем массив результатами измерений result=result*8; i++; } i=0; real=0; while(i<127) { real=real+result; //Суммируем значения из массива i++; } { real=real/127; //Делим сумму на колличество элементов и получаем среднее значение АЦП sprintf(lcd_bufferA,"%.0f",real); //Форматируем строку и помещаем ее в буфер АЦП }
  8. Прошу не пинать сильно и по возможности указать где черпать более правильную инфу. Использую книгу "Разработка уст-в на мк AVR. А.В.Белов. Встала поблема при использовании конструкции if else. Привожу код созданый в CVAVR #include <mega32a.h> void main(void) { #define kn1 PINB.4 #define kn2 PINB.5 #define kn3 PIND.0 #define kn4 PIND.1 #define kn5 PIND.2 #define led1 PORTA.6 #define led2 PORTA.4 #define led3 PORTA.3 #define led4 PORTA.2 #define led5 PORTA.1 PORTA=0x00; DDRA=0xFF; PORTB=0xF0; DDRB=0x0F; PORTC=0xFF; DDRC=0x00; PORTD=0xFF; DDRD=0x00; TCCR0=0x00; TCNT0=0x00; OCR0=0x00; TCCR1A=0x00; TCCR1B=0x00; TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00; ASSR=0x00; TCCR2=0x00; TCNT2=0x00; OCR2=0x00; MCUCR=0x00; MCUCSR=0x00; TIMSK=0x00; UCSRB=0x00; ACSR=0x80; SFIOR=0x00; ADCSRA=0x00; SPCR=0x00; TWCR=0x00; while (1) { if ( kn1 == 0 ) led1 = 1; else led1 =0; if ( kn2 == 0 ) led1 = 1; else led1 =0; } } Проблема ледующая: данная конструкция работает при использовании только одной конструкции if else. Если их более одной то происходят судеса. При нажатии kn1 светодиод led5 начинает мигать, а при нажатии kn2 светодиод led6 светит неприрывно до момента отпускания кнопки kn2. Проверял в протеусе и на мекетной плате результат идентичен. Конечным результатом было желание получить следующий алгоритм работы: 1 при нажатии kn1 светит led1 пока держим кнопку 2 при нажатии kn2 засвечивается led2 и при отпускании кнопки kn2 светодиод led2 продолжает светить 3 кнопка kn3 для выключения светодиода led2 4 исключить возможность подавать команды kn1 при работе светодиода led2 Нашел на форуме Atmega8 Включение Реле. сделал аналогично, не помогло.
  9. Всем Привет! Вообщем надо сделать часы на atmega8 или attiny2313 читал что можно прерывать от резонатора на 32кгц. ещё нужно настраивать внутренний RC генератор фьюзами. Кто может разъясните подробнее, на CVAVR конечно. Можно конечно с помощью DS1307, но я тоже не могу конкретно найти как. главное чтоб более-мение точные часы(просто часы минуты секунды) паролельно должна выполняться программа, так что прерывать необходимо.
  10. Подскажите пожалуйста, где ошибка. Программа откомпилирована как она тут есть. В протеусе без помеченной строчки на выводах порта Б "бегают" сигналы . #include <tiny2313.h> void main(void){ PORTB=0x00; DDRB=0xFF; PORTD=0b0000000; DDRD=0b0001111;// с этой строчкой не работает. TCCR0B=0x01; TIMSK=0x02; while (1) { PORTB++; }; } если вместо DDRD=0b0001111 написать DDRD.x для каждого бита то выясняется что "виноват" бит PD2 если в протеусе "оторвать" эту ногу то все работает! может "виновато" иное предназначение ноги?
  11. Подскажите По At2313 В Cvavr

    Доброго времени суток. Может кто подсказать? cvavr сгенерировал код, я подкорректировал его, решил посмотреть - как работает таймер в 2313- посмотреть в протеусе если на выводы порта прицепить таймер: #include <tiny2313.h> #include <delay.h> // Declare your global variables here void main(void) { // Crystal Oscillator division factor: 1 #pragma optsize- CLKPR=0x80; CLKPR=0x00; #ifdef _OPTIMIZE_SIZE_ #pragma optsize+ #endif PORTB=0x00; DDRB=0xFF; // Timer/Counter 0 initialization // Clock source: System Clock // Clock value: Timer 0 Stopped // Mode: Normal top=FFh TCCR0A = 0b00000000; TCCR0B = 0b00000101; TCNT0=0x00; GIMSK=0x00; MCUCR=0x00; // Timer(s)/Counter(s) Interrupt(s) initialization TIMSK = 0b00000010; while (1) { PORTB = TCNT0; delay_ms(50); }; } ошибок не выдает, на выходе порта что-то меняется- но в произвольном порядке! а должен вроде считать. паузу ввел для наглядности. где я не прав?