Gast
#1387046
Guten Tag, ich habe einen ATmega162, und wollte alle I/O Ports als Ausgang deklarieren und auf high setzen (meine persönliche Art der Funktionsprüfung). Habe, wie es sich gehört, alle DDRx-Register und alle PORTx-Register auf high gesetzt (Nebenbei: JTAG habe ich abgeschaltet, um diese Ports auch nutzen zu können). Nun das Problem: Die DDRx-Register sind zwar mit 0xff beschrieben, also auf high, dennoch sind die Ports nicht als Ausgang deklariert. Es sind lediglich die Pull-Ups eingeschaltet. Dies ist nur bei den Ports PA, PB, PC und PD so, der Port PE funktioniert. Habe es auch mit einem Bau- und Typgleichen Controller – also auch ATmega162 – versucht, bei dem genau das gleiche. Woran liegt das und was muss ich machen? Der Source-Code ist, wie ihr sehen könnt, sehr einfach. ------------------------------------------------------------------------ --- ;ATmega162__Port-Output-Test ;Alle Ports sind als Ausgang deklariert und führen High-Pegel ;_______________________________________________________________________ _ ;-----------------------------------Boot-------------------------------- --- .include "m162def.inc" .cseg rjmp start .org 0x038 start: ;----------------------------Stapelzeiger_laden------------------------- --- ldi r16,high(ramend) out sph,r16 ldi r16,low(ramend) out spl,r16 ;----------------------------Ausgänge_definieren------------------------ --- ldi r23,0b11111111 out ddra,r16 out ddrb,r16 out ddrc,r16 out ddrd,r16 ldi r23,0b00000111 out ddre,r16 ;-----------------------------JTAG_abschalten--------------------------- --- in r16,mcucsr ;MCU Control and Status Register in r16 laden sbr r16,1<<jtd out mcucsr,r16 ;Bit7 (JTD) setzen nop out mcucsr,r16 ;Bit7 (JTD) setzen ;_______________________________________________________________________ _ ;------------------------------Haupt-Programm--------------------------- --- ldi r16,0b11111111 out porta,r16 out portb,r16 out portc,r16 out portd,r16 ldi r16,0b00000111 out porte,r16 loop: nop rjmp loop .exit
