реклама на сайте
подробности

 
 
> От HELP MEGA8 к вопрос по IAR!, Переходим с проблемы на проблему!
Sergio66
сообщение Jun 21 2005, 11:40
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 235
Регистрация: 9-02-05
Пользователь №: 2 526



Я два дня назад создал тему HELP MEGA8. Спасибо всем, кто откликнулся. Однако, проблема оказалась совсем не в подключении кристалла, в совершенно в другом месте! Проблема оказалась в IAR 4.10B/W32 (4.10.2.5).
Вот такой код на С:
#include <iom8.h>

int main( void )
{
long unsigned int i;
DDRB|= (1<<1);

while(1)
{

PORTB^=(1<<1);
i=0xffff;
while (i--);
}
}
все догадались, что должно произойти. Диод на PB1 должен моргать.
Однако, камень запускается раз на 4 - 5 включений питания. (Все подтянуто, все сглажено).

Меняем проект на:
.include "m8def1.inc"

begin:


ldi r16,low(RAMEND)
out spl,r16
ldi r16,high(RAMEND)
out sph,r16


ldi r16,(1<<1)
out DDRB,r16

; основной цикл программы
loop:
ldi r16,(1<<1) ; светится один светодиод
out PORTB,r16
rcall delay ; задержка
ldi r16,(0<<1) ; теперь гасим его
out PORTB,r16
rcall delay ; задержка

rjmp loop ; повторение цикла

; процедура задержки
; примерно полсекунды при частоте 7,37 МГц
; три пустых вложенных цикла соответственно
delay:
ldi r16,30 ; 30
delay1:
ldi r17,200 ; 200
delay2:
ldi r18,200 ; и еще 200 итераций
delay3:
dec r18
brne delay3
dec r17
brne delay2
dec r16
brne delay1
ret
вот такая нехитрая замена, сгенеренная в AVRStudio 4.
Все работает как часы!!!Вопросов нет!!!
То есть есть, но уже к знатокам IAR!!!
Компилю проект с опциями:
оптимизация отключена
кристалл - м8
модель Small
Подскажите, ведь не может быть, что IAR не может работать с этим типом контроллеров!!! Понимаю, что сам дурак, но в чем???
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
NickB
сообщение Jun 21 2005, 12:28
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 114
Регистрация: 22-06-04
Пользователь №: 102



Надобно посмотреть что за код генерирует компилятор
Ну и настройки стека
Go to the top of the page
 
+Quote Post
Sergio66
сообщение Jun 21 2005, 13:23
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 235
Регистрация: 9-02-05
Пользователь №: 2 526



Цитата(NickB @ Jun 21 2005, 15:28)
Надобно посмотреть что за код генерирует компилятор
Ну и настройки стека
*

Вот код на С:
void main( void ){
unsigned int pause;
DDRB|= (1<<PB1);
for(;;)
{
PORTB^=(1<<PB1);
pause = 0xffff;
while(--pause);
}
}
вот перевод на асм:
// 19 DDRB|= (1<<PB1);
SBI 0x17, 0x01
// 20
// 21 for(;;)
// 22 {
// 23 PORTB^=(1<<PB1);
??main_0:
LDI R16, 2
IN R17, 0x18
EOR R17, R16
OUT 0x18, R17
// 24
// 25 pause = 0xffff;
LDI R24, 255
LDI R25, 255
// 26 while(--pause);
??main_1:
SBIW R25:R24, 1
MOVW R31:R30, R25:R24
MOVW R25:R24, R31:R30
OR R30, R31
BRNE ??main_1
RJMP ??main_0
ничего крамольного...
вроде, все логично...
но камень запускается через раз, и не всегда ярко моргает диод.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Sergio66   От HELP MEGA8 к вопрос по IAR!   Jun 21 2005, 11:40
- - yung   Только сейчас бросилось в глаза. А почему main опи...   Jun 21 2005, 11:59
|- - Miron   Цитата(yung @ Jun 21 2005, 15:59)Только сейча...   Jun 21 2005, 12:14
||- - Sergio66   Цитата(Miron @ Jun 21 2005, 15:14)Цитата(yung...   Jun 21 2005, 12:26
|- - Olegovich   Цитата(yung @ Jun 21 2005, 14:59)Только сейча...   Jun 21 2005, 12:49
- - NickB   Напишите вместо while (i--); таким образом while ...   Jun 21 2005, 12:39
|- - Sergio66   Цитата(NickB @ Jun 21 2005, 15:39)Напишите вм...   Jun 21 2005, 13:09
- - NickB   А что асм в листинге показывает ? Может глюк какой...   Jun 21 2005, 13:25
- - dxp   Цитата(Sergio66 @ Jun 21 2005, 17:40)Я два дн...   Jun 21 2005, 13:36
|- - Sergio66   long unsigned int i; long - случайно попало при...   Jun 21 2005, 13:47
|- - Sergio66   И еще, я убрал из программы все, что может косвенн...   Jun 21 2005, 13:49
- - NickB   так чтобы получился цикл задержки надо либо убрать...   Jun 21 2005, 13:48
- - NickB   А чем Вы грузите устр в первом и во втором случае?   Jun 21 2005, 13:59
|- - Sergio66   Цитата(NickB @ Jun 21 2005, 16:59)А чем Вы гр...   Jun 21 2005, 14:19
|- - Sergio66   Еще один прикол от IAR? Пишем: DDRB|= (1<...   Jun 21 2005, 15:07
|- - Sergio66   Есть!!!!! Заработало!...   Jun 21 2005, 17:39
- - indela   Цитата(Sergio66 @ Jun 21 2005, 18:07)Еще один...   Jun 21 2005, 17:33
- - NickB   Похоже что ваш программатор неверно понимает форма...   Jun 22 2005, 06:52
- - yung   Зато сколько информативных постов!   Jun 22 2005, 06:58


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th July 2025 - 20:56
Рейтинг@Mail.ru


Страница сгенерированна за 0.01389 секунд с 7
ELECTRONIX ©2004-2016