PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Square Wave von 32,768Khz erzeugen auf I/O Port



yak
24.02.2007, 17:21
Hallo

iche benötige ein 32,768Khz Signal auf einen I/O Port eines Mega 128.

Dieses Signal braucht ein Drucksensor um seine internen Werte zu berechnen.

Ein auszug vom Datenblatt
It is strongly recommended that a crystal oscillator be used because the device is sensitive to clock jitter. A
square-wave form of the clock signal is a must.

Wie kann ich dieses Signal erzeugen.

Der Mega hat ein 16Mhz Quarz.

Habe mal diesen Code Probiert komme aber nur auf ca 31Khz.

void init_pwm(void)
{
TCCR1A = ( 1 << WGM10 ) | (1<<COM1A1);
TCCR1B = (1<<CS10);
OCR1A=156;
DDRB |=(1<<PB5);
PORTB |=(1<<PB5);
}

ogni42
24.02.2007, 18:26
Sofern möglich, an TOSC1 TOSC2 einen 32,768kHz Uhrenquarz anschließen. Dann kannst Du direkt damit arbeiten. Ansonsten empfehlen sich statt des 16MHz Quarzes, Baudratenquarze (14,756MHz)

yak
24.02.2007, 19:09
einen externen Uhrenquarz kann ich anschalten an TOSC1 TOSC2

Aber wie bekomme ich dien Square Wavfe aus dem Mega 128???

Direkt an TOSC2 abgreifen oder kann ich das Signal an einen i/O Port ausgeben???

Wie mache ich so was???


Danke

sigo
24.02.2007, 19:14
Ich würde auch den Baudratenquarz mit 14,7MHz nehmen, wenn sonst nichts dagegen spricht..

sigo

wkrug
24.02.2007, 23:28
Wenn es sich bei deinem Drucksensor um den MS5534 von Intersema handeln sollte ? Der verträgt laut Datenblatt Frequenzen von 30,000 bis 35,000 kHz und das sollte sich eigentlich einstellen lassen ?
Siehe Datenblatt auf Seite 3.
Allerdings solltest Du auf den DUTY CYCLE achten, soweit ich das Datenblatt richtig interpretiere.

Yossarian
25.02.2007, 08:39
Hallo
wenn ein genaues Tastverhältnis von 50:50 per Software nicht zu erreichen ist, setze ein D-FlipFlop ein.

Mit freundlichen Grüßen
Benno

yak
25.02.2007, 10:00
Hallo

Ja es handelt sich um den Sensor


Ich habe Ihn schon in einem Höhenmesser Verbaut wo ich auch eine RC von MAXIM DS1390 verbaut habe und von der RTC die 32,786Khz abnehme der hat einen Square Wave ausgang das funktioniert alles einwandfrei.

Nur will ich mir jetzt einen Ladedruckmesser Bauen wo ich keine RTC zur verfügung habe und mir ein Signal selber erzeugen muß.

mit diesem Code bekomme ich ca 31.76Khz laut Oszi.
Wie muß das Tastverhältnis aussehen???

Wieviel %Height und wieviel % low?????

void init_pwm(void)
{

TCCR1A = ( 1 << WGM10 ) | (1<<COM1A1);
TCCR1B = (1<<CS10);
OCR1A=156; //?????
DDRB |=(1<<PB5);
PORTB |=(1<<PB5);
}

Danke


PS:

Habe jetzt ein Tastverhältniss von 50:50 mit dem Wert OCR1A=128.

Habe mir mal eine Excel Berechnungsdatei die ich mal von Intersema bekommen habe zur hand genommen und ich mus festellen das die Calibrierungsdaten stimmen nur meine ADC Werte nicht weil er zeigt mir ca 100mbar zu wenig an.

Die ADC werte sind ja abhängig vom Masterclock 32,768 Khz.

Wenn diese nicht Jitterfrei ist kommen da messfehler.

Yossarian
25.02.2007, 10:51
Hallo


External clock signal (4) MCLK 30.000 32.768 35.000 kHz
Duty cycle of MCLK 40/60 50/50 60/40 %

steht doch im Datenblatt.
Mit freundlichen Grüßen
Benno