Hallo, okay irgendwie stelle ich hier glaube ich die dümmsten Fragen ^^ aber ich bin dankbar das sich trotzdem immer jemand Zeit nimmt und meistens komme ich dann auch alleine zurecht. Also ich lerne (üb) gerade am hier Angebotene OLIMEX LPC2148 Board. Bin zufrieden. Speichertest prog war erfolgreich, UART tut, LEDs und Buttons kein problem. Aber der Buzzer macht mir zu schaffen ^^ Ich finde die Beschreibung von OLIMEX aber auch wirklich mager. Das einzigste was ich weiß kam vom Schaltplan und da ich kein Elektroniker bin weiß ich net wirklich was ich tun soll. PWM puls ist nicht das problem sondern : WARUM GEHEN 2 PORTS auf den Buzzer??? sollte es nicht 1ner sein und der ausgang geht auf Masse?? Welchen soll ich den nun Pulsen? Beide? ich blicks einfach net.
p.s. Skizze findet man im Anhanf. Anschlüsse gehen auf P0.12 & P0.13
Um den Buzzer anzusteuern gibt man immer abwechselnd low und high auf die beiden Pins, der Buzzer wird also jedesmal umgepolt. Dadurch bekommt der Buzzer im Mittel eine doppelt so hohe Spannung wie wenn man nur einen Pin schalten würde. Er wird also lauter. Man kann mit dieser Beschaltung auch nur einen Pin schalten. Damit hat man zwei Lautstärkestufen.
>> Dadurch bekommt der Buzzer im Mittel eine doppelt so hohe Spannung >>wie wenn man nur einen Pin schalten würde. im Mittel ist die Spannung 0. Das soll ja auch bezweckt werden. Der DCWert an einem Lautsprecher sollte auch 0 sein. Wie schon gesagt die Spannung wird jeweils umgepolt. Also HIGH ->LOW spannung +Vtarget, Membran beim Buzzer wird rausgedrückt LOW->HIGH spannung -Vtarget, Membran wird reingedrückt der Widerstand dient zur Strombegrenzung. Durch das Umpolen wird jeweils die Stromrichtung geändert.
Hallo, danke für die Antworten. Marko seine hab ich zuerst probiert und festgestellt es klappt net ^^ aber das hat mich auch schon auf die richtige Spur gebracht ---> Versuch es umzupolen ^^ von daher hat Wolfram hier recht behalten. Ich spiel gerade mit den Tönen rum aber naja ein Datenbaltt währe mir schon recht. Hier mal mein kleiner Code ausschnitt: <CODE> #define fnBUZZ1() { IO0CLR = 0x00002000; \ IO0SET = 0x00001000; } #define fnBUZZ2() { IO0CLR = 0x00001000; \ IO0SET = 0x00002000; } ... f_ton = 2000; for( k=0; k<10; i++) //Anzahl wiederholungen = k * T { fnBUZZ1(); while( f_ton > 0){ --f_ton; } fnBUZZ2(); while( f_ton < 2000){ ++f_ton; } } </CODE> Frage: da kein Datenblatt enthalten ist weiß ich nicht welche Frequenzen ich abspiele. Meine Theorie: Disassembly --> die Dauer der Befehle zusammenaddiere und Ein/Ausschaltzeiten PIN, in Abhängigeit der CPU Frequenz (hier 60 MHz). Währe das richtig?? oder gibt es einen einfacheren Weg? Trotzdem jetzt schon vielen dank
Also prinzipiell geht das schon das du im Disassembly die befehlzeiten addierst, wird halt nur sehr unschön wenn du einen Befehl (in C) änderst. Entweder nimmst du eine delay funktion (wenn vorhanden) oder du benutzt die Unterstützung in der Hardware. Stichwort: Timer Da stellst du die Anzahl von Takten ein die gezählt werden soll und überprüfst deinen Zähler oder läßt dir nach Ablauf der Zählzeit ein Flag setzen, dass du abfragst.
hi , danke Wolfram. War eher nur ne theoretische Frage aber natürlich hast ud recht. Mit nem Timer ist das ganze viel eleganter. Nochmals an alle Teilnehmer des Threads 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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.