| Цифровые сигнальные процессоры Вопросы, связанные с применением цифровых сигнальных процессоров: программирование, отладочные средства, алгоритмы... |
Помогите переписать с winavr на cvavr
14.03.2011, 19:52
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 13.12.2004
Сообщений: 3,168
Сказал спасибо: 11
Сказали Спасибо 691 раз(а) в 503 сообщении(ях)
|
Re: помогите переписать с winavr на cvavr
Программа просто пипец.  Можно как пособие о том, как НЕ НАДО писать программы использовать.
Под CV выглядеть будет примерно так:
|
Код:
|
#include ‹mega8.h›
#define nop() {asm("nop");}
unsigned int s = 5000;//переменная для задержки
//unsigned int x,i;//перечисление переменных
interrupt [EXT_INT0] void ext_int0_isr(void)
{
if (s ‹ 60000) s += 5000;
}
interrupt [EXT_INT1] void ext_int1_isr(void)
{
if(s › 5000) s -= 5000;
}
void delay(unsigned int t)
{
while(t--) nop ();
}
void main(void)
{
unsigned int tmp;
DDRB = 0xFF; // на выход
DDRD = 0x00; // Типа на вход порт
// проверяйте это и сделайте в соответствии со своей схемой
// External Interrupt(s) initialization
// INT0: On
// INT0 Mode: Low level
// INT1: On
// INT1 Mode: Low level
GICR|=0xC0;
MCUCR=0x00;
GIFR=0xC0;
// Global enable interrupts
#asm("sei")
while(1)
{
for(i=0; i‹8; i++)
{
PORTB = 0b00000001 ‹‹ i;
#asm("cli")
tmp = s;
#asm("sei")
delay(tmp);
}
}
} |
Дребезг в кнопках будет приводить к забавным эффетам
Последний раз редактировалось kison; 14.03.2011 в 19:58.
|
|
|
|
14.03.2011, 19:59
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 28.02.2010
Сообщений: 2,294
Сказал спасибо: 52
Сказали Спасибо 460 раз(а) в 391 сообщении(ях)
|
Re: помогите переписать с winavr на cvavr
я уж ,грешным Телом, подумал- может это тест? кто больше ошЫбок выявит...
|
|
|
|
14.03.2011, 20:13
|
|
|
Частый гость
Регистрация: 06.01.2010
Сообщений: 26
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: помогите переписать с winavr на cvavr
сократил ошибки до двух
#include ‹mega8.h›
#define nop() {asm("nop");}
unsigned int s = 5000; //ïåðåìåííàÿ äëÿ çàäåðæêè
unsigned int i; //ïåðå÷èñëåíèå ïåðåìåííûõ
interrupt [EXT_INT0] void ext_int0_isr(void)
{
if (s ‹ 60000) s += 5000;
}
interrupt [EXT_INT1] void ext_int1_isr(void)
{
if(s › 5000) s -= 5000;
}
void delay(unsigned int t)
{
while(t--) nop ();
}
void main(void)
{
unsigned int tmp;
DDRB = 0xFF; // íà âûõîä
DDRD = 0x00; // Òèïà íà âõîä ïîðò
// ïðîâåðÿéòå ýòî è ñäåëàéòå â ñîîòâåòñòâèè ñî ñâîåé ñõåìîé
// External Interrupt(s) initialization
// INT0: On
// INT0 Mode: Low level
// INT1: On
// INT1 Mode: Low level
GICR|=0xC0;
MCUCR=0x00;
GIFR=0xC0;
// Global enable interrupts
#asm("sei")
while(1)
{
for(i=0; i‹8; i++)
{
PORTB = 0b00000001 ‹‹ i;
#asm("cli")
tmp = s;
#asm("sei")
delay(tmp);
}
};
}
|
|
|
|
14.03.2011, 20:14
|
|
|
Частый гость
Регистрация: 06.01.2010
Сообщений: 26
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: помогите переписать с winavr на cvavr
нет не тест это я просто на стадии учебы по програмированию
|
|
|
|
14.03.2011, 20:23
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 13.12.2004
Сообщений: 3,168
Сказал спасибо: 11
Сказали Спасибо 691 раз(а) в 503 сообщении(ях)
|
Re: Помогите переписать с winavr на cvavr
Замените:
|
Код:
|
void delay(unsigned int t)
{
while(t--) {#asm("nop")}
} |
Хотя проверить не могу - у меня CV кривой и вообще ничего не собирает.
|
|
|
|
14.03.2011, 20:30
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 28.02.2010
Сообщений: 2,294
Сказал спасибо: 52
Сказали Спасибо 460 раз(а) в 391 сообщении(ях)
|
Re: Помогите переписать с winavr на cvavr
# - перед asm- решает (во второй строке)
|
|
|
|
14.03.2011, 20:30
|
|
|
Частый гость
Регистрация: 06.01.2010
Сообщений: 26
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Помогите переписать с winavr на cvavr
es es es получилось без ошибок теперь в протеус загоню
огромное спасибо потом отпишусь что получится
|
|
|
|
14.03.2011, 20:33
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 13.12.2004
Сообщений: 3,168
Сказал спасибо: 11
Сказали Спасибо 691 раз(а) в 503 сообщении(ях)
|
Re: Помогите переписать с winavr на cvavr
Сообщение от vituha40
|
|
нет не тест это я просто на стадии учебы по програмированию
|
Может тогда оставить WinAVR?
|
|
|
|
15.03.2011, 09:57
|
|
|
Частый гость
Регистрация: 06.01.2010
Сообщений: 26
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Помогите переписать с winavr на cvavr
теперь хочу вывести переменную на дисплей и у меня получается
две функции void main (void)
и компилятор ругается на нее что делать??
#include ‹mega8.h›
#include ‹lcd.h›
#include ‹delay.h›
#asm
.equ __lcd_port=0x12; PORTD /* ÆÊÈ äèñïëåé ïîäêëþ÷èëè ê ïîðòó I/O D */
#endasm
#define nop() {asm("nop");}
unsigned char j=0; /* îïðåäåëÿåì ïåðåìåííóþ äëÿ õðàíåíèÿ ïîëîæèòåëüíîãî ÷èñëà îò 0 äî 255 */
unsigned int s = 5000; //ïåðåìåííàÿ äëÿ çàäåðæêè
unsigned int i; //ïåðå÷èñëåíèå ïåðåìåííûõ
interrupt [EXT_INT0] void ext_int0_isr(void)
void main(void) /* Îñíîâíàÿ ôóíêöèÿ "main", ñ êîòîðîé íà÷èíàåòñÿ âûïîëíåíèå âñåé ïðîãðàììîé ïðîöåäóðû */
{
lcd_init(16);
lcd_clear();
lcd_gotoxy(1,0);
lcd_putsf("Initialization");
while(1) /* âûïîëíÿåì öèêë ïîêà îïåðàòîð iF íå âûïîëíèò óñëîâèå j==16 */
{
delay_ms(500);
j++;
lcd_gotoxy(j-1,1); /* çàïîëíÿåì ñèìâîëîì 2-óþ ñòðîêó îò 0 äî 15 */
lcd_putchar(0xff); /* Ñèìâîë çàïîëíåííîãî çíàêîìåñòà èç òàáëèöû êîäîâ ñèìâîëîâ */
if (j==16) {break;} /* åñëè óñëîâèå if âûïîëíèëîñü, òî ïðåðûâàåì âûïîëíåíèå öèêëà while */
}
while(1){/* áåñêîíå÷íûé öèêë */};
}
{
if (s ‹ 60000) s += 5000;
}
interrupt [EXT_INT1] void ext_int1_isr(void)
{
if(s › 5000) s -= 5000;
}
void delay(unsigned int t)
{
while(t--) {#asm("nop")}
}
void main(void)
{
unsigned int tmp;
DDRB = 0xFF;
DDRD = 0x00;
// External Interrupt(s) initialization
// INT0: On
// INT0 Mode: Low level
// INT1: On
// INT1 Mode: Low level
GICR|=0xC0;
MCUCR=0x00;
GIFR=0xC0;
// Global enable interrupts
#asm("sei")
while(1)
{
for(i=0; i‹8; i++)
{
PORTB = 0b00000001;
#asm("cli")
tmp = s;
#asm("sei")
delay(tmp);
PORTB = 0b00000000;
delay (200);
}
};
}
|
|
|
|
15.03.2011, 09:59
|
|
|
Частый гость
Регистрация: 06.01.2010
Сообщений: 26
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Помогите переписать с winavr на cvavr
win avr у меня установлен просто я хочу научится на что нибудь одном
а задачи написаны на разных языках а совместить написанное неполучается
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 08:24.
|
|