Forum: Mikrocontroller und Digitale Elektronik Attiny 13 Programmierung


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Joerg D. (Firma: Robocompucom) (funeddy)


Bewertung
-1 lesenswert
nicht 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

: Verschoben durch Moderator
von Quarter Beck (Gast)


Bewertung
0 lesenswert
nicht 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!"

von Joerg D. (Firma: Robocompucom) (funeddy)


Bewertung
0 lesenswert
nicht 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

von Joerg D. (Firma: Robocompucom) (funeddy)


Bewertung
0 lesenswert
nicht 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

von Quarter Beck (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Joerg D. schrieb:

> 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.

Da habe ich sogar Gewissheit.
:)

von Joerg D. (Firma: Robocompucom) (funeddy)


Bewertung
0 lesenswert
nicht 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

von Dieter D. (Firma: Hobbytheoretiker) (dieter_1234)


Bewertung
-1 lesenswert
nicht lesenswert
Joerg D. schrieb:
> ..
&B00001010

von Joerg D. (Firma: Robocompucom) (funeddy)


Bewertung
0 lesenswert
nicht 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

von Dieter D. (Firma: Hobbytheoretiker) (dieter_1234)


Bewertung
-1 lesenswert
nicht 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/

: Bearbeitet durch User
von Joerg D. (Firma: Robocompucom) (funeddy)


Bewertung
0 lesenswert
nicht lesenswert
vielen Dank für mdie Hilfe,
ich habe für heute erstmal Feierabend gemacht, morgen geht es weiter.

vielen lieben Dank nochmal.

VG Funeddy

von Joerg D. (Firma: Robocompucom) (funeddy)


Bewertung
0 lesenswert
nicht lesenswert
Hallo nochmal,

wie lege ich denn die Ausgänge auf High/Low.
geht das mit DDR, also z.B.  DDRB = &B00001010   ?

vielen Dank für die Hilfe
VG
funeddy

von Joerg D. (Firma: Robocompucom) (funeddy)


Bewertung
0 lesenswert
nicht lesenswert
oder eher mit

DDRB, PORTB.1 = 11 für high      und
DDRB, PORTB.1 = 10 für low

Vg funeddy

von nipe (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Ist der Programmieradapter abgesteckt?

von nipe (Gast)


Bewertung
0 lesenswert
nicht lesenswert
EDIT: Sorry - sollte eigentlich egal sein. Habe mich verguckt.

Beitrag #6580127 wurde von einem Moderator gelöscht.
von Stefan ⛄ F. (stefanus)


Bewertung
1 lesenswert
nicht lesenswert
Mit dem DDR Register konfigurierst du die Richtung (Ein-/Ausgang).
Mit dem PORT Register steuerst du die Ausgänge.
Mit dem PIN Register liest du die Eingänge.

von Joerg D. (Firma: Robocompucom) (funeddy)


Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.