Hallo, brauche mal wieder die Profis!
Frage:
Wenn ich bei Mega 8 den Portb als INPUT definiere und die PULLUP’s auf HIGH setzte und den Portc auf Ausgang und ich anschließend die Pin’s b0-b4 auf Masse ziehe weil ich zB: Kontakte überwachen möchte, wann sie geöffnet sind, so kann ich den µP über meinen ISP STK 300 nicht mehr programmieren bzw. darauf zugreifen.
Nehme ich die Masse der Pin’s b0-b4 wieder weg, so funktioniert es wieder.
Woran liegt das?
Code:
.include "m8def.inc"
.def temp = r16
ldi r16, 0b00000000	
       	out DDRB, r16     		                          		
	ldi temp, 0b11111111	
        	out PORTB,temp
ldi r16, 0b11111111
      	out DDRC, r16
main:	
	in r16,PINB      		;lies die Bitkomb. von Portb ein
	andi r16,0b00011111	;wenn kein Klappe offen,Schalter geschl.--> auf Masse gezogen	 
	breq main		;zB:Portb hat 11100000 AND 00011111=00000000--> jump mainl
          	ldi r16,0b00000010	;lade die Bitkomb. 00000001 ins Register R16
	out portc,r16		;Ausgabe auf Portc die Bitkomb. des Registers R16
teste_S5:sbic PINB,5		;wenn Bit 5 auf Portb 0 (Z=1) ist überspringe nächsten Bef.
	rjmp teste_S5		;springe zu Label teste_S5
	ldi r16,0b00000000	;lade die Bitkomb. 00000000 ins Register R16
	out portc,r16		;Ausgabe auf Portc die Bitkomb. des Registers R16
	rjmp main
Code-Tags spendiert vom Mod
Dieses Programm bewirkt folgendes:
Ich möchte 5 Klappen (Port b0-b4) überwachen. Wird eine der insges. 5 ausgelöst (Bin auf Masse), sollte die Lampe angehen.
Wird jedoch S5 geschalten (b5 auf Masse) so wird die Lampe unterdrückt (Pin Portc 2 = 0)

Leider funktioniert das nicht so hundertprozentig! Portc Pin 2 zieht nicht richtig auf Masse, wenn ich den S5 drücke sollte die Led (low current Rv 1k2) am Testboard nicht leuchten. Tut sie aber (1,8V anstelle 0V)
War immer der Meinung, wenn ich den Ausgang auf 0 setze, dann ist dieser auf Masse und nicht irgendwo! Und umgehrt natürlich auch. Was mache ich falsch?
Danke Papua