Hallo Habe einen Mega 128 mit 16MHZ Taktung. void init_pwm() { DDRB |= (1<<PB5); TCCR1A = 0x00; TCCR1A |= (1<<WGM10) | (1<<COM1A1) | (1<<COM1A0) TCCR1B |= (1<<CS10) | (1<<CS12); //PSC 1024 OCR1A = 255; //volle Leistung } Am Ausgang OC1A habe ich ein Piezo Schallwandler der mit 5 Khz läuft. Derzeit höre ich nur ein Klackern nicht sehr laut vom Schallwandler. Wie bekomme ich die 5 Khz hin.
Hi, Herrmann, Tipp für alle Fahranfänger mit AVR: Lade Dir AtmanAVR von www.atmanecl.com, der läuft 30 Tage, in der Zeit benutze den Wizzard. Da gibt's Du für einen Timer nur den Systemtakt an, die Frequenz oder Periode des Ausgangssignals, und der Wizzard bastelt Dir Deinen C-Code. Anschließend übernimmst Du das Fragment C-Code in Dein eigentliches Programm. Es gibt wohl auch andere Wizzards dieser Art, ich bin mit dem AtmanAVR aber vollauf zufrieden. Im Beruf arbeite ich mit WinAVR, weil mein Auftraggeber das so wollte. Aber bevor ich mit PWM auch nur 10 Minuten herumprobiere, mache ich mit AtmanAVR mit 5 Minuten Zeitaufwand den "ersten Schuß" - und der traf bisher immer, und arbeite von da aus weiter. Ciao Wolfgang Horn
Hallo Ja du hast recht habe es mit dem Calculator im ATMAN gemacht und es kommt ein TON raus kann nun auch die Frequenz verändern nur leider ist er mit 5 Volt zu leise. Kennt jemand einen Schallwandler der mit 3-5 Volt funktioniert und schhön laut ist. Danke
PWM ist falsch ! - Für Spannungseinstellung nimmt man PWM - Aber für Frequenzeinstellung nimmt man Toggle on Compare Den Comparewert setzt man auf die halbe Frequenz Soll der Timer noch anderweitig verwendet werden, ist es oftmals sinnvoll ihn durchlaufen zu lassen (kein Clear on Compare). Dann wird zum Comparewert im Compareinterrupt der nötige Teilerwert addiert. Durch das Togglen des Pins per Hardware ist das trotzdem jitterfrei. So kann man z.B. auch 2 verschiedene Frequenzen erzeugen. Peter
Wolfgang Horn wrote: > Aber bevor ich mit PWM auch nur 10 Minuten > herumprobiere, mache ich mit AtmanAVR mit 5 Minuten Zeitaufwand den > "ersten Schuß" Weshalb must Du 10 Minuten probieren ??? Wie wärs einfach mal mit Rechnen ? Du weißt die Quarzfrequenz, den Vorteiler, welche Frequenz Du willst und gut is. Kann man mit nem Taschenrechner machen, aber ich bin zu faul dazu. Ich schreib einfach die Formel hin und laß das Rechnen den Präprozessor des Compiler machen, dazu ist er ja schließlich da. Peter
Hallo Also nicht PWM ich hab ejetzt folgendes Probiert Compare match OCR1A toggle. void init_pwm() { DDRB |= (1<<PB5); //Port OCR1A as Output OCR1A = 0x0fa0; //4000Hz=4Khz TCNT1 = 0xf060; TCCR1A = 0x40; TCCR1B = 0x01; TCCR1C = 0x00; } ISt das richtig leider kommt immer noch nicht die lautstärke raus die ich haben will. Ich denke es muß ein anderer schallwandler her der mit 5 Volt seine volle leistung bringt.
Hi, Peter, Du: "Weshalb must Du 10 Minuten probieren ???" Hihi. Erinnerung an den ersten Versuch mit PWM, Lesen und Verstehen-Wollen des Datenblatts und der Unsicherheit, ob ich die richtigen Bits gesetzt habe. Stattdessen so einen Wizzard - gibt's ja woh auch von anderen Autoren -, am STK500 probiert, mit dem Oszi geguckt - und dann die Bitkombinationen in das eigentliche Programm geschrieben mit BV()und einer Dokumentation, die auch ein anderer lesen kann. Bei dem heutigen Stundensatz hat sich eine 100$-Lizenz schnell gelohnt. Ciao Wolfgang Horn
@Wolfgang, naja, ich hatte vor den AVRs schon einige andere MC-Datenblätter gelesen und so schlecht sind die AVR-Datenblätter ja nicht (Beispielcode in C/Asm). Aber es gibt auch Datenblätter, die verstehe ich nicht, z.B. den Interruptcontroller der ARM7 von ST (35 Seiten), da strotzt es nur so vor Notes, Warnings, Cautions, Considerations usw. Da mir dann auch die Programmierumgebung etwa alle 15min abgestürzt ist, hab ich den ganzen Kram hingeschmissen. Den 8051 hatte ich noch mit einem Valvo 8051-Datenbuch in deutsch gelernt. Peter
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.