CodeVision AVR в вопросах и ответах

Обсуждаем контроллеры компании Atmel.
HHIMERA
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

Re: CodeVision AVR в вопросах и ответах

Сообщение HHIMERA »

Кейл... хотя без разницы...
Не знаю что такое Протеус... только железо и логический анализатор...
"Я не даю готовых решений, я заставляю думать!"(С)
amd9800
Опытный кот
Сообщения: 822
Зарегистрирован: Вс июн 02, 2013 12:23:03

Re: CodeVision AVR в вопросах и ответах

Сообщение amd9800 »

HHIMERA писал(а):Не знаю что такое Протеус...

Как такое может быть что вы не знаете.
Proteus (система автоматизированного проектирования)
Отличительной чертой пакета PROTEUS VSM является возможность моделирования работы программируемых устройств: микроконтроллеров, микропроцессоров, DSP и проч.
Аватара пользователя
oleg110592
Друг Кота
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Re: CodeVision AVR в вопросах и ответах

Сообщение oleg110592 »

Для STM32 абсолютно не нужен, очень дорогой или криво сломанный Протеус. Для них существует дешёвый покупной или самодельный программатор/отладчик, позволяющий вести отладку программы непосредственно в железе, а не в виртуальной среде - это, поверьте, переносит процесс работы на совсем другой уровень.
amd9800
Опытный кот
Сообщения: 822
Зарегистрирован: Вс июн 02, 2013 12:23:03

Re: CodeVision AVR в вопросах и ответах

Сообщение amd9800 »

Отсюда пожалуйста поподробней.
Дайте пару ссылок на эти устройства.
HHIMERA
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

Re: CodeVision AVR в вопросах и ответах

Сообщение HHIMERA »

Не... ну... "Нужно иметь свою совесть, чтобы не иметь совесть других!"(С)...
Тема то про другое... для STM есть другие разделы и ветки...
Поиском... клон ST-Link... На ИзыйдиЭлектороник у ДиАхтунга точно есть... там же на Вики тоже было...
http://forum.easyelectronics.ru/viewtop ... 27aa8337b5
Обходится в копейки... и делается за один вечер...

=========
Сегодня с утра ещё одна мысль стрельнула по поводу семисегиентников на 74HC595... но озвучивать здесь не буду... во избежание...
"Я не даю готовых решений, я заставляю думать!"(С)
ipf
Встал на лапы
Сообщения: 131
Зарегистрирован: Вт сен 20, 2011 18:41:41
Откуда: Вьетнам

Re: CodeVision AVR в вопросах и ответах

Сообщение ipf »

Подскажите пожалуйста , как мне вставить еще одно условие в код. Сейчас если Dat1 ==0 то весь код выполняется , а мне нужно чтобы он выполнялся на половину , и затем ждал следующего условия

Код: Выделить всё

if(dat1==0)
    {
        delay_ms(50);     
        if (effect==1)   
        {
            if (EditMode ) return;
                 for (mask = x; mask; mask >>= 1)             
                 led_on(mask);
                 wait();
                 }     
                  delay_ms(1000);      // ВОТ тут вставить еще одно условие, например if(dat2==0)
                 for (mask = x; mask; mask >>= 1)
                 {
                 led_off(mask);
                 wait();
                 }
               
        }
   
Onkel
Открыл глаза
Сообщения: 68
Зарегистрирован: Вс июн 20, 2010 17:49:47

Re: CodeVision AVR в вопросах и ответах

Сообщение Onkel »

думаю так пойдет

delay_ms(1000);
while(dat2!=0) ;

мк на while(dat2!=0) ; будет висеть пока dat2 не станет 0
Фонтаны на Outlet Village Белая Дача, г Наро- Фоминск
Цех упаковки стройматериалов
Цех пиролиза покрышек с крекингом и ректификацией
Серийные приборы "Умный Дом" Uniel
Премия первой степени "Больше чем профессия" 2016 г
ipf
Встал на лапы
Сообщения: 131
Зарегистрирован: Вт сен 20, 2011 18:41:41
Откуда: Вьетнам

Re: CodeVision AVR в вопросах и ответах

Сообщение ipf »

Onkel писал(а):думаю так пойдет

delay_ms(1000);
while(dat2!=0) ;

мк на while(dat2!=0) ; будет висеть пока dat2 не станет 0

Спасибо огромное. Работает :)
Аватара пользователя
levaclaus
Потрогал лапой паяльник
Сообщения: 302
Зарегистрирован: Пн янв 07, 2008 16:56:28
Откуда: Минск

Re: CodeVision AVR в вопросах и ответах

Сообщение levaclaus »

на atmega16 чета не получается ацп запустить
Задача померить напряжение на PA3, он же ADC3
AREF и AVCC +5вольт

Код: Выделить всё

#include <mega16.h>
#include <delay.h>

// Alphanumeric LCD Module functions
#asm
   .equ __lcd_port=0x15 ;PORTC
#endasm
#include <lcd4x40.h>
#include <stdio.h> //Библиотека ввода-вывода
char lcd_buffer[35];             
float result;
// Declare your global variables here

#define FIRST_ADC_INPUT 3
#define LAST_ADC_INPUT 3
unsigned int adc_data[LAST_ADC_INPUT-FIRST_ADC_INPUT+1];
// Voltage Reference: AREF pin
#define ADC_VREF_TYPE ((0<<REFS1) | (0<<REFS0) | (0<<ADLAR))

// ADC interrupt service routine
// with auto input scanning
interrupt [ADC_INT] void adc_isr(void)
{
static unsigned char input_index=0;
// Read the AD conversion result
adc_data[input_index]=ADCW;
// Select next ADC input
if (++input_index > (LAST_ADC_INPUT-FIRST_ADC_INPUT))
   input_index=0;
ADMUX=(FIRST_ADC_INPUT | ADC_VREF_TYPE)+input_index;
// Delay needed for the stabilization of the ADC input voltage
delay_us(10);
// Start the AD conversion
ADCSRA|=(1<<ADSC);
}

void main(void)
{
// Declare your local variables here

// ADC initialization
// ADC Clock frequency: 125,000 kHz
// ADC Voltage Reference: AREF pin
// ADC Auto Trigger Source: ADC Stopped
ADMUX=FIRST_ADC_INPUT | ADC_VREF_TYPE;
ADCSRA=(1<<ADEN) | (1<<ADSC) | (0<<ADATE) | (0<<ADIF) | (1<<ADIE) | (1<<ADPS2) | (1<<ADPS1) | (1<<ADPS0);
SFIOR=(0<<ADTS2) | (0<<ADTS1) | (0<<ADTS0);

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

lcd_init();


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

while (1)
      {
        lcd_gotoxy(0,0);
      result=((5.00*adc_data[0])/1024.00);
      sprintf(lcd_buffer,"U=%.2fV",result);
      lcd_puts(lcd_buffer);

      }
}
Аватара пользователя
WiseLord
Друг Кота
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск
Контактная информация:

Re: CodeVision AVR в вопросах и ответах

Сообщение WiseLord »

В целом ход мыслей понятный, но как-то не совсем красиво это, на мой взгляд, - в обработчике прерывания делать задержку в 10мкс и стартовать новое измерение. Возможно, где-то тут всё виснет (правда, симптомы "не работает" не описаны). Лучше периодически запускать преобразование по прерыванию от таймера.
Аватара пользователя
levaclaus
Потрогал лапой паяльник
Сообщения: 302
Зарегистрирован: Пн янв 07, 2008 16:56:28
Откуда: Минск

Re: CodeVision AVR в вопросах и ответах

Сообщение levaclaus »

Честно говоря, не понял что произошло - но заработало
А нет, понял, в настройках проекта изменил (s)printf Features: int, width на float, width, precision

только вот памяти отхапало это многовато, есть другие варианты?

Код: Выделить всё

float result;
char lcd_buffer[5];

***

#define FIRST_ADC_INPUT 3
#define LAST_ADC_INPUT 3
unsigned int adc_data[LAST_ADC_INPUT-FIRST_ADC_INPUT+1];
// Voltage Reference: AVCC pin
#define ADC_VREF_TYPE ((0<<REFS1) | (1<<REFS0) | (0<<ADLAR))

// ADC interrupt service routine
// with auto input scanning
interrupt [ADC_INT] void adc_isr(void)
{
static unsigned char input_index=0;
// Read the AD conversion result
adc_data[input_index]=ADCW;
// Select next ADC input
if (++input_index > (LAST_ADC_INPUT-FIRST_ADC_INPUT))
   input_index=0;
ADMUX=(FIRST_ADC_INPUT | ADC_VREF_TYPE)+input_index;
// Delay needed for the stabilization of the ADC input voltage
delay_us(10);
// Start the AD conversion
ADCSRA|=(1<<ADSC);
}

****

// ADC initialization
// ADC Clock frequency: 125,000 kHz
// ADC Voltage Reference: AVCC pin
// ADC Auto Trigger Source: ADC Stopped
ADMUX=FIRST_ADC_INPUT | ADC_VREF_TYPE;
ADCSRA=(1<<ADEN) | (1<<ADSC) | (0<<ADATE) | (0<<ADIF) | (1<<ADIE) | (1<<ADPS2) | (1<<ADPS1) | (1<<ADPS0);
SFIOR=(0<<ADTS2) | (0<<ADTS1) | (0<<ADTS0);



****
 
       
      result=((5.00*adc_data[0])/1024.00); //пересчитываем значение АЦП в вольты
 sprintf(lcd_buffer,"U=%.2fV",result);   //помещаем во временную переменную результат
 lcd_puts(lcd_buffer);                          //выводим на экран
Последний раз редактировалось ibiza11 Пт авг 22, 2014 15:10:42, всего редактировалось 1 раз.
Причина: для оформления кода используйте тег [code]
misterkuk
Мучитель микросхем
Сообщения: 400
Зарегистрирован: Сб апр 17, 2010 10:30:13
Контактная информация:

Re: CodeVision AVR в вопросах и ответах

Сообщение misterkuk »

Подскажите. В codevision avr для меги8 Объявляю:

Код: Выделить всё

int peremennaya1;
char peremennaya2;

В процессе работы программы туда помещается число, после чего мне нужно сохранить эти переменные в EEPROM.
После включения проца нужно их считать. и продолжить с ними работу.
Библиотеки не нашол. На форумах Для этой среды ничего вразумительного тоже. Объясните как это организовать.
jazz393
Встал на лапы
Сообщения: 118
Зарегистрирован: Ср фев 05, 2014 18:54:39

Re: CodeVision AVR в вопросах и ответах

Сообщение jazz393 »

Добрый день, у меня такой вопрос:
есть структура

Код: Выделить всё

struct st
{
unsigned char A[8];
unsigned char B[8];
unsigned char C[8];
} state;

мне необходимо записать в eeprom массив из 100 таких структур(причем инициилизировав их сразу одинаковыми значениями), с возможностью их чтения и перезаписи
не получается даже объявить массив

Код: Выделить всё

__eeprom struct st structProg[100];
a_skr
Вымогатель припоя
Сообщения: 630
Зарегистрирован: Пн июн 14, 2010 13:07:29
Откуда: Жуковский

Re: CodeVision AVR в вопросах и ответах

Сообщение a_skr »

А что за AVR контроллер с 2400 байт EEPROM? ;)
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: CodeVision AVR в вопросах и ответах

Сообщение Аlex »

1. Что значит "не получается" ? По-подробнее нельзя расписать ? :)
2. Хватит ли в Вашем камне памяти EEPROM ? В Вашем случае, её нужно 2.4 Кб.
3. Попробуйте через typedef.
a_skr
Вымогатель припоя
Сообщения: 630
Зарегистрирован: Пн июн 14, 2010 13:07:29
Откуда: Жуковский

Re: CodeVision AVR в вопросах и ответах

Сообщение a_skr »

Кроме размера там всё нормально:
Изображение
jazz393
Встал на лапы
Сообщения: 118
Зарегистрирован: Ср фев 05, 2014 18:54:39

Re: CodeVision AVR в вопросах и ответах

Сообщение jazz393 »

AT90CAN128
тем не менее компилятор ругается
пишет
structure must be stored in the same memory class as defined
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: CodeVision AVR в вопросах и ответах

Сообщение Аlex »

Он не ругается, он Вам подсказывает :) Тынц

Аlex писал(а):3. Попробуйте через typedef.
a_skr
Вымогатель припоя
Сообщения: 630
Зарегистрирован: Пн июн 14, 2010 13:07:29
Откуда: Жуковский

Re: CodeVision AVR в вопросах и ответах

Сообщение a_skr »

CV 2.05.0, всё нормально:
Изображение
На какую конкретно строку ругается?
jazz393
Встал на лапы
Сообщения: 118
Зарегистрирован: Ср фев 05, 2014 18:54:39

Re: CodeVision AVR в вопросах и ответах

Сообщение jazz393 »

a_skr
у меня версия cvavr 1.25
Аlex
прошу прощения но я плохо представляю как это, в инете примеров со структурами под cvavr не нашёл...
с обычными переменными всё компилируется, а со структурой хочет #define но как-то я не понимаю что он хочет ...
Ответить

Вернуться в «AVR»