Я два дня назад создал тему 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 не может работать с этим типом контроллеров!!! Понимаю, что сам дурак, но в чем???