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

 
 
> От 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, 13:59
Сообщение #2


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

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



А чем Вы грузите устр в первом и во втором случае?
Go to the top of the page
 
+Quote Post
Sergio66
сообщение Jun 21 2005, 14:19
Сообщение #3


Местный
***

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



Цитата(NickB @ Jun 21 2005, 16:59)
А чем Вы грузите устр в первом и во втором случае?
*

AS-2 Argussoft на других проектах проблем не было. Кстати, откомпиллированный код на асме (который работает без вопросов) я шью этим же программатором.
Go to the top of the page
 
+Quote Post
Sergio66
сообщение Jun 21 2005, 15:07
Сообщение #4


Местный
***

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



Еще один прикол от IAR?
Пишем:
DDRB|= (1<<PB1);

for(;;) {
PORTB^=(1<<PB1);
Delay(500);
}
где Delay() - библиотечная ф-я
и эта прога пускается не всегда, и чаще всего, диод моргает в четверть накала.
А вот код

for(;;)
{
DDRB|= (1<<PB1);
PORTB^=(1<<PB1);
Delay(500);
}
пускается, правда, тоже не всегда, но диод моргает в полный рост!
Выходит, команда DDRB|= (1<<PB1); в первом случае не успевает выполняться (ну не выполняется она!!!) И диод оказывается подключен к ноге, опрределенной на ввод, с подтянутым резистором!
Как такое может быть???
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   Надобно посмотреть что за код генерирует компилято...   Jun 21 2005, 12:28
|- - Sergio66   Цитата(NickB @ Jun 21 2005, 15:28)Надобно пос...   Jun 21 2005, 13:23
- - 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
|- - 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 Текстовая версия Сейчас: 21st July 2025 - 15:51
Рейтинг@Mail.ru


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