Attiny 13 Programmierung

OP (Firma: Robocompucom) #6578835
Lesenswert?

Hallo und guten Abend,

ich habe eine kleines Problem.
Ich hbae hier ein Programm, welches über einen Attiny 13 eine LED 
blinken lässt, wenn auf einen LDR Fotowiderstand Licht fällt. Die LED 
ist an den PortB3 angeschlossen. Zusätzlich will ich jetzt aber 
gleichzeitig eine zweite LED die an PortB1 angeschlossen ist, blinken 
lassen.
Ich habe hierzu folgenden Basic Code...
1
$regfile = "ATtiny13.DAT"
2
$crystal = 16000                                            'Frequenz des  internen Oszillators
3
$hwstack = 2                                                'hardwarestack herabsetzen damit genügend variablen zur verfügung stehen
4
    
5
Config Adc = Single , Prescaler = Auto
6
Config Portb = &B00001000                                   'Pinb.3 auf 'Ausgang', Rest auf 'Eingang' schalten
7
Portb = 0                                                   'Ausgänge auf Low setzen
8
Stop Ac                                                     'Analog-Komparator abschalten, um Strom zu sparen
9

10
Wdtcr = &B11010011                                          'Watchdog definieren: 0.125 Sekunden, Interrupt auslösen, kein Reset
11
Enable Interrupts                                           'Interrupts freigeben
12

13
Const Tagschwelle = 800                                     'Schwellwert für Schlafmodus
14
Dim Ldr As Integer                                          '0 = Dunkel, 1023 = Hell
15

16
Do
17
 Gosub Pause
18
 Start Adc                                                  'A/D-Wandler starten
19
 Ldr = Getadc(2)                                            'Helligkeitswert einlesen
20
 Stop Adc                                                   'A/D-Wandler zum Stromsparen wieder stoppen
21
 If Ldr <= Tagschwelle Then
22
  Gosub Blinken                                             'Bei großer Änderung Dunkel->Hell: Blinken
23
 End If
24
Loop
25

26
Blinken:                                                    'LED blinken lassen
27
  Portb.3 = 1
28
  Reset Watchdog
29
  Powerdown
30
  Portb.3 = 0
31
Return
32

33
Pause:
34
 Wdtcr = &B11110001                                         'Watchdog auf 8 Sekunden stellen
35
 Reset Watchdog
36
 Powerdown
37
 Wdtcr = &B11010011                                         'Watchdog wieder auf 0,125 Sekunden zurückstellen
38
Return
39

40
End


Wie kann ich das realisieren das die zweite LED an PortB1 auch mit 
blinkt.

Kann da jemand weiter helfen.

vielen Dank und viele Grüße
funeddy
Gast #6578853
Lesenswert?

Da musst Du Portb.1 das Gleiche machen lassen, wie Portb.3

Blinken:                                        'LED blinken lassen

  Portb.3 = 1
  Portb.1 = 1



  Reset Watchdog

  Powerdown

  Portb.3 = 0
  Portb.1 = 0

Return

Print "Mit freundlichem Gruss!"
OP (Firma: Robocompucom) #6578874
Lesenswert?

Danke für die Hilfe,

habe jetzt folgenden Code Probiert
1
Blinken:                                                    'LED blinken lassen
2
  Portb.3 = 1
3
  PORTB.1 = 1
4
  Reset Watchdog
5
  Powerdown
6
  Portb.3 = 0
7
  PORTB.1 = 0
8
Return

Leider funktioniert dann garnix mehr. Weder die eine noch die andere LED 
blinkt.
Weißt Du da weiter ?

Vielen Dank und Viele Grüße
funeddy
OP (Firma: Robocompucom) #6578912
Lesenswert?

Habe jetzt den Code nochmal geprüft, es funktioniert leider nicht
Ich habe jetzt folgenden Code
1
Blinken:                                                    'LED blinken lassen
2
  Portb.3 = 1
3
  Portb.1 = 1
4
  Reset Watchdog
5
  Powerdown
6
  Portb.3 = 0
7
  Portb.1 = 0
8
Return

ich weiß auch nicht warum das nicht funktioniert.
Vlt. muss der PortB.1 auch auf

Config Portb = &B00001000                                   'Pinb.3 auf 
'Ausgang', Rest auf 'Eingang' schalten

Ich habe die Vermutung das ich Pinb.1 auch auf ausgang setzen muss.

vielen Dank für die Hilfe
VG funeddy
OP (Firma: Robocompucom) #6578976
Lesenswert?

ich habe das jetzt mit Portb.1=output und Portb.3=output probiert.
Kannst Du mir kurz schreiben wie das Binär geht. Das geht aber auch 
nicht.

also z.B. Config Portb = &B00001000 wäre nur der Portb.3 wie sieht es 
dann aus wenn der Portb.1 dazu kommt.

vielen Dank für die Hilfe

Vg funeddy
OP (Firma: Robocompucom) #6579022
Lesenswert?

Das habe ich mir auch gedacht und schon ausprobiert. Keine Chance, es 
geht nicht. Jetzt mal noch ne grundsätzliche Frage. Kann ich denn den 
Portb.1 überhaupt zum schalten einer LED nutzen ? Normalerweise sollte 
das doch funktionieren ?

vielen Dank und viele Grüße
funeddy
(Firma: Hobbytheoretiker) #6579102
Lesenswert?

Schritt 1: Setzen der Ports auf Output.
&B00001010
Schritt 2: Setzen der Ausgänge auf High/Low (und - oder Verknüpfung)
.255 müßte alle versuchen zu setzen.

Tausche mal alles von
Portb.3 = 1
Portb.1 = 1
zu:
Portb.1 = 1
Portb.3 = 1

Wenn die Doppelbelegung irgendwo angesprochen wurde bei dem Pin gibt es 
Probleme:
https://www.rahner-edu.de/grundlagen/einf%C3%BChrung-in-bascom/
Beitrag #6580127 wurde von einem Moderator gelöscht.
OP (Firma: Robocompucom) #6580230
Lesenswert?

Okay, vielen Dank für die Hilfe. Ich habe jetzt das Programm noch mal 
abgeändert und jetzt blinken, wenn der LDR Licht bekommt beide LED.

Damit kann der Thread geschlossen werden. Es funktioniert jetzt bestens.

vielen lieben Dank nochmal für die Hilfe.

VG funeddy oder Joerg

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