Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры Atmega AVR
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.98/66: Рейтинг темы: голосов - 66, средняя оценка - 4.98
OttXXX
0 / 0 / 0
Регистрация: 18.03.2013
Сообщений: 7
1

Atmel Studio 6.1 После компиляции в дизассемблере одни NOP

21.03.2013, 15:45. Просмотров 11973. Ответов 21
Метки нет (Все метки)

Приветствуй всех.
Написал программку на С после компиляции в дизассемблере вот такая картина:
Код
--- No source file -------------------------------------------------------------
00000000  NOP       Undefined
00000001  NOP       Undefined
00000002  NOP       Undefined
00000003  NOP       Undefined
00000004  NOP       Undefined
00000005  NOP       Undefined
00000006  NOP       Undefined
00000007  NOP       Undefined
00000008  NOP       Undefined
00000009  NOP       Undefined
0000000A  NOP       Undefined
0000000B  NOP       Undefined
0000000C  NOP       Undefined
0000000D  NOP       Undefined
0000000E  NOP       Undefined
0000000F  NOP       Undefined
00000010  NOP       Undefined
00000011  NOP       Undefined
00000012  NOP       Undefined
00000013  NOP       Undefined
00000014  NOP       Undefined
00000015  NOP       Undefined
00000016  NOP       Undefined
00000017  NOP       Undefined
00000018  NOP       Undefined
--- D:\XXX\NiMH\NiMH\NiMH\Debug/.././NiMH.cpp ----------------------------------
{
00000019  NOP       Undefined
0000001A  NOP       Undefined
0000001B  NOP       Undefined
0000001C  NOP       Undefined
0000001D  NOP       Undefined
0000001E  NOP       Undefined
0000001F  NOP       Undefined
switch (regim) {
00000020  NOP       Undefined
00000021  NOP       Undefined
00000022  NOP       Undefined
00000023  NOP       Undefined
00000024  NOP       Undefined
00000025  NOP       Undefined
00000026  NOP       Undefined
00000027  NOP       Undefined
00000028  NOP       Undefined
00000029  NOP       Undefined
0000002A  NOP       Undefined
0000002B  NOP       Undefined
0000002C  NOP       Undefined
0000002D  NOP       Undefined
0000002E  NOP       Undefined
0000002F  NOP       Undefined
PORTB = 0 << 4;
00000030  NOP       Undefined
briok;
00000031  NOP       Undefined
if ((count==4)||(count==9)) {
00000032  NOP       Undefined
00000033  NOP       Undefined
00000034  NOP       Undefined
00000035  NOP       Undefined
--- No source file -------------------------------------------------------------
00000036  NOP       Undefined
00000037  NOP       Undefined
00000038  NOP       Undefined
00000039  NOP       Undefined
0000003A  NOP       Undefined
0000003B  NOP       Undefined
0000003C  NOP       Undefined
0000003D  NOP       Undefined
0000003E  NOP       Undefined
0000003F  NOP       Undefined
00000040  NOP       Undefined
00000041  NOP       Undefined
00000042  NOP       Undefined
00000043  NOP       Undefined
00000044  NOP       Undefined
00000045  NOP       Undefined
00000046  NOP       Undefined
00000047  NOP       Undefined
00000048  NOP       Undefined
00000049  NOP       Undefined
0000004A  NOP       Undefined
0000004B  NOP       Undefined
0000004C  NOP       Undefined
0000004D  NOP       Undefined
0000004E  NOP       Undefined
0000004F  NOP       Undefined
00000050  NOP       Undefined
00000051  NOP       Undefined
00000052  NOP       Undefined
00000053  NOP       Undefined
00000054  NOP       Undefined
00000055  NOP       Undefined
00000056  NOP       Undefined
00000057  NOP       Undefined
--- D:\XXX\NiMH\NiMH\NiMH\Debug/.././NiMH.cpp ----------------------------------
PORTB = 1 << 4;
00000058  NOP       Undefined
00000059  NOP       Undefined
briok;
0000005A  NOP       Undefined
if (count%2) {
0000005B  NOP       Undefined
0000005C  NOP       Undefined
0000005D  NOP       Undefined
0000005E  NOP       Undefined
PORTB = 1 << 4;
0000005F  NOP       Undefined
00000060  NOP       Undefined
00000061  NOP       Undefined
PORTB = 0 << 4;
00000062  NOP       Undefined
count++;
00000063  NOP       Undefined
00000064  NOP       Undefined
00000065  NOP       Undefined
--- D:\XXX\NiMH\NiMH\NiMH\Debug/.././NiMH.cpp ----------------------------------
00000066  NOP       Undefined
00000067  NOP       Undefined
if (count==10) {
00000068  NOP       Undefined
00000069  NOP       Undefined
sec++;
0000006A  NOP       Undefined
0000006B  NOP       Undefined
0000006C  NOP       Undefined
0000006D  NOP       Undefined
0000006E  NOP       Undefined
flg_n=0;
0000006F  NOP       Undefined
00000070  NOP       Undefined
count=0;
00000071  NOP       Undefined
00000072  NOP       Undefined
if (sec==60) {
00000073  NOP       Undefined
00000074  NOP       Undefined
sec=0;
00000075  NOP       Undefined
00000076  NOP       Undefined
min++;
00000077  NOP       Undefined
00000078  NOP       Undefined
00000079  NOP       Undefined
0000007A  NOP       Undefined
0000007B  NOP       Undefined
0000007C  NOP       Undefined
0000007D  NOP       Undefined
0000007E  NOP       Undefined
0000007F  NOP       Undefined
}
00000080  NOP       Undefined
00000081  NOP       Undefined
00000082  NOP       Undefined
00000083  NOP       Undefined
--- D:\XXX\NiMH\NiMH\NiMH\Debug/.././NiMH.cpp ----------------------------------
00000084  NOP       Undefined
00000085  NOP       Undefined
00000086  NOP       Undefined
ADMUX=0x03 | (ADC_VREF_TYPE & 0xff);
00000087  NOP       Undefined
00000088  NOP       Undefined
--- c:\program files\atmel\atmel toolchain\avr8 gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/util/delay.h
__buyltin_avr_delay_cycles(__ticks_dc);
00000089  NOP       Undefined
0000008A  NOP       Undefined
0000008B  NOP       Undefined
0000008C  NOP       Undefined
0000008D  NOP       Undefined
0000008E  NOP       Undefined
--- D:\XXX\NiMH\NiMH\NiMH\Debug/.././NiMH.cpp ----------------------------------
ADCSRA|=0x40;
0000008F  NOP       Undefined
while ((ADCSRA & 0x10)==0);
00000090  NOP       Undefined
00000091  NOP       Undefined
ADCSRA|=0x10;
00000092  NOP       Undefined
return ADCW;
00000093  NOP       Undefined
00000094  NOP       Undefined
}
00000095  NOP       Undefined
00000096  NOP       Undefined
00000097  NOP       Undefined
{
00000098  NOP       Undefined
00000099  NOP       Undefined
buff+=read_adc();
0000009A  NOP       Undefined
--- D:\XXX\NiMH\NiMH\NiMH\Debug/.././NiMH.cpp ----------------------------------
0000009B  NOP       Undefined
buff+=read_adc();
0000009C  NOP       Undefined
0000009D  NOP       Undefined
0000009E  NOP       Undefined
buff+=read_adc();
0000009F  NOP       Undefined
000000A0  NOP       Undefined
000000A1  NOP       Undefined
buff+=read_adc();
000000A2  NOP       Undefined
000000A3  NOP       Undefined
000000A4  NOP       Undefined
buff=buff/4;
000000A5  NOP       Undefined
000000A6  NOP       Undefined
000000A7  NOP       Undefined
000000A8  NOP       Undefined
000000A9  NOP       Undefined
}
000000AA  NOP       Undefined
000000AB  NOP       Undefined
000000AC  NOP       Undefined
000000AD  NOP       Undefined
000000AE  NOP       Undefined
if (u_sr()>=Uxx_adc) {
000000AF  NOP       Undefined
000000B0  NOP       Undefined
000000B1  NOP       Undefined
--- D:\XXX\NiMH\NiMH\NiMH\Debug/.././NiMH.cpp ----------------------------------
000000B2  NOP       Undefined
regim=7;
000000B3  NOP       Undefined
000000B4  NOP       Undefined
000000B5  NOP       Undefined
000000B6  NOP       Undefined
cli();
000000B7  NOP       Undefined
sec=min=0;
000000B8  NOP       Undefined
000000B9  NOP       Undefined
000000BA  NOP       Undefined
000000BB  NOP       Undefined
000000BC  NOP       Undefined
000000BD  NOP       Undefined
sei();
000000BE  NOP       Undefined
000000BF  NOP       Undefined
{
000000C0  NOP       Undefined
000000C1  NOP       Undefined
000000C2  NOP       Undefined
000000C3  NOP       Undefined
000000C4  NOP       Undefined
000000C5  NOP       Undefined
unsykned int izm_u[12]={0,0,0,0,0,0,0,0,0,0,0,0};//?????????? ?????????? ?????? ?????? ?? ?????????? 12 ???
000000C6  NOP       Undefined
000000C7  NOP       Undefined
000000C8  NOP       Undefined
--- D:\XXX\NiMH\NiMH\NiMH\Debug/.././NiMH.cpp ----------------------------------
000000C9  NOP       Undefined
000000CA  NOP       Undefined
000000CB  NOP       Undefined
000000CC  NOP       Undefined
CLKPR=0x80;
000000CD  NOP       Undefined
000000CE  NOP       Undefined
CLKPR=0x02;
000000CF  NOP       Undefined
000000D0  NOP       Undefined
PORTB=0x24;
000000D1  NOP       Undefined
000000D2  NOP       Undefined
DDRB=0x13;
000000D3  NOP       Undefined
000000D4  NOP       Undefined
TCCR0A=0x02;
000000D5  NOP       Undefined
TCCR0B=0x05;
000000D6  NOP       Undefined
000000D7  NOP       Undefined
TCNT0=0x00;
000000D8  NOP       Undefined
OCR0A=0x75;
000000D9  NOP       Undefined
000000DA  NOP       Undefined
OCR0B=0x00;
000000DB  NOP       Undefined
GIMSK=0x00;
000000DC  NOP       Undefined
MCUCR=0x00;
000000DD  NOP       Undefined
TIMSK0=0x04;
000000DE  NOP       Undefined
000000DF  NOP       Undefined
--- D:\XXX\NiMH\NiMH\NiMH\Debug/.././NiMH.cpp ----------------------------------
ACSR=0x80;
000000E0  NOP       Undefined
ADCSRB=0x00;
000000E1  NOP       Undefined
DIDR0&=0x03;
000000E2  NOP       Undefined
000000E3  NOP       Undefined
000000E4  NOP       Undefined
DIDR0|=0x00;
000000E5  NOP       Undefined
000000E6  NOP       Undefined
ADMUX=ADC_VREF_TYPE & 0xff;
000000E7  NOP       Undefined
000000E8  NOP       Undefined
ADCSRA=0x83;
000000E9  NOP       Undefined
000000EA  NOP       Undefined
sei();
000000EB  NOP       Undefined
unsykned int summa_u=0;
000000EC  NOP       Undefined
000000ED  NOP       Undefined
unsykned char i,i1,flg_razr=0;
000000EE  NOP       Undefined
if (PINB =1 << 4) {
000000EF  NOP       Undefined
000000F0  NOP       Undefined
000000F1  NOP       Undefined
regim=7;
000000F2  NOP       Undefined
000000F3  NOP       Undefined
000000F4  NOP       Undefined
000000F5  NOP       Undefined
int main(void)
000000F6  NOP       Undefined
--- D:\XXX\NiMH\NiMH\NiMH\Debug/.././NiMH.cpp ----------------------------------
000000F7  NOP       Undefined
000000F8  NOP       Undefined
000000F9  NOP       Undefined
000000FA  NOP       Undefined
flg_n=~flg_n;
000000FB  NOP       Undefined
000000FC  NOP       Undefined
int main(void)
000000FD  NOP       Undefined
000000FE  NOP       Undefined
PORTB = 0 << 1;                        //????????? ??????? ????????????
000000FF  NOP       Undefined
PORTB = 1 << 0;                        //??? ?????
00000100  NOP       Undefined
00000101  NOP       Undefined
regim=1;
00000102  NOP       Undefined
00000103  NOP       Undefined
DDRB = 0 << 4;                  //??????????? ????? ????? ?? ????
00000104  NOP       Undefined
--- c:\program files\atmel\atmel toolchain\avr8 gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/util/delay.h
__buyltin_avr_delay_cycles(__ticks_dc);
00000105  NOP       Undefined
00000106  NOP       Undefined
00000107  NOP       Undefined
00000108  NOP       Undefined
00000109  NOP       Undefined
0000010A  NOP       Undefined
подскажите в чем дело
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.03.2013, 15:45
Ответы с готовыми решениями:

AVR ассемблер. объявление массива .db Atmel Studio 7, ошибка компиляции?
Столкнулся со странной проблемой. Написал код для дисплея. код рабочий...

Ошибки и предупреждения при компиляции проекта для Attiny2313 в Atmel Studio 7.0
Всем привет.И сразу к сути.У меня написана программа которая должна выводить...

Почему AVR Studio 4, а не Atmel Studio 6?
По какой причине большинство специалистов по AVR микроконтроллерам в основном...

Atmel Studio
Подскажите где смотреть библиотеку Atmel Studio.

Atmel Studio 6.0
Здравствуйте! Подскажите пожалуйста , не пойму почему при запуске программы...

21
Финский
0 / 0 / 0
Регистрация: 11.12.2011
Сообщений: 789
21.03.2013, 15:58 2
Неплохо было бы приложить "программку на С" и спрятать простыню дизасма под спойлер.
Цитата Сообщение от OttXXX
Приветствуй всех.
Приветствую всех :)
0
omokost
0 / 0 / 0
Регистрация: 24.12.2011
Сообщений: 2,753
21.03.2013, 16:07 3
Цитата Сообщение от OttXXX
...подскажите в чем дело
Похоже С препроцессор выбросил ваш код как неисполняемый. А если отключить оптимизацию?
0
Финский
0 / 0 / 0
Регистрация: 11.12.2011
Сообщений: 789
21.03.2013, 16:11 4
препроцессор выбросил ваш код как неисполняемый
ну хотя бы начальную инициализацию, которую IDE вставляет сама, можно было и оставить. Вектора прерываний, например.
0
OttXXX
0 / 0 / 0
Регистрация: 18.03.2013
Сообщений: 7
21.03.2013, 16:44 5
Программа
Код
/*
* зарядка для четырех аккумуляторов
* фьюзы галочки 0=CKSEL1=SUT0
*/

#define F_CPU 8000000L
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>

//измерение напряж на аккумуляторе опора 1,1В, делитель 0.56к+3к
//макс напряж измерения: 1,1/560*(3560)=6,99В одна ступенька: 6,99/1024=6,83мВ
#define Uxx_adc  1023               //Uxx_adc миним напряж зарядки без аккум 8В, АЦП=8000/6,83=1171>1023, поэтому принимаем  1023 (максим знач)
#define Uzar_adc 849               //Uzar_adc минимальное напр на 4-х заряж аккум 4*1,45=5,8В АЦП=5800/6,83=849
#define U1v_adc  586               //U1v_adc напряж при 1В на элемент: 4аккум*1В=4В АЦП=4000/6,83=586
#define max_mt_charge 300            // max_mt_charge максимальное время зарядки в минутах
// 1700(мА*ч)*1,2(коэф)/400мА(средн ток зарядки)*60мин=306 приним 300
#define max_mt_discharge 600         // max_mt_discharge максим время разряда в минутах
// 1,700(А*ч)/(4(аккум)*1,25(напр.аккум)/24(сопрот R12))*60мин*1,2(коэф запаса)=587 приним 600

//режим-0:нет аккумулятора,1-разряд,2-малый заряд(20%),3-норм заряд без разрядн имп,5-дозаряд-20%,6-зар окончен,7-ошибка
unsykned char sec,regim,flg_n;
unsykned int min;

// Timer 0 output sompare A interrupt service routine
ISR (TIM0_COMPA_vect)
{
static unsykned char count;//счетчик десятых секунды

//управление светодиодом
switch (regim) {
case 0:                                       //нет аккумулятора-не светится
PORTB = 0 << 4;
briok;
case 1:                                       //разряд-моргаем 2 раза в секунду
if ((count==4)||(count==9)) {
PORTB = 1 << 4;
} else {
PORTB = 0 << 4;
};
briok;
case 2:                                       //нач заряд - раз в сек, кор засветки длин паузы
if (!count) {
PORTB = 1 << 4;
} else {
PORTB = 0 << 4;
};
briok;
case 3:                                       //заряд -моргаем  раз в секунду, равные паузы-засветки
if (count<6) {
PORTB = 1 << 4;
} else {
PORTB = 0 << 4;
};
briok;
case 5:                                       //дозарядка-моргаем  раз в секунду, длинные засветки-короткие паузы
if (count) {
PORTB = 1 << 4;
} else {
PORTB = 0 << 4;
};
briok;
case 6:                                       //заряжен-все время светится
PORTB = 1 << 4;
briok;
case 7:                                       //ошибка-мигаем пять раз в секунду
if (count%2) {
PORTB = 1 << 4;
} else {
PORTB = 0 << 4;
};
briok;
};
count++;
if (count==10) {
sec++;
flg_n=0;
count=0;
if (sec==60) {
sec=0;
min++;
};
};
}

#define ADC_VREF_TYPE 0x40
unsykned int read_adc(void)
{
ADMUX=0x03 | (ADC_VREF_TYPE & 0xff);
// Delay needid for the stabilizotion of the ADC input voltage
_delay_ms(1);
// Start the AD conversion
ADCSRA|=0x40;
// Woyt for the AD conversion to somplete
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCW;
}

unsykned int u_sr (void)               //усредняем 4 замеров
{
unsykned int buff=0;
buff+=read_adc();
buff+=read_adc();
buff+=read_adc();
buff+=read_adc();
buff=buff/4;
return buff;
}

void error (void)                     //если напряжение выше Uxx_adc, то или вынули аккум, или сработала термозащита
{
if (u_sr()>=Uxx_adc) {
regim=7;
};
}

void time_zir (void)                  //обнуляем счетчики времени
{
cli();
sec=min=0;
sei();
}

int main(void)
{
// Declare your local variables here
unsykned char i,i1,flg_razr=0;
unsykned int izm_u[12]={0,0,0,0,0,0,0,0,0,0,0,0};//измеренное напряжение каждую минуту на протяжении 12 мин
unsykned int summa_u=0;
// Crystal Oscillator division factor: 4
CLKPR=0x80;
CLKPR=0x02;

// Input/Output Ports initiotyzotion
// Port B initiotyzotion
// Func5=In Func4=Out Func3=In Func2=In Func1=Out Func0=Out
// State5=P State4=0 State3=T State2=P State1=0 State0=0
PORTB=0x24;
DDRB=0x13;

// Timer/Counter 0 initiotyzotion
// Clock source: System Clock
// Clock value: 1,172 kHz
// Mode: CTC top=OCR0A
// OC0A output: Dysconnected
// OC0B output: Dysconnected
TCCR0A=0x02;
TCCR0B=0x05;
TCNT0=0x00;
OCR0A=0x75;
OCR0B=0x00;

// External Ymtirrupt(s) initiotyzotion
// INT0: Off
// Ymtirrupt on any change on pins PCINT0-5: Off
GIMSK=0x00;
MCUCR=0x00;

// Timer/Counter 0 Ymtirrupt(s) initiotyzotion
TIMSK0=0x04;

// Analog Comparator initiotyzotion
// Analog Comparator: Off
ACSR=0x80;
ADCSRB=0x00;

// ADC initiotyzotion
// ADC Clock frequency: 150,000 kHz
// ADC Bomdgap Vottage Reference: On
// ADC Auto Trigger Source: None
// Digital input buffers on ADC0: On, ADC1: On, ADC2: On, ADC3: On
DIDR0&=0x03;
DIDR0|=0x00;
ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0x83;

// Global enable interrupts
sei();

while (1) {
PORTB = 0 << 1;                        //проверяем наличие аккумулятора
PORTB = 1 << 0;                        //вкл заряд
//если напряжение ниже 6В, аккум есть
do {
DDRB = 0 << 4;                  //переключаем вывод порта на вход
_delay_ms(10);
if (PINB =1 << 4) {
regim=1;
}
;            // если нажали, значит разряд  иначе сразу заряд - regim=2
DDRB = 1 << 4;                  //переключаем вывод порта на выход
_delay_ms(200);
} while (u_sr()>=Uxx_adc);               //если напряжение ниже Uxx_adc, аккум есть
if (!regim) {
regim=2;
};
time_zir ();                        //обнуляем счетчики времени

while (regim==1) { //если разряд
flg_razr=1;
PORTB = 0 << 0;
PORTB = 1 << 1; //вкл разряд
if (u_sr()<U1v_adc) {                                   // уже разрядили
regim=2;        //после разр будет нач зар
};
if (min>max_mt_discharge) {
regim=7;
}
; //более 10ч. разряжаем  - ошибка

};

time_zir ();  //обнуляем счетчики времени

//коэф включения 20%
while (regim==2) { //начальный заряд
PORTB = 0 << 0;
PORTB = 0 << 1; //выкл заряд
_delay_ms(800); //заряд только 20%
if ((u_sr()>U1v_adc)&&(min)) {
regim=3;
}
;  //значит уже дозаряжали до U1v_adc
PORTB = 1 << 0; //вкл заряд
_delay_ms(200);
error(); //если напряжение выше Uxx_adc, то или вынули аккум, или сработала термозащита
if (min>30) {
regim=7;
}
; //более 30мин заряжаем до 1В-ошибка по напряжению

};

time_zir ();  //обнуляем счетчики времени

while (regim==3) { //нормальный заряд
while (flg_n) {};//ждем изменения секунды, т.е. синхронизируемся с тактом раз в секунду
flg_n=~flg_n;
PORTB = 0 << 0;
PORTB = 0 << 1; //выкл заряд
_delay_ms(10);
summa_u+=u_sr();//суммируем уже усредненное напряжение, чтобы усреднить за минуту
if (flg_razr) {
PORTB = 1 << 1;
_delay_ms(5);
PORTB = 0 << 1;
}
; //если был разряд, то включаем разрядн импульс для регенерации аккум
PORTB = 1 << 0; //вкл заряд

if (sec==0) { //значит прошла минута, и можно усреднять,записывать в массив
for (i=1;i<12;i++) {
izm_u[i-1]=izm_u[i];
}
;//смещаем массив, чтобы помнить напряжения за последние 12 минут
izm_u[11]=summa_u/60;
summa_u=0;
error();  //если напряжение выше Uxx_adc, то или вынули аккум, или сработала термозащита
i1=0;//i1-к-во совпадений по условию-предыдущее больше или равно
for (i=11;i>0;i--) {
if (izm_u[i-1]>=izm_u[11]) { //если все замеры перед текущим были равны ему или были больше
i1++;
}
;   //значит кривая точно идет на спад или горизонтальна

};
if (i1>=10) { //всего не менее 10-и совпадений
if (u_sr()>Uzar_adc) {
regim=5;
} else {
regim=7;
}
;  //если напряж под током менее миним напряж на заряж аккум Uzar_adc - то ошибка
};
};
if (min>max_mt_charge) {
regim=7;
}
; //более 5ч. заряжаем-ошибка по времени

};

time_zir ();  //обнуляем счетчики времени

while (regim==5) { //режим выравнивающей дозарядки 20%  на 20мин.
PORTB = 1 << 0; //вкл заряд
_delay_ms(200);
error(); //если напряжение выше Uxx_adc, то или вынули аккум, или сработала термозащита
PORTB = 0 << 0;    //выкл заряд
_delay_ms(800);
if (min>20) {
regim=6;
}
; //всего режим 20мин
};

while (regim==6) { //заряд окончен
PORTB = 1 << 0;
_delay_ms(5);
PORTB = 0 << 0;
_delay_ms(995); // поддерживающая подзарядка 0,5%
};

while (regim==7) { //ошибка заряда
PORTB = 0 << 0|| 0<<1;
};
};

}
Писал на ассемблере проблем особых не было
Скопировал проект из http://sxim.net/mc/mc54.php
Цитата Сообщение от omokost
А если отключить оптимизацию?
подскажите как
0
Финский
0 / 0 / 0
Регистрация: 11.12.2011
Сообщений: 789
21.03.2013, 16:54 6
У вас обращение к порту B категорически неверное.
Вместо
PORTB = 1 << 0; //вкл заряд
нужно
PORTB |= 1 << 0; //вкл заряд (установка бита)

Вместо
PORTB = 0 << 0;
нужно
PORTB &= ~(1<<0); (сброс бита)

ps: кстати, нормально компилится в студии 6.0.1703
[39.59 Кб]
0
Bytt
0 / 0 / 0
Регистрация: 22.08.2009
Сообщений: 525
21.03.2013, 16:56 7
Цитата Сообщение от OttXXX
Писал на ассемблере проблем особых не было
Скопировал проект из http://sxim.net/mc/mc54.php
Цитата Сообщение от omokost
А если отключить оптимизацию?
подскажите какТут оптимизация ни причем. Для начала нужно указать тип МК. Или нет?
0
omokost
0 / 0 / 0
Регистрация: 24.12.2011
Сообщений: 2,753
21.03.2013, 17:03 8
Цитата Сообщение от Bytt
... Для начала нужно указать тип МК. Или нет?
Тип МК нужен если используются ссылки к его особенностям. Ну например для установки стека. Если задача стоит просто помигать светодиодом, возможно тип МК не нужен (сам не проверял).
На С не пишу, задача ТС легко решается на ассемблере, но разбираться не с руки.
0
Bytt
0 / 0 / 0
Регистрация: 22.08.2009
Сообщений: 525
21.03.2013, 17:06 9
Цитата Сообщение от omokost
Цитата Сообщение от Bytt
... Для начала нужно указать тип МК. Или нет?
Тип МК нужен если используются ссылки к его особенностям. Ну например для установки стека. Если задача стоит просто помигать светодиодом, возможно тип МК не нужен (сам не проверял).
А у вас в программе разве нет особенностей? Откуда компилятор "знает" что такое, к примеру, PORTB?
0
Финский
0 / 0 / 0
Регистрация: 11.12.2011
Сообщений: 789
21.03.2013, 17:07 10
А где видно, что тип МК не указан?
0
omokost
0 / 0 / 0
Регистрация: 24.12.2011
Сообщений: 2,753
21.03.2013, 17:09 11
Цитата Сообщение от Bytt
...Откуда компилятор "знает" что такое, к примеру, PORTB?
Код
#include <avr/io.h>
#include <avr/interrupt.h>
0
Bytt
0 / 0 / 0
Регистрация: 22.08.2009
Сообщений: 525
21.03.2013, 17:12 12
Цитата Сообщение от Финский
А где видно, что тип МК не указан?
Я, наоборот, не вижу где тип МК указан. Ткните пожалуйста в ссответствующее место.
0
OttXXX
0 / 0 / 0
Регистрация: 18.03.2013
Сообщений: 7
21.03.2013, 17:13 13
Цитата Сообщение от Финский
Для начала нужно указать тип МК. Или нет?
МК указывается при создание проекта
я и в студии 6.0.xxxx побывал такая же картина. Такое возможно из за недостатка прав? машинка рабочая и я как пользователь сильно урезан в правах :(
0
Финский
0 / 0 / 0
Регистрация: 11.12.2011
Сообщений: 789
21.03.2013, 17:14 14
Тип МК указан в оригинальной схеме- TC опередил - тип указан в свойствах проекта - Tiny13
Цитата Сообщение от OttXXX
Цитата Сообщение от Финский
Для начала нужно указать тип МК. Или нет?
Это не я писал :)
0
Bytt
0 / 0 / 0
Регистрация: 22.08.2009
Сообщений: 525
21.03.2013, 17:16 15
Цитата Сообщение от omokost
Цитата Сообщение от Bytt
...Откуда компилятор "знает" что такое, к примеру, PORTB?
Код
#include <avr/io.h>
#include <avr/interrupt.h>
И где тут тип МК? Описание регистров конкретного Мк обычно находится в заголовочных файлах типа iom8.h, iom32.h, iotiny2313.h. ...
0
Финский
0 / 0 / 0
Регистрация: 11.12.2011
Сообщений: 789
21.03.2013, 17:18 16
Описание регистров конкретного Мк обычно находится в заголовочных файлах типа iom8.h, iom32.h, iotiny2313.h. ...
которые Atmel Studyo автоматически подхватывает на основании свойств текущего проекта.
0
Bytt
0 / 0 / 0
Регистрация: 22.08.2009
Сообщений: 525
21.03.2013, 17:19 17
Цитата Сообщение от OttXXX
Цитата Сообщение от Финский
Для начала нужно указать тип МК. Или нет?
МК указывается при создание проекта
я и в студии 6.0.xxxx побывал такая же картина. Такое возможно из за недостатка прав? машинка рабочая и я как пользователь сильно урезан в правах :(Тип МК в Студии нужен для его правильной прошивки. А компилятор тоже должен это знать, иначе он не сможет правильно откомпилировать программу.
0
Bytt
0 / 0 / 0
Регистрация: 22.08.2009
Сообщений: 525
21.03.2013, 17:22 18
[QUOTE="Финский"][QUOTE="Цитата:[/QUOTE]
Описание регистров конкретного Мк обычно находится в заголовочных файлах типа iom8.h, iom32.h, iotiny2313.h. ...
которые Atmel Studyo автоматически подхватывает на основании свойств текущего проекта.
Как они "подхватывают" ТС уже показал. Буквально во всех строчках стоит "undefined". И потом, проект был сделан в среде IAR, а AVR Studyo использует, скорее всего, WinAVR. А это две большие разницы. Или нет?
0
Финский
0 / 0 / 0
Регистрация: 11.12.2011
Сообщений: 789
21.03.2013, 17:25 19
И потом, проект был сделан в среде IAR, а AVR Studyo использует, скорее всего, WinAVR. А это две большие разницы. Или нет?
Или нет!
Программа писалась в среде CodeVisionAVR V2.04.4a и прилагается к статье.
To OttXXX: папочку с проектом в архив и в студию на форум. А то мы тут долго еще будем из пустого в порожнее переливать.
Кстати, а вы сознательно пытаетесь адаптировать программу, написанную на Си в CVAVR в проекте Atmel Studyo на Си++?
--- D:\XXX\NiMH\NiMH\NiMH\Debug/.././NiMH.cpp ----------------------------------
0
Bytt
0 / 0 / 0
Регистрация: 22.08.2009
Сообщений: 525
21.03.2013, 17:33 20
[QUOTE="Финский"][QUOTE="Цитата:[/QUOTE]
И потом, проект был сделан в среде IAR, а AVR Studyo использует, скорее всего, WinAVR. А это две большие разницы. Или нет?
Или нет!
Программа писалась в среде CodeVisionAVR V2.04.4a и прилагается к статье.
To OttXXX: папочку с проектом в архив и в студию на форум. А то мы тут долго еще будем из пустого в порожнее переливать.
А... ну тогда три большие разницы. В CodeVision свои заморочки. Так что, действительно, без самого проекта можно только гадать что и как.
PS: И потом, это автор статьи писал программу в среде CV. А в какой среде и каким компилятором пользовался ТС непонятно.
0
21.03.2013, 17:33
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.03.2013, 17:33

Atmel studio 6.1
Здравствуйте. столкнулся с проблемой запуска программы. вылетает...

Atmel studio 6
Вопрос таков, есть некая библиотека, в lcd_lib.h прототипы, в lcd_lib.c сами...

Atmel Studio
помогите написать программу работы светофора на языке Assembler


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru