Цитата(DrGluck @ Apr 1 2008, 16:14)

".....позавчера не мог заставить шимить mega1280 - портировал рабочий код с mega128
дело оказалось в простом - для ноги вывода шима следует ВЫКЛЮЧИТЬ подтягивающий резистор, иначе он все время в 1-це......" -
достойный первоапрельский перл ! ...

никуя смешного
ГЛЯДИ - ВХОДИТ
рабочий код инициализации __atmega128__
Код
.global POW_LAMP_init
POW_LAMP_init:
ldi r24,lo8(lamp_dir)
sts lamp_ptr,r24
sts lamp_count,__zero_reg__
in r24,_SFR_IO_ADDR(DDRB)
ori r24,1<<PB4;
out _SFR_IO_ADDR(DDRB),r24
in r24,_SFR_IO_ADDR(PORTB)
ori r24,1<<PB4;-------------это работает-----------
out _SFR_IO_ADDR(PORTB),r24
ldi r24,0b00111
sts PORTG,r24 //for external Quarz 32768
ldi r24,0b00001000
out _SFR_IO_ADDR(ASSR),r24 //use external clock
ldi r24,(0b01100000)|timer0speed //phase correct PWM
out _SFR_IO_ADDR(TCCR0),r24
in r24,_SFR_IO_ADDR(TIMSK)
ori r24,1<<TOIE0
out _SFR_IO_ADDR(TIMSK),r24
RET
.end
И ВЫХОДИТ (С)Иа
рабочий код инициализации _atmega1280_
Код
.global POW_LAMP_init
POW_LAMP_init:
ldi r24,lo8(lamp_dir)
sts lamp_ptr,r24
sts lamp_count,__zero_reg__
in r24,_SFR_IO_ADDR(DDRB) //fist led
ori r24,1<<PB7;
out _SFR_IO_ADDR(DDRB),r24
in r24,_SFR_IO_ADDR(PORTB)
andi r24,~(1<<PB7); -------------это место пришлось править-----------
out _SFR_IO_ADDR(PORTB),r24
in r24,_SFR_IO_ADDR(DDRG) //second led
ori r24,1<<PG5;
out _SFR_IO_ADDR(DDRG),r24
in r24,_SFR_IO_ADDR(PORTG)
andi r24,~(1<<PG5);-------------сделано по аналогии-----------
out _SFR_IO_ADDR(PORTG),r24
in r24,_SFR_IO_ADDR(PORTG) //for external Quarz 32768
andi r24,~((1<<PG3)||(1<<PG4))
out _SFR_IO_ADDR(PORTG),r24
ldi r24,(1<<AS2)
sts ASSR,r24 //use external clock
ldi r24,0b10000001 //phase correct PWM
out _SFR_IO_ADDR(TCCR0A),r24
ldi r24,0b00000100 //div 1024
out _SFR_IO_ADDR(TCCR0B),r24
lds r24,TIMSK0
ori r24,1<<TOIE0
sts TIMSK0,r24
RET
.end