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...?
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?
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
|
die waitms 5000 sind nur zur kontrolle auf dem steckbrett...will nicht immer 35 sek. warten
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.
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
|
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
|
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
|
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
Wie sollen die Transistoren die 12V durchschalten können. Bei einem NPN-Transistor muß U_BE zum Durchschalten immer positiv sein (-> Grundlagen Transistor).
Können die beiden Taster nicht direkt an den µC? Transistoren und 12V wurde schon geschrieben - da kommen maximal 2V heraus! Gruß Jobst
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...
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.