PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : 4x 16Bit-Hardware-PWM mit Bascom



Goblin
01.07.2006, 15:07
Tagchen!

Ich brauche 4 Hardware-PWMs mit 16 Bit Auflösung. Gibt es Atmegas die das schaffen UND ist es in Bascom machbar? Weil bei dem Timer-Config-Befehl für das PWM scheinen nur maximal 10 Bit möglich.

Hanni
01.07.2006, 15:13
Moin,

genau um soetwas herauszufinden hat ATMEL eine schöne Überscicht bei sich auf der Webseite ...

http://atmel.com/dyn/products/param_table.asp?family_id=607&OrderBy=part_no&Direction=ASC

Ach ja, es gibt solche AVR Microcontroller ....

Im übrigen könntest du ja auch die entsprechenden Register selbst setzen .. das nur mal so als Hinweis, wenn das mit dem Config Befehl nicht funktioniert.

Goblin
01.07.2006, 15:34
Die Seite ist mir durchaus geläuftig, nur leider steht dort nicht, wieviel Bit die PWM-Kanäle haben...
Und was das Register-Setzen angeht: Daran dachte ich auch schon, allerdings hab ich keinen Schimmer von Assembler (gestern wegen den Registern schon Datenblätter gewälzt), was das kleinere Problem wäre. Das Entscheidende ist: Warum machen die Bascom-Leute nur maximal 10 Bit wenn auch mehr gingen?

Hanni
01.07.2006, 15:40
Die Seite ist mir durchaus geläuftig, nur leider steht dort nicht, wieviel Bit die PWM-Kanäle haben...
Und was das Register-Setzen angeht: Daran dachte ich auch schon, allerdings hab ich keinen Schimmer von Assembler (gestern wegen den Registern schon Datenblätter gewälzt), was das kleinere Problem wäre. Das Entscheidende ist: Warum machen die Bascom-Leute nur maximal 10 Bit wenn auch mehr gingen?

Als Hinweiss könnten dir die Anzahl der 16 Bit Timer dienen ...
ansonsten sorgt meistens ein kurzer Blick ins Datenblatt für Klarheit.

naja ... in Assembler ist es eigentlich ganz einfach.

entweder:



ldi r16, 0b01010101 ; 1 = gesetztes bit
out TCCR1A, r16

oder:



ldi r16, (1<<WGM11) | (1<<CS10)
out TCCR1A, temp

Anmerkung: das ist einfach blind getippt und hat zu 99,9% keinen Bezug auf die tatsächlichen Bits.

In Bascom könnte es wie folgt gehen:



TCCR1A = 0b01010101


Die Entwickler machen dieses wohl auch deswegen, weil eben nicht jeder AVR diese Möglichkeiten bietet ...

Das Stichwort ist hier kompatibilität.

Grüße,

da Hanni.

Goblin
01.07.2006, 16:11
geht nur 1 pwm pro 16-bit-timer oder mehrere?

Hanni
01.07.2006, 16:17
Beim Atmega 128 funktionieren meines Wissens nach bis zu 3 Hardware PWM's über einen 16 Bit Timer ... und 2 hat er ...

Goblin
01.07.2006, 17:08
ja wunderbaaar! dann müsste ich nur noch wissen wie das geht. bascom wird ja egal sein, wieviel bit der timer hat, da muss ich dann wohl selber dran denken, oder? 10 bit reichen mir dann evtl auch. also nehm ich mir die beiden timer meiner wahl und configurier sie für pwm. righty?

€dit: Mm. Der Mega162 scheint das Minimum zu sein, was ich brauche. Der hat 2x 16Bit-Timer. Lustigerweise wird bei Reichelt ein PIC-Controller angezeigt.. Hab erst nen Schreck bekommen als ich das Bild gesehen hab:

http://www.reichelt.de/bilder/web/A300/DIP40.jpg

Ich dachte schon ich müsste mir ne UV-Lampe zum Löschen besorgen! ;)

Hanni
01.07.2006, 17:25
Richtig.

Ich würde übrigens vorschlagen das wir einfach mal annehmen, das es ein Mega 162 werden soll.
Der hat im übrigen genau 4 16 Bit PWM Kanäle.

Weil, wenn du einmal den Dreh raus hast ist der µC defako egal.

Im übrigen ist der folgende Weg recht gangbar.

1. besorg dir nen Blatt Papier und einen Stift.
2. Nimm dir das Datenblatt und such dann herraus, welche Bits in welchen Registern gesetzt werden müssen.
3. Versuch dadraus nen Code zu machen.

Wenn du bei einem Problem Hilfe brauchst, schrei einfach :D

Grüße,

da Hanni.

€dit: den 128er durch nen 162er Mega ersetzt