Einzelne Bits der ATtiny45 Register mit BASCOM setzen

Gast #4746474
Hallo!

Ich bin gerade dabei, mit dem Fast PWM Mode des ATtiny45 zu spielen.
Ziel ist am Ende ein PWM Signal mit einer Frequenz von ~25kHz, in Sachen 
Genauigkeit habe ich einen angenehmen Spielraum von 21kHz bis 28kHz.

Durchgerechnet ist auch schon alles, ich muss nur noch die Bits in den 
entsprechenden Registern setzen.
Jetzt habe ich gelesen, dass in Bascom nicht mehr erforderlich ist, als 
eine Anweisung wie:
1
WGM02 = 0
Braucht der Compiler tatsächlich keine Unterweisung mehr, in welchem 
Register dieses Bit steht?
Beim kompilieren dieses Codes bekomme ich nämlich relativ nichtssagende 
Fehlermeldungen...
1
$regfile = "ATtiny45.dat"
2
$crystal = 6000000                                          '6MHz
3
$hwstack = 40
4
$swstack = 16
5
$framesize = 32
6

7
Config Portb.1 = Output
8
Config Portb.0 = Output
9

10
Wgm02 = 0
11
Wgm01 = 1                                                   'fast PWM mode
12
Wgm00 = 1
13

14
Com0a1 = 1
15
Com0b1 = 1                                                  'inverting mode
16
Com0a0 = 1
17
Com0b0 = 1
18

19
Cs01 = 0
20
Cs02 = 0                                                    '~23,4kHz PWM Frequenz
21
Cs00 = 1
Fehlermeldungen sind zwei 46er Errors in den Zeilen 10 und 11, wo WGM01 
und WGM02 gesetzt werden.
Gast #4746489
Hallo,
1
Wgm02 = 0
2
Wgm01 = 1                                                   'fast PWM mode
3
Wgm00 = 1
4

5
Com0a1 = 1
6
Com0b1 = 1                                                  'inverting mode
7
Com0a0 = 1
8
Com0b0 = 1
9

10
Cs01 = 0
11
Cs02 = 0                                                    '~23,4kHz PWM Frequenz
12
Cs00 = 1

sind die Bitnamen eines AVR Registers und nicht das AVR Register selbst 
!
Schaue dazu in das orig. Atmel Datenblatt, dort findest Du für alle 
Hardwareeinheiten die zugehörigen Register- und deren Bitnamen !
Gast #4746572
Hm, darf ich den Thread eben noch einmal für mein Projekt missbrauchen?
Inzwischen sind alle Bits in den betreffenden Registern so gesetzt, wie 
sie es sein sollen.
Dennoch klappt es mit dem PWM Signal nicht.
Ein Oszi habe ich leider nicht da, dafür messe ich mit meinem Multimeter 
bei einem duty cycle von 50% etwas, das logisch 0 entspricht an den 
Pins.
Die Frequenzmessungsfunktion stuckt auch nur 0Hz aus, natürlich nichts 
anderes beim Tastgrad.

Code:
1
$regfile = "ATtiny45.dat"
2
$crystal = 6000000                                          '6MHz
3
$hwstack = 40
4
$swstack = 16
5
$framesize = 32
6

7
Tcnt0 = &B00000000
8
Ddrb = &B11000000                                           'PB0 und PB1 sind Outputs
9

10
Tccr0a = &B11001111                                         'WGM00 - WGM01 - 0     - 0     - COM0B0 - COM0B1 - COMB0A0 - COM0A1
11
Tccr0b = &B10000000                                         'CS00  - CS01  - CS02  - WGM02 - 0      - 0      - FOC0B   - FOC0A
12

13
Do
14
   Ocr0a = &B01111111                                       '127
15
Loop
Gast #4746759
> Ddrb = &B11000000  'PB0 und PB1 sind Outputs

Nicht wirklich. Bit0 ist ganz rechts und Bit7 links, genauso wie hier:

> Tccr0a = &B11001111
> 'WGM00 - WGM01 - 0     - 0     - COM0B0 - COM0B1 - COMB0A0 - COM0A1

Der Rest wird genauso verdreht sein.
Binär ist auch fehleranfällig, mach's besser so:
1
TCCR0A = Bits(COM0A1, COM0A0, COM0B1, COM0B0, WGM01, WGM00)

Ob Du die richtigen Bits für die gewünschte Funktion setzt, hab' ich 
dabei nicht überprüft.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 10 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.