Forum: Mikrocontroller und Digitale Elektronik 2 Eingänge 2 Ausgänge


von TimBo (Gast)


Lesenswert?

Hallo,
irgendwie stehe ich auf 'n Schlauch.
Ich habe einen ATMega8 (später ATTiny45)
Es gibt 2 Taster an 2 Eingängen von +5V.
je nach dem welcher gedrückt wird soll ein Ausgang auf HI gehen für 35 
Sekunden. Sollte in dieser Zeit wieder einer von beiden gedrückt werden 
sollen beide sofort auf LO gehen...
in Bascom ;-)
Irgendwie bekomme ich das nicht hin...kann jemand helfen...?

von picit (Gast)


Lesenswert?

Auf welchem Schlauch stehst Du denn?

Der Schlauch, der das eigenständige Arbeiten mit Energie versorgt?
Oder der Schlauch, der Faulheit kanalisiert?

Was hast Du denn schon gemacht? Was geht schon? Was geht nicht?

von TimBo (Gast)


Lesenswert?

ja, sehr witzig...
folgendes hab ich schon, mit timer...geht aber halt nicht...
1
$regfile "m8def.dat"
2
$crystal = 8000000
3
Dim Status As Byte
4
5
' Pinkonfiguration *************************************************************
6
Eingang_auf Alias Pind.0
7
Eingang_zu Alias Pind.1
8
Ausgang_auf Alias Portd.2
9
Ausgang_zu Alias Portd.3
10
11
'Datenrichtugsregister Port B, 1=Ausgang, 0=Eingang
12
'Pin     76543210
13
Ddrd = &B00001100
14
15
Config Timer0 = Timer , Prescale = 1024                     ' (8000000Hz/1024) /256=30,517578Hz)
16
Enable Timer0
17
On Timer0 Timersprung
18
Enable Interrupts
19
20
Do
21
Loop
22
23
Reaktion_auf_taste:
24
   Ausgang_auf = 1
25
   Waitms 5000                                              '35 Sekunden warten
26
   Ausgang_auf = 0
27
Return
28
29
30
Reaktion_zu_taste:
31
   Ausgang_zu = 1
32
   Waitms 5000                                              '35 Sekunden warten
33
   Ausgang_zu = 0
34
Return
35
36
Timersprung:
37
If Ausgang_auf = 1 And Eingang_auf = 1 Then Goto Alles_aus
38
If Ausgang_auf = 1 And Eingang_zu = 1 Then Goto Alles_aus
39
If Ausgang_zu = 1 And Eingang_zu = 1 Then Goto Alles_aus
40
If Ausgang_zu = 1 And Eingang_zu = 1 Then Goto Alles_aus
41
If Eingang_zu = 1 Then Goto Reaktion_zu_taste
42
If Eingang_auf = 1 Then Goto Reaktion_auf_taste
43
Return
44
45
Alles_aus:
46
Ausgang_auf = 0
47
Ausgang_zu = 0
48
Re

von TimBo (Gast)


Lesenswert?

die waitms 5000 sind nur zur kontrolle auf dem steckbrett...will nicht 
immer 35 sek. warten

von Der Rächer der Transistormorde (Gast)


Lesenswert?

TimBo schrieb:
> Irgendwie bekomme ich das nicht hin...kann jemand helfen...?

Ein Zustandsdiagramm sollte helfen aber es geht auch in Pseudocode

Modul: BlödeHausaufgabe

Flags:
WarTasteSchonGedrückt


Timer
ZeitSeitTasteGedrückt

Ist Taste gedrückt?
 WarTasteSchonGedrückt = Falsch dann Ausgang -> Hi
 WarTasteSchonGedrückt = Wahr dann Ausgang -> Low

usw. usf


Der Trick ist der die Aufgabe so gut wie möglich in Software abzubilden!

Das macht das programmieren leichter und nach einem Jahr weiß man worum 
es ging.

von TimBo (Gast)


Lesenswert?

hmmm....ich versuche und überlege mal...

von TimBo (Gast)


Lesenswert?

soweit geht es...nur mit den 35 sekunden warten am ausgang geht nicht...
1
$regfile "m8def.dat"
2
$crystal = 8000000
3
Dim Status_taste_auf As Byte
4
Dim Status_taste_zu As Byte
5
Dim Zaehler As Word
6
' Pinkonfiguration *************************************************************
7
Eingang_auf Alias Pind.0
8
Eingang_zu Alias Pind.1
9
Ausgang_auf Alias Portd.2
10
Ausgang_zu Alias Portd.3
11
12
'Datenrichtugsregister, 1=Ausgang, 0=Eingang
13
'Pin     76543210
14
Ddrd = &B00001100
15
16
Config Timer0 = Timer , Prescale = 1024                     ' (8000000Hz/1024) /256=30,517578Hz)
17
Enable Timer0
18
On Timer0 Timersprung
19
Enable Interrupts
20
21
Ausgang_zu = 0
22
Ausgang_auf = 0
23
Status_taste_auf = 0
24
Status_taste_zu = 0
25
Zaehler = 0
26
27
Do
28
   Debounce Eingang_auf , 1 , Reaktion_auf_taste , Sub
29
   Debounce Eingang_zu , 1 , Reaktion_zu_taste , Sub
30
Loop
31
32
Reaktion_auf_taste:
33
   If Status_taste_auf = 1 Then Goto Alles_aus
34
   If Ausgang_zu = 1 Then Goto Alles_aus
35
   Status_taste_auf = 1
36
37
Return
38
39
Reaktion_zu_taste:
40
   If Status_taste_zu = 1 Then Goto Alles_aus
41
   If Ausgang_auf = 1 Then Goto Alles_aus
42
   Status_taste_zu = 1
43
44
Return
45
46
Timersprung:
47
   If Status_taste_auf = 1 Then Ausgang_auf = 1
48
   If Status_taste_zu = 1 Then Ausgang_zu = 1
49
Return
50
51
Alles_aus:
52
   Ausgang_zu = 0
53
   Ausgang_auf = 0
54
   Status_taste_auf = 0
55
   Status_taste_zu = 0
56
   Zaehler = 0
57
Return

von TimBo (Gast)


Lesenswert?

so hab ich hinbekommen...aber ob das nun eine optimale lösung ist...?
1
$regfile "m8def.dat"
2
$crystal = 8000000
3
Dim Status_taste_auf As Byte
4
Dim Status_taste_zu As Byte
5
Dim Zaehler As Long
6
' Pinkonfiguration *************************************************************
7
Eingang_auf Alias Pind.0
8
Eingang_zu Alias Pind.1
9
Ausgang_auf Alias Portd.2
10
Ausgang_zu Alias Portd.3
11
12
'Datenrichtugsregister, 1=Ausgang, 0=Eingang
13
'Pin     76543210
14
Ddrd = &B00001100
15
16
Config Timer0 = Timer , Prescale = 1024                     ' (8000000Hz/1024) /256=30,517578Hz)
17
Enable Timer0
18
On Timer0 Timersprung
19
Enable Interrupts
20
21
Ausgang_zu = 0
22
Ausgang_auf = 0
23
Status_taste_auf = 0
24
Status_taste_zu = 0
25
Zaehler = 0
26
27
Do
28
   Debounce Eingang_auf , 1 , Reaktion_auf_taste , Sub
29
   Debounce Eingang_zu , 1 , Reaktion_zu_taste , Sub
30
Loop
31
32
Reaktion_auf_taste:
33
   If Status_taste_auf = 1 Then Goto Alles_aus
34
   If Ausgang_zu = 1 Then Goto Alles_aus
35
   Status_taste_auf = 1
36
37
Return
38
39
Reaktion_zu_taste:
40
   If Status_taste_zu = 1 Then Goto Alles_aus
41
   If Ausgang_auf = 1 Then Goto Alles_aus
42
   Status_taste_zu = 1
43
Return
44
45
Timersprung:
46
   If Status_taste_auf = 1 Then Ausgang_auf = 1
47
   If Status_taste_zu = 1 Then Ausgang_zu = 1
48
Zaehler = Zaehler + 1
49
If Zaehler = 1050 Then Goto Alles_aus
50
51
Return
52
53
Alles_aus:
54
   Ausgang_zu = 0
55
   Ausgang_auf = 0
56
   Status_taste_auf = 0
57
   Status_taste_zu = 0
58
   Zaehler = 0
59
Return

von TimBo (Gast)


Lesenswert?

nee..so jetzt richtig...der timer lief ja weiter im hintergrund
1
$regfile "m8def.dat"
2
$crystal = 8000000
3
Dim Status_taste_auf As Byte
4
Dim Status_taste_zu As Byte
5
Dim Zaehler As Long
6
' Pinkonfiguration *************************************************************
7
Eingang_auf Alias Pind.0
8
Eingang_zu Alias Pind.1
9
Ausgang_auf Alias Portd.2
10
Ausgang_zu Alias Portd.3
11
12
'Datenrichtugsregister, 1=Ausgang, 0=Eingang
13
'Pin     76543210
14
Ddrd = &B00001100
15
16
Config Timer0 = Timer , Prescale = 1024                     ' (8000000Hz/1024) /256=30,517578Hz)
17
'Enable Timer0
18
On Timer0 Timersprung
19
Enable Interrupts
20
21
Ausgang_zu = 0
22
Ausgang_auf = 0
23
Status_taste_auf = 0
24
Status_taste_zu = 0
25
Zaehler = 0
26
27
Do
28
   Debounce Eingang_auf , 1 , Reaktion_auf_taste , Sub
29
   Debounce Eingang_zu , 1 , Reaktion_zu_taste , Sub
30
Loop
31
32
Reaktion_auf_taste:
33
   If Status_taste_auf = 1 Then Goto Alles_aus
34
   If Ausgang_zu = 1 Then Goto Alles_aus
35
   Status_taste_auf = 1
36
   Enable Timer0
37
Return
38
39
Reaktion_zu_taste:
40
   If Status_taste_zu = 1 Then Goto Alles_aus
41
   If Ausgang_auf = 1 Then Goto Alles_aus
42
   Status_taste_zu = 1
43
   Enable Timer0
44
Return
45
46
Timersprung:
47
   If Status_taste_auf = 1 Then Ausgang_auf = 1
48
   If Status_taste_zu = 1 Then Ausgang_zu = 1
49
   Zaehler = Zaehler + 1
50
   If Zaehler = 1070 Then Goto Alles_aus
51
'35 Sekunden * 30,517578 (aus Timer0) = 1068,1152
52
'1070 dauert ca. 35 Sekunden
53
Return
54
55
Alles_aus:
56
   Ausgang_zu = 0
57
   Ausgang_auf = 0
58
   Status_taste_auf = 0
59
   Status_taste_zu = 0
60
   Zaehler = 0
61
   Disable Timer0
62
Return

von TimBo (Gast)


Lesenswert?

ist das nun eine optimale lösung? geht bestimmt auch besser...

von Peter D. (peda)


Lesenswert?

Sehr einfach geht es hiermit:

Beitrag "Wartezeiten effektiv (Scheduler)"


Peter

von Sun6 (Gast)


Angehängte Dateien:

Lesenswert?

hallo,
im anhang habe ich die schaltung welche nur halb funktioniert...
die beiten Transistoren die die von 12v geschalten werden schalten dann 
5V durch zum µc...dieser gibts dann an den Pins PB2 und PB3 ein HI aus, 
dieses soll dann die folgenden Transistoren schalten das sie 12V 
durchschalten....machen sie aber nicht....nur ca. 5V
kann einer helfen?
Danke schonmal

von Moon1 (Gast)


Lesenswert?

Wie sollen die Transistoren die 12V durchschalten können. Bei einem 
NPN-Transistor muß U_BE zum Durchschalten immer positiv sein (-> 
Grundlagen Transistor).

von Jobst M. (jobstens-de)


Lesenswert?

Können die beiden Taster nicht direkt an den µC?

Transistoren und 12V wurde schon geschrieben - da kommen maximal 2V 
heraus!


Gruß

Jobst

von Sun6 (Gast)


Lesenswert?

hallo, nein, die beiden taster kommen von 12V (14,6V) von der 
Autobatterie.
Diese Tastsignale sollen für 35 Sekunden verlängert werden...
Die Transistoren schalten auch kei8ne Last...die Signale gehen aufs 
Steuerteil vom  Auto...

von Sun6 (Gast)


Lesenswert?

Also was kann man da nun machen...?

von Sun6 (Gast)


Lesenswert?

Also wie kann ich aus 5v vom µC ein 12V-Signal weiterleiten...?

von fluttershy (Gast)


Lesenswert?

http://www.mikrocontroller.net/articles/Pegelwandler

was wird draus wenns fertig ist?

von Sungod S. (Firma: google) (sungod) Flattr this


Lesenswert?

glaube hab ich oben schonmal geschrieben...

es ist eine verdeckautomatik, das verdeck meines cabrios geht nur auf/zu 
wenn man den taster gedrückt hält. nun dauert es etwa 35 sekunden bis es 
auf/zu ist.
und da dachte ich mir, ich (verlängere) den tasterdruck um 35 sekunden.
softwaremäßig ist es schon so programmiert, das wenn man ein 2tes mal 
drückt die sache anhält oder den anderen Taster drück auch anhält und 
erst bei erneutem drücken wieder losgeht.

von Jobst M. (jobstens-de)


Lesenswert?

Stefan S. schrieb:
> es ist eine verdeckautomatik, das verdeck meines cabrios geht nur auf/zu
> wenn man den taster gedrückt hält.

Sowas dachte ich mir schon. Auf ist eine Sache, aber schliessen eine 
andere.

http://www.youtube.com/watch?v=7Guufs3mdgg


Gruß

Jobst

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.