Gast
#59600
Hallo, hat jemand eine Idee, wie man einen AT90S1200 dazu bringen kann auf einem angeschlossenen PC-Speaker einen Piepston auszugeben (als Statusmeldung)? Danke, Thomas
|
Anzeige
|
AT90S1200 und PC-Speaker
Gast
#59600
Hallo, hat jemand eine Idee, wie man einen AT90S1200 dazu bringen kann auf einem angeschlossenen PC-Speaker einen Piepston auszugeben (als Statusmeldung)? Danke, Thomas
Gast
#59601
an/abschaltbarer rechteckgenerator. ne555 tuts.
Gast
#59602
geht das irgendwie mit den bordmitteln? ich will den atmel keine melodien spielen lassen, sondern der soll einfach nur pieps machen... (und das nichtmal in einer bestimmten tonlage ;) )
Gast
#59603
nimm nen piezo, der brauch kein signal, nur spannung
Gast
#59604
wenn du'nen pwm ausgang über hast, is zwar'ne verschwendung, aber naja. würde aber keine interrupts oder sonstewas für so'n schnulli verschwenden. da wärs mir eher wert für 30cent oder so 'nen dummen 6pin-teiler mit chip-enable-eingang nehmen und vom takt abzweigen
Gast
#59605
hab ich vielleicht vergessen zu sagen: bin wirklich noch anfänger. was ist denn ein pwm-ausgang? und hat der atmel AT90S1200-4 sowas?
Gast
#59606
der 1200er hat keinen PWM-Ausgang. Schalte den Speaker einfach zwischen 2 Portpins, ggf. mit zusätzlichem Widerstand. Zum Programm: entweder mit Timer, oder wenn der Chip sonst nichts zu tun hat, auch mit einfachen delay. ldi r16, 0b00000001 loop: out PORTB, temp cpl r16 //invertiert //hier entsprechendes delay je nach Taktfrequenz und Tonhöhe rjmp loop //forever eleganter gehts mit dem Timer, aber da du offensichtlich ganz am Anfang bist, machs erst mal so.
Gast
#59607
hab ich das richtig verstanden, dass der ton durch an-und ausschalten zustande kommt? wozu ist temp da? (oder is r16 = temp [im beispiel]) kann mir jemand einen anhaltspunkt geben, wie ich nen hörbaren ton erzeugen kann?
Gast
#59608
jo, temp ist r16. Willst du einen Ton von z.B. 1kHz erzeugen, beträgt die Periodendauer 1ms, eine halbe Periode also 500µs. Die restliche Programmlaufzeit mal ausser acht gelassen, muss die Verzögerung also 500µs betragen. Bei 1MHz Taktfrequenzsind das 500 Takte, bei z.B. 4MHz 2000 Takte. Kann man leicht mit Schleifen realiesieren: delay: ldi r17, 100 delay_loop: dec r17 //1. Takt nop //2. Takt nop //3. Takt brne delay_loop //4.+5.Takt erzeugt also eine Warteschleife von 100*5 Takten, also bei 1MHz 500µs.
Gast
#59609
auf jeden fall schonmal vielen dank. seh ich das jetzt richtig, dass ich, wenn der ton eine sekunde gehalten werden soll, das ganze dann bei dieser frequenz 1000 mal wiederholen muss?
Gast
#59610
du must den code der die pins schaltet und die warteschleife enthält eine sekunde lang ausführen (in einer weiteren schleife) Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|