Gast
#94838
Hallo allerseits, folgendes Problem beschäftigt mich seit gestern Abend: In AVR-Studio (4.09) funktioniert das Programm wie gewünscht. Wird es auf den uC übertragen, fällt dieser sofort in den Sleep-Mode und lässt sich über INT0 nicht mehr aufwecken. Woran könnte das liegen ? -----------------<< CODEANFANG >>----------------- ;****************************************************************** ;* * ;* Beschreibung: * ;* * ;* Programm zur Demonstration des 'Power-Down'-Modus * ;* * ;* Direkt nach dem Power-On-Reset fällt der 2313 in den Sleep-Mode* ;* Betätigen von T1 bewirkt ein 'aufwachen' * ;* Betätigen von T2 -> wieder in Sleep-Mode fallen * ;* * ;* Hardware: * ;* * ;* T1 - PD2 (INT0), aufwachen * ;* T2 - PD3 (INT1), schlafen * ;* Die Taster werden über Pull-Down-Widerstände (5k) angeschlossen* ;* * ;* AT90S2313 @ 4MHz an 5V * ;* Die Stromaufnahme wird mit Hilfe eines Multimeters kontrolliert* ;* * ;* Keine sonstige Hardware ist angeschlossen (Programmer, LEDs, ..* ;* * ;****************************************************************** ;* * ;* Autor: Alexander Nießen * ;* Datum: 18.06.2004 * ;* * ;****************************************************************** ; .include "2313def.inc" .def temp1 = r16 ;------------------------------------------------------------------ .cseg ; Resetvektoren initialisieren rjmp reset rjmp ext_int0 rjmp ext_int1 ;------------------------------------------------------------------ ext_int0: ldi temp1, 0b00001111 ; SM nicht zugelassen out MCUCR, temp1 reti ;------------------------------------------------------------------ ext_int1: ldi temp1, 0b00111111 ; SM zulassen out MCUCR, temp1 reti ;------------------------------------------------------------------ reset: ldi temp1, LOW(RAMEND) ; Stackpointer init. out SPL, temp1 ; beide Ports als Ausgang definieren ldi temp1, 0b11111111 out DDRB, temp1 out DDRD, temp1 ldi temp1, 0b11000000 out GIMSK, temp1 ; INT0 und INT1 Enable ldi temp1, 0b00111111 ; SE, SMode, ISC out MCUCR, temp1 sei ; IRQs freigeben loop: sleep ; schlafen gehen ?! rjmp loop ;------------------------------------------------------------------ ------------------<< CODEENDE >>------------------ Grüße, Alex