Forum: Mikrocontroller und Digitale Elektronik PB5 beim ATTINY 15 verwenden


von Peter X. (vielfrass)


Lesenswert?

Was muss ich denn machen, damit ich PB5(Reset) vom ATTiny als Output 
verwenden kann?

Habe momentan kleine Denkblockade. Mein kleines Lauflichtprogramm geht 
nur bis PB4.

Habe schon probiert "Serial High Voltage programming" und Fuse gesetzt 
"disable external reset"

Ich sehe das doch richtig, das ich wenn ich mich mit der Fuse "disable 
external reset" ausgesperrt habe, ich immer noch mit "Serial High 
Voltage programming" reinkomme?

Habe übrigens STK500-Board und AVRstudio 3.2

von Philipp B. (philipp_burch)


Lesenswert?

Peter X. wrote:
> Ich sehe das doch richtig, das ich wenn ich mich mit der Fuse "disable
> external reset" ausgesperrt habe, ich immer noch mit "Serial High
> Voltage programming" reinkomme?

ja.

von Peter D. (peda)


Lesenswert?

Oder den Nachfolger ATtiny25 nehmen und nen Bootloader reinbrennen.


Peter

von Peter X. (vielfrass)


Lesenswert?

Habe hier mal mein kleines Lauflichtprogramm, leider lässt sich damit 
PB5 bein ATTiny15 nicht ansteuern. Währe schön, wenn mir mal jemand 
einen Tip geben könnte, wie das geht.
1
;****************************************************************************
2
; Lauflichtdemo 
3
;****************************************************************************
4
.include "C:\programme\atmel\avr studio\appnotes\TN15def.inc"
5
6
.def    Temp            =r16
7
.def    Delay1          =r19
8
.def    Delay2          =r20
9
.def    Delay3    =r21
10
Start:
11
        ser     Temp
12
        out     DDRB,Temp       ;PB0-7 Output
13
        ldi  Temp,$FE
14
15
Loop:
16
  out  PORTB,Temp
17
  sec      ;SET Carry
18
  rol  Temp
19
  sbrs  Temp,6
20
  ldi  Temp,$FE
21
  
22
23
  ldi  Delay3,2
24
Delay:
25
        dec     Delay1
26
        brne    Delay
27
        dec     Delay2
28
        brne    Delay
29
        dec  Delay3
30
        brne  Delay
31
32
        rjmp    Loop
33
;****************************************************************************

von Erik S. (erik_s)


Lesenswert?

Wie hast du die LEDs denn angeschlossen? PB5 ist als Ausgang ein 
Open-Drain-Ausgang. Damit da überhaupt was leuchten kann, muss die LED 
zwischen VCC und Pin geschaltet sein.

von Hannes L. (hannes)


Lesenswert?

Erik S. wrote:
> Wie hast du die LEDs denn angeschlossen? PB5 ist als Ausgang ein
> Open-Drain-Ausgang. Damit da überhaupt was leuchten kann, muss die LED
> zwischen VCC und Pin geschaltet sein.

Hat er doch:
> ldi  Temp,$FE
setzt Bit 0 auf L und alle anderen Bits auf H, was darauf schließen 
lässt, dass die LEDs L-aktiv angeschlossen sind.

...

von Erik S. (erik_s)


Lesenswert?

Ok, das ist ein Argument, das ich so nicht bedacht hatte. Aber wer weiß, 
vielleicht ist es ja ein invertiertes Lauflicht? ;-D

Nebenbei: PB5 ist mit 12mA Strombelastbarkeit angegeben, das sollte 
eventuell in die Überlegungen zur Dimensionierung mit einbezogen werden.

von Peter X. (vielfrass)


Lesenswert?

Habe das STK500-Board. Die Led's gehen nach Plus 5V.
Jetzt leuchtet LED5 dauernd und geht nicht mehr aus. Ob ich PB5 
geschossen beim "high voltage seriell prog" ?

von Hannes L. (hannes)


Lesenswert?

Peter X. wrote:
> Habe das STK500-Board. Die Led's gehen nach Plus 5V.
> Jetzt leuchtet LED5 dauernd und geht nicht mehr aus. Ob ich PB5
> geschossen beim "high voltage seriell prog" ?

Nein, hast Du nicht...

Schau mal ins Datenblatt auf Seite 51. Da wirst Du entdecken, dass es in 
PORTB kein Bit 5 gibt. Du kannst den Port also nur über das Bit 5 im 
DDRB steuern. Das macht Dein Programm aber nicht...

...

von Peter X. (vielfrass)


Lesenswert?

@ Hannes Lux
>Schau mal ins Datenblatt auf Seite 51. Da wirst Du entdecken, dass es in
>PORTB kein Bit 5 gibt. Du kannst den Port also nur über das Bit 5 im
>DDRB steuern. Das macht Dein Programm aber nicht...


Habe ich jetzt mal geändert...funktioniert...fetten Dank  :-)
1
;****************************************************************************
2
; Lauflichtdemo 
3
;****************************************************************************
4
.include "E:\C\programme\atmel\avr studio\appnotes\TN15def.inc"
5
6
.def    Temp            =r16
7
.def    Loopcounter     =r17
8
.def    Bitcounter      =r18
9
.def    Delay1          =r19
10
.def    Delay2          =r20
11
.def  Delay3    =r21
12
Start:
13
        ser     Temp
14
        out     DDRB,Temp       ;PB0-7 Output
15
        ldi     Temp,24
16
        out     PORTB,Temp
17
        
18
        ldi  Temp,$FE
19
20
Loop:
21
  out  PORTB,Temp
22
  sbrs  Temp,5
23
  sbi  DDRB,5
24
  sbrc  Temp,5
25
  cbi  DDRB,5
26
  
27
  sec      ;SET Carry
28
  rol  Temp
29
  sbrs  Temp,6
30
  ldi  Temp,$FE
31
  
32
33
  ldi  Delay3,2
34
Delay:
35
        dec     Delay1
36
        brne    Delay
37
        dec     Delay2
38
        brne    Delay
39
        dec  Delay3
40
        brne  Delay
41
42
        rjmp    Loop
43
;****************************************************************************

von Hannes L. (hannes)


Lesenswert?

Du kannst auch PortB auf 0 lassen und nur mit DDRB arbeiten. Dann hast 
Du an allen Pins Open-Drain-Ausgänge.

Der nächste Schritt dürfte dann sein, das Lauflicht hinundher laufen zu 
lassen. Danach könnte man über Aufdimmen und Abdimmen nachdenken.

Es gibt viel zu tun, schauen wir weg... ;-)

...

von Hannes L. (hannes)


Lesenswert?

Achja, vielleicht solltest Du Dir auch mal die Timer ansehen, das macht 
sich (wenn man es erstmal begriffen hat) besser als eine Warteschleife.

...

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.