so, habe weiter getestet und bin auf einiges drauf gekommen:
egal wie PB5 konfiguriert ist:
als eingang mit einem 10k R gegen GND
oder als ausgang mit einer led+1k an GND
dann geht der tiny in den RESET modus !!!
der int0 funktioniert weder mit + noch mit - flanke.
habe alle varianten im MCUCR gesetzt und probiert.
nur pinchange funktioniert (ausgenommen an PB5 - siehe oben).
das habe ich mit folgendem testprogramm raus gefunden:
nur PB3 + 4 liegen mit einer led + 1k an masse, sonst ist der tiny nicht beschalten.Code:; TEST #include "tn13def.inc" .cseg .org 0x000 ; Interrupt Vektoren rjmp MAIN ; Hauptprogrammroutine (Reset) rjmp IMPULS ; Interrupt0 rjmp IMPULS ; PinChangeInterrupt Tor zu rjmp SCHLEIFE ; TimerOverFlow für Warteschleife rjmp SCHLEIFE ; Hauptprogrammroutine rjmp SCHLEIFE ; Hauptprogrammroutine rjmp SCHLEIFE ; Hauptprogrammroutine rjmp SCHLEIFE ; Hauptprogrammroutine rjmp SCHLEIFE ; Hauptprogrammroutine rjmp SCHLEIFE ; Hauptprogrammroutine .def PORT = R16 .def TEMP = R17 MAIN: cli ldi temp,LOW(RAMEND) out SPL,temp ldi temp,0b00011000 ; Register für DDRB in/out laden out DDRB,temp ; 0 1 2 5 Eingänge 3 4 Ausgänge ldi temp,0b00000010 ; Register für PORTB in/out laden out PORTB,temp ; Eingang 1 pullup ldi temp,0b00000011 ; 0b00000010 INT0 N-Flanke out MCUCR,temp ldi temp,0b01100000 ; GIMSK Interrupt Mask setzen out GIMSK,temp ; Int0 und PinChange enable ldi temp,33 ; PinChange auf PB0 + PB5 beschränken out PCMSK,temp sei SCHLEIFE: nop rjmp schleife IMPULS: cpi port,0 brne next ldi port,8 ; mit 8 und 16 PB3 + PB4 ein NEXT: out portb,port lsl port cpi port,32 brne end clr port END: sei reti
als "schalter" an PB0+PB1 für die interrupts verwende ich einen 1k widerstand gegen Vcc oder Vdd.
wenn ich an PB5 als pin change tippe = reset!
am simulator des AVR studio4 funktioniert obiger code tadellos.
warum nicht am tiny??
kann es sein, dass er defekt ist?
kann mir jemand weiter helfen?







Zitieren

Lesezeichen