AtTiny13 PWM LED flackert

Persönliche Seite #1857458
Lesenswert?

Hallo,

ich habe das Pollin Board und darauf befindet sich ein AtTiny13 20PU. 
Ich betreibe ihn mit internem 9,6MHz Takt.
Ich bin gerade dabei mir eine Software PWM zu schreiben. Ich habe mich 
an dem Tutorial hier auf der Seite angelehnt.

Hier ist der Code in Assembler:
1
.include "tn13def.inc"
2

3
.def  work    = r16
4
.def  pwm_count  = r17
5
.def  pwm_sw    = r18
6
.def  temp    = r19
7

8
.equ  MAX_PWM    = 127
9

10
.equ  TIM0_COMPA  = 0x006
11
.equ  TIM0_OVF  = 0x003
12

13
.org 0x00
14
rjmp    INIT
15
.org TIM0_OVF      ;0x003
16
rjmp    TIME0_OVF
17

18
;---RESET--- //0x00A
19
INIT:
20
;Init Stack
21
ldi      work, RAMEND
22
out      SPL, work
23

24
;---IO Port einstellen---
25
ldi      work, 1<<PB0
26
out      DDRB, work
27

28
sbi      PORTB, PB0
29

30
;---PWM Zähler einstellen---
31
ldi      pwm_count, 0x00
32
ldi      pwm_sw, 127      ;pwm_count > pwm_sw --> LED aus
33

34
;Init Timer0
35

36
ldi      work, 1<<TOIE0
37
out      TIMSK0, work
38

39
;Timer0 Normaler Modus
40
ldi      work, 0x00
41
out      TCCR0A, work
42

43
;Timer0 start kein Vorteiler
44
ldi      work, 1<<CS00  
45
out      TCCR0B, work
46

47
sei      ;Alle Interrupts ein
48

49

50
;---Hauptprogramm---
51
MAIN:
52
rjmp    MAIN
53

54

55
;-------------Interrupts--------------
56
TIME0_OVF:
57
push  temp
58
ldi    temp, SREG
59

60
cpi    pwm_count, MAX_PWM +1    ;pwm_count = MAX_PWM +1 dann LED an
61
brne  go_on
62
sbi    PORTB, PB0
63
clr    pwm_count
64

65

66
go_on:
67
cp    pwm_count, pwm_sw    ;pwm_count = pwm_sw  dann LED aus
68
brne  tim0_ovf_end
69
cbi    PORTB, PB0
70

71

72
tim0_ovf_end:
73
inc    pwm_count        ;pwm_count +=1
74

75
out    SREG, temp
76
pop    temp
77
reti

Ich weiß leider nicht genau warum meine LED am ADDON Board flackert. Ist 
die Frequenz zu niedrig? Welche Frequenz nehmt ihr den für eine PWM mit 
einer LED? Normal müssten doch 150Hz ausreichen, damit das Flackern mit 
dem Auge nicht mehr zu sehen ist oder?
Meine PWM müsste dann diese Frequenz haben, wenn ich mich nicht 
verechnet habe:

Was könnte ich den noch versuche?


Vielen Dank schon mal für eure Hilfe im vorraus!
#1857471
Lesenswert?

Wisler Wisler schrieb:

> Meine PWM müsste dann diese Frequenz haben, wenn ich mich nicht
> verechnet habe:
>
>

Das sieht richtig aus.

> Was könnte ich den noch versuche?

Die naheliegenste Erklärung wäre es, wenn dein Tiny gar nicht mit 9.6Mhz 
getaktet wird, sondern immer noch auf seiner Werkseinstellung von 
~1.2Mhz läuft (plus minus ein paar Zerquetschte), weil CKDIV8 noch 
eingeschaltet ist

1200000 / (256 * 127) = ~30Hz

und das würde man als Flackern sehen.
Persönliche Seite #1857491
Lesenswert?

Hier sind die Einstellungen vom AVR Studio
ich habe den Prozessor mit 9,6MHz laufen.
Wenn ich noch weiter nach unten gehen also 4,8MHz dann flackern die LED 
noch mehr.

Danke schon mal für den Tipp. Könnte noch einen ATMega8 mit dem gleichen 
Code bei 8MHz testen. Könnte ich so einen Fehler ausschließen? Oder habe 
ich vielleicht einen Fehler in dem Programm?

Grüße Wisler
Angehängte Dateien:

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