Forum: Mikrocontroller und Digitale Elektronik Bascom Attiny45 Blinklicht in Bascom


von Franz M. (shadow010)


Lesenswert?

Hallo Zusammen

Ich bin dabei zwei LED's mit einem Attiny45 anzusteuern. Die Leds sollen 
Blinklichter werden. Das heisst das erste fährt langsam hoch und das 
zweite Zeitversetzt mit einem anderem Interval.

Nun habe ich zum Test mal mit einer Led angefangen. Wenn ich aber in 
Bascom mein Programm compilieren will erhalte ich die Fehlermeldungen:
=expectet Timer1
unknow Config Parameter

mein Programm:
1
$regfile = "attiny45.dat"
2
$crystal = 4000000
3
$hwstack = 40
4
$swstack = 16
5
$framesize = 32
6
7
Config Portb.1 = Output
8
Config Timer1 , Timer1 = 8 , Prescale = 8 , Compare A Timer1 = Clear Up
9
10
Dim A As Byte
11
12
'hell
13
Compare1a = 20
14
Wait 2
15
16
'dunkel
17
Pwm1a = 250
18
Wait 2
19
20
Do
21
   For A = 255 To 1 Step -10
22
   Compare1a = A
23
   Waitms 100
24
Next A
25
26
For A = 1 To 255 Step 10
27
   Compare1a = A
28
   Waitms 100
29
   Next A
30
Loop
31
End

kann mir jemand sagen wo ich den Fehler mache?

Gruss und Danke

von D. V. (mazze69)


Lesenswert?

Hallo Franz,

Franz Maier schrieb:
> kann mir jemand sagen wo ich den Fehler mache?

Hat BASCOM nicht einen DEBUGGER?

von Franz M. (shadow010)


Lesenswert?

Ja genau der gibt mir einfach folgendes aus

Error : 12    Line :   8     Unknown CONFIG parameter [PWM]  , in File : 
D:\Documents\blinklicht.bas
Error : 46    Line :   13    Assignment error [COMPARE1A: 0   20: 112] 
, in File : D:\Documents\blinklicht.bas

von Markus (Gast)


Lesenswert?

Franz Maier schrieb:
>
1
Config Timer1 , Timer1 = 8 , Prescale = 8 , Compare A Timer1 = Clear Up

Bist du sicher, dass das stimmt?

von D. V. (mazze69)


Lesenswert?

Dann solltest du dein Proggi er einmal lauffähig machen.

Die Hilfe von BASCOM ist rel. gut. Sie hat mir damals(1997) geholfen, 
die AVRs kennenzulernen.

Druck' Dir das Datenplatt des tiny45 mal aus und versuche, die 
Fehlermeldungen des Compilers zu verstehen.

Und, guck dir an, wie die Config Anweisung zufriedenzustellen ist.
Nebenbei solltest du das Datenplatt von Atmel runterladen und 
ausdrucken.
Beschränke dich erst einmal nur auf den µC, den du hast.

von Luca E. (derlucae98)


Lesenswert?


von Marcus W. (marcusaw)


Lesenswert?

Wo ist Compare1a deklariert worden?

von Franz M. (shadow010)


Lesenswert?

so ich habe noch was versucht aber leider ohne Erfolg. Ich bin nicht 
sicher ob das wirklich stimmt, denn oft nehme ich ein Mega8 oder 32.
1
' Software für ein Rundumlicht mit PWM. Controller ist ein Tiny45. Die
2
' LED kommt an PB0 ( Pin 5 ). Geschaltet wird über GND.
3
4
$regfile = "attiny45.dat"
5
$crystal = 8000000
6
$hwstack = 50
7
$swstack = 10
8
$framesize = 40
9
10
'Timer0 als PWM konfigurieren
11
Config Timer0 = Pwm , Compare A Pwm = Clear Up , Prescale = 256
12
Pwm0a = 0
13
Enable Timer0
14
Start Timer0
15
Enable Interrupts
16
17
'Variablen definieren
18
Dim I As Byte
19
20
Config Portb.0 = Output
21
22
Wait 10
23
24
Do
25
'rauf
26
For I = 0 To 255
27
Pwm0a = I
28
Waitms 2
29
Next I
30
31
'kurz halten
32
Waitms 2
33
34
'runter
35
For I = 255 To 0 Step -1
36
Pwm0a = I
37
Waitms 2
38
Next I
39
40
'kurz halten
41
Waitms 200
42
43
'und wieder von vorne
44
Loop
45
End

: Bearbeitet durch User
von Karl H. (kbuchegg)


Lesenswert?

Franz Maier schrieb:
> so ich habe noch was versucht aber leider ohne Erfolg.

Und das heißt jetzt was?


> For I = 0 To 255
> Pwm0a = I
> Waitms 2
> Next I

Vielleicht haben wir auch andere Vorstellungen von 'langsam'.

Aber 256 mal 2 Millisekunden ist gerade mal eine halbe Sekunde...

>
> 'kurz halten
> Waitms 2

2 Millisekunden sind aber sehr kurz. Ich bezweifle, dass es einen 
normalen Menschen gibt, der den Unterschied zwischen überhaupt nicht 
halten und 'kurz halten' bei 2 Millisekunden erkennen kann.

> For I = 255 To 0 Step -1
> Pwm0a = I
> Waitms 2
> Next I

Detto: 1/2 Sekunde
>
> 'kurz halten
> Waitms 200


Aber die spannende Frage lautet:
Was ist unter 'ohne Erfolg' zu verstehen?

Dimmt die LED überhaupt? Was ist wenn du den ganzen Zeitkram erst mal 
raus lässt und einfach nur den OCR WErt auf einen bestimmten Wert setzt 
und nachsiehst ob die LED auch wirklich darauf reagiert. (dann: anderer 
WErt - andere Helligkeit).

von Karl H. (kbuchegg)


Lesenswert?

1
Config Timer0 = Pwm , Compare A Pwm = Clear Up , Prescale = 256

Hmm.
Sollte das nicht aus Analogiegründen als
1
   ....  Compare_A_Pwm = Clear_Up .....
geschrieben werden?

Erscheint mir irgendwie logischer, wenn da jeweils nur ein einzelnes 
Wort stehen würde und beim Timer 1 ist das genau so auch in der Doku.
Wohingegen beim Timer 0 ja auch in der Doku dabei steht, dass die Doku 
mit dem Hintergrund eines AT90S2313 bzw. AT90S8515 geschrieben wurde, 
sich als an dessen Timer-Fähigkeiten orientiert. Spätere AVR hatten dann 
auch mehr Möglichkeiten, zb PWM am Timer 0 und ich würde dann doch 
annehmen, dass die BASCOM Macher die Syntax vom Timer 1 einfach auch für 
den Timer 0 übernommen haben, wenn der Timer 0 die Fähigkeiten dazu hat. 
Würde zumindest Sinn ergeben.

: Bearbeitet durch User
von Franz M. (shadow010)


Lesenswert?

hmhhh. das ganze hat nachstehend schon funktioniert. Aber leider hat 
mein Brennprogramm die Fuse-Bits nicht mitgeschrieben.

$regfile = "attiny45.dat"
$crystal = 8000000
$hwstack = 50
$swstack = 10
$framesize = 40

'Timer0 als PWM konfigurieren
Config Timer0 = Pwm , Compare A Pwm = Clear Up , Prescale = 256
Pwm0a = 0
Enable Timer0
Start Timer0
Enable Interrupts

'Variablen definieren
Dim I As Byte


Do
'rauf
For I = 0 To 255
    Pwm0a = I
    Waitms 2
Next I

'kurz halten
Waitms 100

'runter
For I = 255 To 0 Step -1
   Pwm0a = I
   Waitms 2
Next I

'kurz halten
Waitms 100

'und wieder von vorne
Loop

End

was mir aber noch Fehl ist ein aufblitzen. Wie bekomme ich das hin 
nachdem der PWM auf 0 gelaufen ist das die LED noch kurz aufblitzt?

Gruss und Danke

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.