PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PWM funktioniert nicht in Verbindung mit Timer2



IE04
31.10.2006, 19:29
Hallo alle zusammen!

Ich habe ein Problem mit der selbstständigen Frequenzausgabe von meinem Timer2. Ich habe heute den ganzen Nachmittag das Datenblatt und das Forum durchforstet aber eine Lösung hab ich nicht entdeckt.



'-------------------------------------------------------------------------------

$regfile = "m8def.dat" 'Atmega8
$crystal = 8000000 'Interner Oszillator 8 MHz

'------------------------- Beginn - Timer-Einstellungen ------------------------

DDRB.3 = 1 'Pin PB3/OC2 ist Ausgang
TCCR2 = &B0001_1010 'Pin OC2/PB3 togglen, kein PWM, Timer-Reset bei Compare, Clock/8
OCR2 = 32 'Periodendauer von 64µs/15,6khz

DDRB.1=1 'Pin PB1/OC1A ist Ausgang
TCCR1A = &B0100_0000 'Pin OC1A/PB1 togglen (Status-Wechsel), kein PWM
TCCR1B = &B0000_1010 'Timer-Reset bei Compare, Clock/8
COMPARE1A = 10000 'Periodendauer von 20µs/50Hz

'-------------------------- Ende - Timer-Einstellungen -------------------------


'---------------------Beginn der Hauptroutine-----------------------------------

Do

Loop

'----------------------Ende der Hauptroutine------------------------------------


Seht ihr vielleicht einen Fehler, der mir entgangen ist?

Timer1 funktioniert einwandfrei. Habe es mitm Oszi überprüft. Nur bei PinB.3/Timer2 kommt eine Art Dreieck-Impuls herraus und nicht der wie es sein sollte Hälfte Low-Pegel / Hälfte High-Pegel.

Vielen Dank für eure Bemühungen.

Bis dann Jens

PicNick
31.10.2006, 19:38
&B0001_1010

Mit underscore drinnen ? das geht ?

IE04
31.10.2006, 19:46
Was ist denn underscore? Ich bin noch ein ziemlicher Frischling beim programmieren 8-[

uwegw
31.10.2006, 19:51
Nen underscore ist das hier: _ (hat mit Programmieren an sich nix zu tun, ist nur der englsche Ausdruck für das Teil)

IE04
31.10.2006, 19:52
ahso
ja das geht, funktioniert überall einwandfrei...
:roll:

linux_80
31.10.2006, 21:26
Hallo,
was mir einfällt, an PB3 ist auch ein Anschluss zum programmieren (MOSI), hast du den Adapter abgesteckt nach dem flashen, sonst könnte der Adpater dazwischenfunken ?

IE04
01.11.2006, 15:33
Leider war es auch nicht der Stecker der Probleme macht.
Hier noch einmal alle meine Einstellungen.



7 6 5 4 3 2 1 0
TCCR FOC2 WGM20 COM21 COM20 WGM21 CS22 CS21 CS20
1 0 0 1 1 0 0 1



• Bit 7 – FOC2: Force Output Compare

The FOC2 bit is only active when the WGM bits specify a non-PWM mode. However, for
ensuring compatibility with future devices, this bit must be set to zero when TCCR2 is
written when operating in PWM mode. When writing a logical one to the FOC2 bit, an
immediate Compare Match is forced on the waveform generation unit. The OC2 output
is changed according to its COM21:0 bits setting. Note that the FOC2 bit is implemented
as a strobe. Therefore it is the value present in the COM21:0 bits that determines the
effect of the forced compare.
A FOC2 strobe will not generate any interrupt, nor will it clear the timer in CTC mode
using OCR2 as TOP.
The FOC2 bit is always read as zero.

Laut dieser Aussage müsste FOC2 "1" sein. Aber auch durch diese Änderung ändert sich an meinem Oszi-Bild nichts.

• Bit 6,3 – WGM21:0: Waveform Generation Mode

Bit 6 (0) und Bit 3 (1) sind laut DB-Tabelle 42 auf "Clear Timer on Compare
Match (CTC)" eingestellt.

• Bit 5:4 – COM21:0: Compare Match Output Mode

Bit 5 (0) und 4 (1) geben "Toggle OC2 on Compare Match" vor laut DB-Tabelle 43

• Bit 2:0 – CS22:0: Clock Select

Bit 2 (0), Bit 1 (1) und Bit 0 (0) stellen den Prescaler laut DB-Tabelle 46 auf 8

Im Register TCNT2 zählt der µp hoch bis zum Vergleichswert, welcher im Register OCR2 festgelegt wird. Ich weiß mir echt nicht mehr zu helfen. Liegt es an meinem Englisch? Einem Fehler im Datenblatt? Den Atmega kann ich zu 99% ausschließen, habe es nämlich auch schon mit einem anderen ausprobiert und es kam genau das selbe Ergebnis bei herraus.

Vielen Dank für eure Bemühungen mir weiterzuhelfen :!:

Bis dahin

Jens

linux_80
01.11.2006, 16:54
Theoretisch sollte es gehen, auch im Simulator funktionierts.
Was hast Du für ein Board, ist da nicht doch noch was anderes an PB3 angeschlossen, Lötbrücke oder LED mit Widerstand usw. ?
Musst mal die Lupe auspacken !
Sieht man von hier so schlecht O:)

IE04
01.11.2006, 17:13
Ich habe 2 Entwicklungsboards mit einigen Zusätzen (USB, R232, LCD...) dazu noch ein Board, an dem ich alle Pins einzeln über Drahtbrücken mit Peripherie beschalten kann.

Aber bei allen drei dasselbe dumme Signal an PB3 mit oder ohne Programmierstecker. Schaltplan vom "Steckboard" ist im Anhang zu finden.

Hat jemand vielleicht die Möglichkeit mein Programm einmal mit Oszi zu testen?

MfG

Jens

linux_80
01.11.2006, 17:40
Hab das grad mal am RN-M8 Board probiert, hab aber grad nur einen 16MHz rumliegen, deshalb gehts halt doppelt so schnell wie ausgerechnet, aber ansonsten die Signale schön PWM-mässig, egal ob ISP-Adapter dran oder nicht.

Hast Du da direkt gemessen an diesen Pins wenn noch nix angesteckt ist, irgendwo muss sich da noch was verstecken was Dir da dazwischenfunkt.

IE04
01.11.2006, 18:10
Ich hab mal meine Oszillogramme fotografiert.

Einmal die 20µs einwandfrei und dann noch die 64µs so wie es bei allen drei Boards aussieht.

Ich komm einfach nicht dahinter. :-k
Hab mit ner Uhrmacherlupe die Leiterbahnen untersucht und nix gefunden.

Hast du meinen Quellcode benutzt? Ich habe meine Atmega mit internem RC-Oszi laufen aber das sollte ja keinen unterschied machen oder?

Vielen Dank für deine Bemühungen :!:

Jens

linux_80
01.11.2006, 20:19
Oha, da muss sich doch ein Kondensator eingeschlichen haben !

Hast du
... schon mit einem anderen AVR probiert ?
... alle unnötigen Kabel/Verbindungen abgesteckt ?
... einen Schaltplan von der Platine ?

IE04
02.11.2006, 21:01
Hi Linux,

den Schaltplan habe ich drangehängt.

:( :( :(
Mit 3 Atmega8s der selbe Mist.
Alle unnötigen Leitungen sind ab.
Nur der Reset ist ständig angeschlossen.
:( :( :(

Ich glaub ich geb dem Ding mal mehr zunder :twisted: hrhr

Ne Quatsch beiseite...

Wenn jemandem vielleicht noch was einfällt oder der Quellcode bei jemandem einwandfrei funktioniert. Bitte meldet euch.