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