Hallo, hat jemand eine Idee, wie man einen AT90S1200 dazu bringen kann auf einem angeschlossenen PC-Speaker einen Piepston auszugeben (als Statusmeldung)? Danke, Thomas
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 ;) )
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
hab ich vielleicht vergessen zu sagen: bin wirklich noch anfänger. was ist denn ein pwm-ausgang? und hat der atmel AT90S1200-4 sowas?
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.
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?
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.
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?
du must den code der die pins schaltet und die warteschleife enthält eine sekunde lang ausführen (in einer weiteren schleife)
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.