Hi,
ich bin auf der Suche nach Hilfe, da ich einfach nicht weiterkomme.
Das Programm schaltet mit einem Eingang zwei verschiedene Ausgänge ein und aus. Eigentlich recht einfach. Da ich aber nur sporadisch mich mit dem Programmieren beschäftige ist es nicht so einfach mich in die Materie einzuarbeiten. Daher bitte ich um Sachliche Antworten!
Zur Hardware… Ich verwende einen Attiny 24 bei dem alle Pin benötigt werden.
Die Pins B.0 / B.1 / B.2 / B.3 sind alle als Eingänge in Verwendung. Mir ist klar, dass der PinB.3 ein Reset Pin ist. Diese würde ich aber gerne als Eingang nutzen. Ich gehe davon aus, dass dies so möglich ist. Gibt es dabei etwas zu beachten?
Meine momentane Hürde ist aber der Pin PB.2 Diesen verwende ich als Eingangspin. Starte ich den Tiny schalten erst alle Ausgänge einmal Ein und dann aus. Dies ist auch so gewollt. Dann ist der Tiny mit seinem Programm aber erst Aktive, wenn der PinB.2 einmal betätigt wurde.
Dieser Pin kann laut Datasheet ja den INT0 ansprechen. Diesen Interrupt habe ich aber in der Software nicht Aktiv gesetzt.
Was Übersehe ich oder habe ich vergessen damit ich diese Funktion nicht habe?
Mir ist bewuß, dass das Programm nicht seht elegant ist, aufgrund meine fehlenden Kenntnis, wenn aber jemand einen verbesseungsvorschlag hat
bin ich natürlich gerne offen für konstruktive Kritik.
Alles anzeigen
(Bitte Code in CodeBox einfügen! /six1)
ich bin auf der Suche nach Hilfe, da ich einfach nicht weiterkomme.
Das Programm schaltet mit einem Eingang zwei verschiedene Ausgänge ein und aus. Eigentlich recht einfach. Da ich aber nur sporadisch mich mit dem Programmieren beschäftige ist es nicht so einfach mich in die Materie einzuarbeiten. Daher bitte ich um Sachliche Antworten!
Zur Hardware… Ich verwende einen Attiny 24 bei dem alle Pin benötigt werden.
Die Pins B.0 / B.1 / B.2 / B.3 sind alle als Eingänge in Verwendung. Mir ist klar, dass der PinB.3 ein Reset Pin ist. Diese würde ich aber gerne als Eingang nutzen. Ich gehe davon aus, dass dies so möglich ist. Gibt es dabei etwas zu beachten?
Meine momentane Hürde ist aber der Pin PB.2 Diesen verwende ich als Eingangspin. Starte ich den Tiny schalten erst alle Ausgänge einmal Ein und dann aus. Dies ist auch so gewollt. Dann ist der Tiny mit seinem Programm aber erst Aktive, wenn der PinB.2 einmal betätigt wurde.
Dieser Pin kann laut Datasheet ja den INT0 ansprechen. Diesen Interrupt habe ich aber in der Software nicht Aktiv gesetzt.
Was Übersehe ich oder habe ich vergessen damit ich diese Funktion nicht habe?
Mir ist bewuß, dass das Programm nicht seht elegant ist, aufgrund meine fehlenden Kenntnis, wenn aber jemand einen verbesseungsvorschlag hat
bin ich natürlich gerne offen für konstruktive Kritik.
BASCOM-Quellcode
- $regfile = "attiny24.dat"
- $crystal = 80000
- $hwstack = 40
- $swstack = 16
- $framesize = 32
- Config Pinb.0 = Input
- Config Pinb.1 = Input
- Config Pinb.2 = Input
- Config Pinb.3 = Input
- Config Porta = Output
- Taster1 Alias Pinb.0
- Taster2 Alias Pinb.1
- Taster3 Alias Pinb.3
- Taster4 Alias Pinb.2
- W1r Alias Porta.2
- W1g Alias Porta.0
- W2r Alias Porta.3
- W2g Alias Porta.1
- W3r Alias Porta.6
- W3g Alias Porta.4
- W4r Alias Porta.7
- W4g Alias Porta.5
- Dim Zaehler1 As Bit
- Dim Zaehler2 As Bit
- Dim Zaehler3 As Bit
- Dim Zaehler4 As Bit
- W1r = 1 ' Abgleich alle Antriebe schalten einmal hin und her'
- Waitms 300
- W1r = 0
- Waitms 50
- W1g = 1
- Waitms 300
- W1g = 0
- Waitms 50
- W2r = 1
- Waitms 300
- W2r = 0
- Waitms 50
- W2g = 1
- Waitms 300
- W2g = 0
- Waitms 50
- W3r = 1
- Waitms 300
- W3r = 0
- Waitms 50
- W3g = 1
- Waitms 300
- W3g = 0
- Waitms 50
- W4r = 1
- Waitms 300
- W4r = 0
- Waitms 50
- W4g = 1
- Waitms 300
- W4g = 0
- Disable Interrupts
- Do
- Debounce Taster1 , 0 , On_taster1 , Gosub 'Taster 1 Entprellen'
- Debounce Taster2 , 0 , On_taster2 , Gosub 'Taster 2 Entprellen'
- Debounce Taster3 , 0 , On_taster4 , Gosub 'Taster 3 Entprellen'
- Debounce Taster4 , 0 , On_taster4 , Gosub 'Taster 4 Entprellen'
- Loop
- End
- On_taster1:
- Bitwait Taster1 , Reset 'warten bis Taster auf 0 geht'
- Bitwait Taster1 , Set 'warten bis Taster auf 1 geht'
- If Zaehler1 = 0 Then
- W1r = 1
- Waitms 500
- W1r = 0
- Zaehler1 = 1
- Else
- W1g = 1
- Waitms 500
- W1g = 0
- Zaehler1 = 0
- End If
- Return
- On_taster2:
- Bitwait Taster2 , Reset 'warten bis Taster auf 0 geht'
- Bitwait Taster2 , Set 'warten bis Taster auf 1 geht'
- If Zaehler2 = 0 Then
- W2r = 1
- Waitms 500
- W2r = 0
- Zaehler2 = 1
- Else
- W2g = 1
- Waitms 500
- W2g = 0
- Zaehler2 = 0
- End If
- Return
- On_taster3:
- Bitwait Taster3 , Reset 'warten bis Taster auf 0 geht'
- Bitwait Taster3 , Set 'warten bis Taster auf 1 geht'
- If Zaehler3 = 0 Then
- W3r = 1
- Waitms 500
- W3r = 0
- Zaehler3 = 1
- Else
- W3g = 1
- Waitms 500
- W3g = 0
- Zaehler2 = 0
- End If
- Return
- On_taster4:
- Bitwait Taster4 , Reset 'warten bis Taster auf 0 geht'
- Bitwait Taster4 , Set 'warten bis Taster auf 1 geht'
- If Zaehler4 = 0 Then
- W4r = 1
- Waitms 500
- W4r = 0
- Zaehler4 = 1
- Else
- W4g = 1
- Waitms 500
- W4g = 0
- Zaehler4 = 0
- End If
- Return