AT90S1200 und PC-Speaker

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 #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?

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 22 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.