Forum: Mikrocontroller und Digitale Elektronik Ampel mit Bascom und ATTiny2313


von Pharma (Gast)


Lesenswert?

Hallo,

bin dabei eine kleine Ampel zu programieren.
Soweit klappe das auch, nun möchte ich aber das die Ampel rot leuchtet 
solange an PB3 nicht VCC anlieg.

Leider leuchtet sie jetzt durchgänig rot.
1
$regfile = "attiny2313.dat"
2
$crystal = 1000000
3
$hwstack = 32
4
$swstack = 8
5
$framesize = 16
6
7
8
9
'Grün an PB0
10
Gruen Alias Portb.0
11
Config Gruen = Output
12
13
'Gelb an PB1
14
Gelb Alias Portb.1
15
Config Gelb = Output
16
17
'Rot an PB2
18
Rot Alias Portb.2
19
Config Rot = Output
20
21
'Schalter An Pb3
22
Schalter Alias Portb.3
23
Config Schalter = Input
24
25
Do
26
   If Schalter = 1 Then
27
  Rot = 1
28
  Gelb = 0
29
  Gruen = 0
30
 Waitms 5000
31
  Rot = 1
32
  Gelb = 1
33
  Gruen = 0
34
 Waitms 2000
35
  Rot = 0
36
  Gelb = 0
37
  Gruen = 1
38
 Waitms 5000
39
   Rot = 0
40
  Gelb = 1
41
  Gruen = 0
42
 Waitms 2000
43
44
   Else
45
      Rot = 1
46
      Gelb = 0
47
      Gruen = 0
48
49
   End If
50
51
Loop
52
53
End

MfG Pharma

von Krapao (Gast)


Lesenswert?

Sieht deine Schaltung so ähnlich aus?
1
          ^ Vcc
2
          |
3
          #
4
          # Pull-Up Widerstand 
5
          # 1-10k
6
          |
7
PB3 o-----+
8
          |
9
          o |
10
            |=| Taster oder Schalter
11
          o |
12
          |
13
         --- Gnd

Oder heisst "solange an PB3 nicht VCC anlieg." dass da der Draht zu PB3 
frei in der Gegend rumbambelt?

von Räuber (Gast)


Lesenswert?

Das Programm schon im Simulator gehabt? Es läuft wie es soll, aber die 
Ausgänge werden programmtechnisch scheinbar nicht richtig angesprochen!

von Pharma (Gast)


Lesenswert?

Hallo, angeschlossen ist der Schalter folgendermaßen:
1
          ^ Vcc
2
          |
3
          o |
4
            |=| Taster oder Schalter
5
          o |
6
          |
7
PB3 o-----+
8
          |
9
          #
10
          # Pull-Up Widerstand 
11
          # 10k
12
          |
13
         --- Gnd

Bei dem Simulator sehe ich leider noch garnicht durch, bin noch neuling 
in sachen AVR.

Wenn ich nur
1
$regfile = "attiny2313.dat"
2
$crystal = 1000000
3
$hwstack = 32
4
$swstack = 8
5
$framesize = 16
6
7
8
9
'Grün an PB0
10
Gruen Alias Portb.0
11
Config Gruen = Output
12
13
'Gelb an PB1
14
Gelb Alias Portb.1
15
Config Gelb = Output
16
17
'Rot an PB2
18
Rot Alias Portb.2
19
Config Rot = Output
20
21
'Schalter An Pb3
22
Schalter Alias Portb.3
23
Config Schalter = Input
24
25
Do
26
  Rot = 1
27
  Gelb = 0
28
  Gruen = 0
29
 Waitms 5000
30
  Rot = 1
31
  Gelb = 1
32
  Gruen = 0
33
 Waitms 2000
34
  Rot = 0
35
  Gelb = 0
36
  Gruen = 1
37
 Waitms 5000
38
   Rot = 0
39
  Gelb = 1
40
  Gruen = 0
41
 Waitms 2000
42
43
Loop
44
45
End

verwende läuft die Ampel, also müssten doch die Pins richtig 
angesporchen werden oder?

Wenn an PB3 +5 anliegen soll die Ampel ihr Programm durchspielen, wenn 
keine Spannung anliegt soll die Ampel permanent rot sein.

MfG Pharma

von Norbert S. (norberts)


Lesenswert?

Pharma schrieb:
> Schalter Alias Portb.3
> Config Schalter = Input

Pb.3 ist als Eingang definiert aber Schalter ist Portb.3.
Port ist aber das was man als Ausgang schreibt bzw der Pullup wenn als 
Eingang definiert.
Also bleibt Schalter immer 0, egal wie du an dem Beinchen wackelst.

Gewöhne Dir das so an:
1
Ddrb.3 = 0         'Eingang, könnte man weglassen
2
Schalter Alias Pinb.3
3
Portb.3 = 1         'Schaltet den internen Pullup ein, Schalter vom Pin an Masse nötig
4
5
'Gelb an PB1
6
Ddrb.1 = 1           'Output
7
Gelb Alias Portb.1

Gruß,
Norbert

von meinName (Gast)


Lesenswert?

Pharma schrieb:
> 'Schalter An Pb3
> Schalter Alias Portb.3
> Config Schalter = Input

hier muss es:

Schalter Alias Pinb.3

heißen. und ein PullUp der nach Gnd zieht ist ein PullDown

von Norbert S. (norberts)


Lesenswert?

Hi,

ich hatte den Schaltplan nicht gesehen, lass den "Portb.3 = 1" internen 
Pullup weg.
Du braucht ausschliesslich Schalter Alias Pinb.3, weiter nichts-

Gruß,
Norbert

von Pharma (Gast)


Lesenswert?

Hallo,
also danke erstmal.
das Port in PIN zu ändern hat schonmal funktioniert.
Nur dauert es einige Sekunden bis der Tiny merkt das ich die Spannung an 
PB3 weggenommen habe, hat das was mit meiner eingestellten Taktfrequenz 
zu tun?

MfG

von Karl H. (kbuchegg)


Lesenswert?

Pharma schrieb:
> Hallo,
> also danke erstmal.
> das Port in PIN zu ändern hat schonmal funktioniert.
> Nur dauert es einige Sekunden bis der Tiny merkt das ich die Spannung an
> PB3 weggenommen habe, hat das was mit meiner eingestellten Taktfrequenz
> zu tun?

Nein.
Das hat was mit deinem Programm zu tun, welches du eigentlich kennen 
solltest.

Dein Programm schaltet rot ein und wartet dann 5 Sekunden.
Dann schaltet es gelb ein und wartet wieder 2 sekunden
dann grün und wartet wieder 5 Sekunden
bis dann endlich wieder erst mal gelb eingeschaltet wird, gefolgt von 
einer 2 sekündigen Pause.

und erst dann ist es mit einer Ampelsequenz fertig und in der Schleife 
gehts nach oben  wo dann endlich überprüft wird ob der Eingang auf 1 
ist.
Dein Programm verbrutzelt also 12 Sekunden Rechenzeit mit Däumchen 
drehen, ehe es dann wieder mal nachsieht, ob du den Taster betätigt 
hast.

Und das ist genau das, was du siehst.

von Pharma (Gast)


Lesenswert?

Halli Hallo,

danke für deine ausführliche Info, das ist mir auch gerade selber 
aufgefallen. Vielen dank nochmal an alle.

MfG Pharma

von Rolf H. (flash01)


Lesenswert?

Hallo Karl Heinz,
wenn man zum Schluß sowas liest, muß man sich fragen
"weshalb habe ich dafür die Zeit investiert"!

Grüße

Rolf

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.