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-Tags spendiert vom ModCode:.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
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







Zitieren

Lesezeichen