PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Interrupt auf Pin legen *** Danke hat sich erledigt ***



MrQu
28.02.2007, 18:03
Ein Hallo an Euch,

habe ein Problem mit Interrupt und stehe (glaube ich) auf der Leitung. *:-)*

Hier das Programm:
' *** CPU Einstellungen ***
$regfile = "m32def.dat"
$crystal = 11059200
' *** CPU Einstellungen ***

' *** Variablen Definieren ***
Dim Go As Byte
Dim Zaehler As Word
Dim Richtungx As Bit
Dim Richtungy As Bit
' *** Variablen Definieren ***

' *** Constanten ***
Const Anfahren = 83 ' Reload für Timer0 = 998 Hz (PWM 499 Hz)
Const Speed1 = 170 ' Reload für Timer0 = 2010 Hz (PWM 1005 Hz)
Const Speed2 = 199 ' Reload für Timer0 = 3030 Hz (PWM 1515 Hz)
' *** Constanten ***

' *** Port Einstellungen und Ports Reseten ***
Config Porta = Input ' Port A => Input
Config Portb = Input ' Port B => Input
Config Portc = Output ' Port C => Output
' *** Port Einstellungen und Ports Reseten ***

' *** TIMER 0 ***
Config Timer0 = Timer , Prescale = 64 ' Timer0 Einstellungen
On Timer0 Pwm ' wenn timer0 aktiv - dann Sprung zum Unterprogramm "PWM"
Enable Timer0 ' Timer0 GO
' *** TIMER 0 ***

' *** Interrupt Endschalter ***
Config Int0 = Rising
Enable Int0
On Int0 Umschalt
' *** Interrupt Endschalter ***

Enable Interrupts ' Interrupts für die ges. CPU freigegeben

' *** START-Parameter festlegen ***
Zaehler = 1
Richtungx = 0
Richtungy = 0
' *** START-Parameter festlegen ***



' ***** HAUPTPROGRAMM *****
Do

If Pina.0 = 1 Then
If Pina.1 = 0 Then
Go = 1
End If
End If

If Pina.1 = 1 Then
If Pina.0 = 0 Then
Go = 0
Zaehler = 1
End If
End If



Loop

End ' *** E N D E ***
' *** E N D E ***
' ***** HAUPTPROGRAMM *****



' *** PWM ***
Pwm: ' Sprungziel für den Timer0 (PWM-Unterprogramm)

Portc.0 = Richtungx
Portc.2 = Richtungy


If Zaehler <= 499 Then
If Go = 1 Then
Timer0 = Anfahren
Zaehler = Zaehler + 1
Toggle Portc.1
Toggle Portc.3
End If
End If

If Zaehler >= 500 Then
If Zaehler <= 1515 Then
If Go = 1 Then
Timer0 = Speed1
Zaehler = Zaehler + 1
Toggle Portc.1
Toggle Portc.3
End If
End If
End If

If Zaehler >= 1516 Then
If Go = 1 Then
Timer0 = Speed2
Toggle Portc.1
Toggle Portc.3
End If
End If

Return
' *** PWM ***

' *** Interrupt X, Y ***
Umschalt:
If Pinb.2 = 1 Then
Toggle Richtungx
End If
If Pinb.1 = 1 Then
Toggle Richtungy
End If
Return
' *** Interrupt X, Y ***

Ich möchte das wenn PinB.2 oder und PinB.1 von 0 auf 1 umschalten (Endschalter) der Interrupt ausgelöst wird und dann die Richtung geändert wird.

Helft mir mal, ich stehe gerade auf der Leitung, wie ordne ich den Int0 den Pin´s zu?

coCo
28.02.2007, 18:36
Hmmm ich dachte immer INT0 wäre auf einen festen Pin gelegt. Also beim Mega32 ist es laut Schaltplan auf PD2.

Könnte mich aber auch irren.

MfG

MrQu
01.03.2007, 10:21
@coCo

Ja, danke!!!

Ich "Blindfisch" habe ich heute morgen auch gesehen.
Wie war das mit dem Wald und den Bäumen? ...