Форум myROBOT.ru » Шаг за шагом » Программирование микроконтроллеров » где то ошибка в программе

Страниц (1): [1]
 

1. 2tw_Ant - 22 Ноября, 2008 - 20:04:37 - перейти к сообщению
CODE:
#include <avr/io.h>
#include <avr/delay.h>
#define F_CPU 8000000UL // 8 MHz

void nogi(unsigned short cif)
{
switch (cif) {
case 0: PORTA=0b00000011; break;
case 1: PORTA=0b10011111; break;
case 2: PORTA=0b00100101; break;
case 3: PORTA=0b00001101; break;
case 4: PORTA=0b10011001; break;
case 5: PORTA=0b01011001; break;
case 6: PORTA=0b01010001; break;
case 7: PORTA=0b00011111; break;
case 8: PORTA=0b00000001; break;
case 9: PORTA=0b00001001; break;
case 10: PORTA=0b00010001; break;
case 11: PORTA=0b11000001; break;
case 12: PORTA=0b01100011; break;
case 13: PORTA=0b10000101; break;
case 14: PORTA=0b01100001; break;
case 15: PORTA=0b01110001; break;
}
}


void main(void)
{
PORTA=0x00;
DDRA=0xFF;
PORTB=0x00;
DDRB=0x07;
char i;
char c1;

PORTB=0x01;
while(1)
{
for (i=0;i=15;i++)
{
nogi(i);
_delay_ms(500);
}
}
}


Почему то на PORTA всегда выдаётся 0b01110001 Ламер
2. бот_м_16 - 22 Ноября, 2008 - 22:14:52 - перейти к сообщению
2tw_Ant пишет:
unsigned short cif
нужно передать , а передаёте
2tw_Ant пишет:
char i;

з.ы
А зачем
2tw_Ant пишет:
char c1
?
3. 2tw_Ant - 22 Ноября, 2008 - 22:23:58 - перейти к сообщению
бот_м_16 пишет:
2tw_Ant пишет:
unsigned short cif
нужно передать , а передаёте
2tw_Ant пишет:
char i;

з.ы
А зачем
2tw_Ant пишет:
char c1
?

С1 это из проги, я всё не выложил...


изменил на

CODE:

#include <avr/io.h>
#include <avr/delay.h>
#define F_CPU 8000000UL // 8 MHz


void nogi(short unsigned int cif)
{
switch (cif) {
case 0: PORTA=0b00000011; break;
case 1: PORTA=0b10011111; break;
case 2: PORTA=0b00100101; break;
case 3: PORTA=0b00001101; break;
case 4: PORTA=0b10011001; break;
case 5: PORTA=0b01011001; break;
case 6: PORTA=0b01010001; break;
case 7: PORTA=0b00011111; break;
case 8: PORTA=0b00000001; break;
case 9: PORTA=0b00001001; break;
case 10: PORTA=0b00010001; break;
case 11: PORTA=0b11000001; break;
case 12: PORTA=0b01100011; break;
case 13: PORTA=0b10000101; break;
case 14: PORTA=0b01100001; break;
case 15: PORTA=0b01110001; break;
}
}


void main(void)
{
PORTA=0x00;
DDRA=0xFF;
PORTB=0x00;
DDRB=0x07;
short unsigned int i;


PORTB=0x01;
while(1)
{
for (i=0;i=15;i++)
{
nogi(i);
_delay_ms(250);
}
}
}


Собственно не помогло Грустный
4. VCOM - 23 Ноября, 2008 - 03:49:06 - перейти к сообщению
Попробуй

while(1)
{
for (i=0;i=15;i++)
{
nogi(i);
_delay_ms(250);
}
}

Поменять на

for (i=0;i<15;i++) //Тут у тебя явная ошибка

Или ваще на

while(1)
{
i++;
i=i & 0x0F;
nogi(i);
_delay_ms(250);
}
5. 2tw_Ant - 23 Ноября, 2008 - 05:48:45 - перейти к сообщению
VCOM пишет:
Попробуй

while(1)
{
for (i=0;i=15;i++)
{
nogi(i);
_delay_ms(250);
}
}

Поменять на

for (i=0;i<15;i++) //Тут у тебя явная ошибка

Или ваще на

while(1)
{
i++;
i=i & 0x0F;
nogi(i);
_delay_ms(250);
}


Спасибо =)
6. VCOM - 23 Ноября, 2008 - 09:59:30 - перейти к сообщению
Да всегда пжалста Подмигивающий
7. 2tw_Ant - 23 Ноября, 2008 - 10:11:36 - перейти к сообщению
забавно но
for (i=0;i<15;i++) выдаёт то же самое =))))

А вот заработало...
CODE:
while(1)
{
i++;
i=i & 0x0F;
nogi(i);
_delay_ms(250);
}
8. VCOM - 23 Ноября, 2008 - 10:38:11 - перейти к сообщению
Да подикась оптимизация какаянибудь включена, вот цикл и про оптимизировала Ж))))
9. 2tw_Ant - 24 Ноября, 2008 - 00:23:54 - перейти к сообщению
А где в AVRstudio оптимизация выключается?
Единственно что нашёл там:
Project\Configuration options - >
General\Optimization
возможные варианты
-O0
-O1
-O2
-O3
-Os (Собственно оно и выброно)
10. VCOM - 24 Ноября, 2008 - 12:01:51 - перейти к сообщению
Вот че нинаю то нинаю Замешательство