SOS-Schlüsselanhänger blinkt nur bei Tastendruck

OP #4713543
Lesenswert?

Hallo,

Ich bin gerade dabei einen Schlüsselanhänger zu bauen, der SOS blinken 
soll. Gesteuert wird er durch einen Attiny13. Ziel ist es, dass die LED 
"SOS" blinkt sobalt der Knopf einmal kurz gedrückt wird. Die LED blinkt 
aber leider nur wenn  der Knopf gedrückt bleibt, sonst geht sie sofort 
aus.Lötstellen sind alle kontrolliert!!!

Hier ein paar infos:
Ich programmiere den Attiny13 mit Bascom AVR
Mein Programmer ist ein: "mySmartUSB light"
Zum flashen verwende ich: "myAVR Programm Tool V 1.39"
Ich bin erst 13 also bitte verständnis für kleine Fehler haben :-)

Hier der code:
1
$regfile = "attiny13.dat"
2
$crystal = 1000000
3
$hwstack = 10
4
$swstack = 20
5
$framesize = 30
6

7
Config Portb.2 = Output
8
Config Pinb.1 = Input
9

10
Portb.2 = 0
11

12
   Do
13
      If Pinb.1 = 0 Then
14
         Portb.2 = 1                                        'An kurz
15
         Waitms 200
16
         Portb.2 = 0
17
         Waitms 200                                         'Aus  kurz
18
         Portb.2 = 1                                        'An   kurz
19
         Waitms 200
20
         Portb.2 = 0
21
         Waitms 200                                         'Aus  kurz
22
         Portb.2 = 1                                        'An  kurz
23
         Waitms 200
24
         Portb.2 = 0
25
         Waitms 200                                         'Aus  kurz
26
         Portb.2 = 1                                        'An lang
27
         Waitms 500
28
         Portb.2 = 0
29
         Waitms 500                                         'Aus lang
30
         Portb.2 = 1                                        'An  land
31
         Waitms 500
32
         Portb.2 = 0
33
         Waitms 500                                         'Aus lang
34
         Portb.2 = 1                                        'An  lang
35
         Waitms 500
36
         Portb.2 = 0
37
         Waitms 500                                         'Aus lang
38
         Portb.2 = 1                                        'An kurz
39
         Waitms 200
40
         Portb.2 = 0
41
         Waitms 200                                         'Aus  kurz
42
         Portb.2 = 1                                        'An   kurz
43
         Waitms 200
44
         Portb.2 = 0
45
         Waitms 200                                         'Aus  kurz
46
         Portb.2 = 1                                        'An  kurz
47
         Waitms 200
48
         Portb.2 = 0                                        'Aus kurz
49
         Waitms 1500
50
      Else
51
         Portb.2 = 0
52

53
      End If
54
   Loop
55
End

PS: ja ich weiß der sockel ist zu groß
Angehängte Dateien:
Gast #4713555
Lesenswert?

1
pseudocode…
2

3
boolean blinke = false;
4

5
loop
6
 If Pinb.1 = 0
7
 then
8
  blinke != blinke;
9
 end fi
10

11
 if blinke
12
 then
13
  ...
14
 end if
15
end loop;

das problem ist, das Pinb.1 (eingabepin) nicht entprellt ist, und das 
der tastendruck zum ausschalten durch deine delay-verstopfte loop erst 
erkannt wird, wenn die blinksequenz beendet wurde, und der abfragecode 
wieder ausgeführt wird.

das wäre der grund (eigentlich: die gründe) für dich, dir mal 
interrupts anzuschauen :)
#4713562
Lesenswert?

Das Programm entspricht zwar nicht der "reinen Lehre", aber es würde 
funktionieren. Doch wo hast Du denn den Schaltplan her? ATTiny mit 9V 
betreiben und einen 1kOhm Widerstand in der Masseleitung? Das kann nicht 
funktionieren! Also Widerstand durch Brücke ersetzen und einen 
Spannungsregler vorschalten oder besser gleich mit einer 3V 
Lithium-Knopfzelle betreiben.
#4713626
Lesenswert?

Die hohe Betriebsspannunng hat den Kontroller ziemlich in die Breite 
gezogen, wie man sehen kann. Wenn das die einzige Auswirkung ist, geht's 
ja noch.
:)
https://www.mikrocontroller.net/attachment/preview/304696.jpg

Lukas S. schrieb:
> Ich bin erst 13 also bitte verständnis für kleine Fehler haben :-)

Achso, daher auch ein Attiny13. Ich glaube, ich werde mir bal ein paar 
Attiny85 beschaffen müssen...
:)
MfG Paul

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren