Diese Reihenfolge finde ich etwas verwirrend. Zumindest wäre es gut, wenn Du beim Hochladen des Schaltplans GLEICH dazuschreibst, welche Änderung Du warum machstplanstnötigfindest - dann muss man nicht so ins Blaue raten.
Druckbare Version
Anhang 24883Ahh okay, dass erklärt es gut danke, irgendwie ist der Post vorhin untergegangen.
- - - Aktualisiert - - -
So hier ist der aktuelle Schaltplan, die Änderungen sind schon gemacht. Jetzt ist auch am Port 2D eine Rising Edge von 0V auf 3,8 V Messbar, aber es gibt trotzdem kein Interrupt.
Hier noch der neue Code mit D als Eingang:
Gibt das Komplikationen dass ich den ganzen Port auf Ausgang gesetzt habe? Weil PortD Pin 0 und 1 für die Rs232 Schnitstelle und pin 4 und 5 für den Motortreiber genutzt werden.Zitat:
.include "m32def.inc"
.def temp1 = r16
.org 0x000
rjmp main
.org 0x002
rjmp int0_handler ;IRQ0 Handle
int0_handler:
ldi temp1, 0b00010000 ;PortC5 HIGH, rest LOW
out PortC, temp1
reti
main:
ldi temp1, 0x00 ;Port D auf Ausgang
out DDRD, temp1
ldi temp1, 0x00 ;Port D auf LOW
out PORTD, temp1
ldi temp1, 0xFF ; PortC auf Ausgang
out DDRC, temp1
ldi temp1, 0b00000000 ;PortC Pullup LOW
out PortC, temp1
in temp1, GICR
ori temp1, 0b01000000 ;INT0 = 1
andi temp1, 0b11111101 ;IVSEL = 0
out GICR, temp1
in temp1, MCUCR ;INT0 Aktivieren
ori temp1, 0b00000011 ; rising Edge
out MCUCR, temp1
sei
ende: rjmp ende
Sry für das durcheinander ;)
Für alle Ports, die nicht genutzt werden, würde ich vorschlagen, sie auf Input zu konfigurieren -sind sie sowiso schon nach Power On Reset und zusätzlich den Pullup Widerstand einzuschalten um den Eingang auf definiertes Potential zu legen. Dann können auch unabsichtliche Berührungen oder falsche Beschaltungen den Port nicht so leicht zerstören.Zitat:
Gibt das Komplikationen dass ich den ganzen Port auf Ausgang gesetzt habe?
Zur Schaltung: "Normalschaltung" für den Taster ist: PD2 - Taster - GND, PD2 als Input, Pullup für PD2 einschalten. Dann legt der Taster bei Betätigen das GND Potential an den PD2. Müßte der INT0 dann auf falling edge konfiguriert werden.
Wenn der Taster aber wie im Schaltbild VCC schalten soll, kannst Du den 1k Widerstand durch einen viel größeren ersetzen. zB 10k oder noch besser 22k. Dann werden auch die gemessenen 3,8V näher an die 5V rankommen. Der 1k bzw 22k ist als Pulldown Widerstand eingesetzt, der bei offenem Taster ja nur dem PD2 ein definiertes Potential geben soll.
Hab mir Dein letztes Programm nicht genauer angeschaut. Nimm Dein zuerst gepostetes und laß folgende Zeilen weg und benutz obige Schaltung mit dem 10k oder 22k Pulldown.:
Wie erkennst Du daß kein Interrupt ausgeführt wird. An das Abschalten des Jtags hast du gedacht:confused: - der benutzt PC4.Code:ldi temp1, 0xFF ;Port D auf Ausgang
out DDRD, temp1
ldi temp1, 0x00 ;Port D auf LOW
out PORTD, temp1
Das ist nicht wie im Kommentar angegeben der PC5 sondern PC4Zitat:
ldi temp1, 0b00010000 ;PortC5 HIGH, rest LOW
Gruß
Searcher