In der vertikalen isses schon klar, das ist vermutlich
Y = 64 + 64 * sin( x * scaleX ) gerundet, logo.
Jetzt müßt man noch scaleX rausklamüsern.
von 64 --> 64 soll's wohl Pi/2 sein
hi,
hätte da mal ne frage, ich hab da ne sinustabelle im internet gefunden, und mich würde jetzt interessieren, was stehen da für werte drin, das können ja nicht direkt die amplitudenwerte der einzelnen winkel sein.
;
; Sinustabelle fuer 8 Bits D/A
; Tabellenlaenge = 256 Werte
; VCC=5.000V, uLow=0.000V, uHigh=2.500V
; (mit sinewave.pas erzeugt)
;
Sinetable:
.DB 64,65,67,68,70,72,73,75
.DB 76,78,79,81,82,84,85,87
.DB 88,90,91,92,94,95,97,98
.DB 99,100,102,103,104,105,107,108
.DB 109,110,111,112,113,114,115,116
.DB 117,118,118,119,120,121,121,122
.DB 123,123,124,124,125,125,126,126
.DB 126,127,127,127,127,127,127,127
.DB 128,127,127,127,127,127,127,127
.DB 126,126,126,125,125,124,124,123
.DB 123,122,121,121,120,119,118,118
.DB 117,116,115,114,113,112,111,110
.DB 109,108,107,105,104,103,102,100
.DB 99,98,97,95,94,92,91,90
.DB 88,87,85,84,82,81,79,78
.DB 76,75,73,72,70,68,67,65
.DB 64,62,61,59,58,56,54,53
.DB 51,50,48,47,45,44,42,41
.DB 39,38,36,35,34,32,31,30
.DB 28,27,26,25,23,22,21,20
.DB 19,18,17,15,14,13,13,12
.DB 11,10,9,8,8,7,6,5
.DB 5,4,4,3,3,2,2,2
.DB 1,1,1,0,0,0,0,0
.DB 0,0,0,0,0,0,1,1
.DB 1,2,2,2,3,3,4,4
.DB 5,5,6,7,8,8,9,10
.DB 11,12,13,13,14,15,17,18
.DB 19,20,21,22,23,25,26,27
.DB 28,30,31,32,34,35,36,38
.DB 39,41,42,44,45,47,48,50
.DB 51,53,54,56,58,59,61,62
und was heißt das .DB. falls ich mal richtig angenommen hab beginnt der sinus bei 64, hat seinen positiven scheitelwert bei 128, seinen negativen scheitelwert bei 0 und seine nullpunkte dürften bei 64sein.
aber was sind das für werte, die stehen ja dann nicht direkt im diagramm vom sinus drinnen. ich bin vollkommen verwirrt.
mfg wosh
In der vertikalen isses schon klar, das ist vermutlich
Y = 64 + 64 * sin( x * scaleX ) gerundet, logo.
Jetzt müßt man noch scaleX rausklamüsern.
von 64 --> 64 soll's wohl Pi/2 sein
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
Ist doch eigentlich alles ganz klar:
die Tabelle enthällt alle Werte einer einzelnen Sinusschwingung mit der Amplitude +/- 2,5 V, wobei bei 2,5V der virtuelle Nullpunkt liegt. Sie geginnt bei 64, was dem Wert 0 entspricht (2,5V). Dann steigt sie an, hat bei 128 (eigentlich müsste das 127 heißen, da 7bit 0...127) ihr maximum, fällt wieder, geht durch 64 und erreicht dann irgendwann das Minimum mit 0V. Dann steigt sie wieder bis sie schließlich den Ausgangspunkt 64 erreicht (hört hier bei 62 halt auf).
Insgesamt teilt sie eine Schwingung in 32*8 = 256 einzelne Zeitpunkte auf.
DB heißt übrigens Databyte oder so und sagt dem Compiler, dass nun die nächsten ( Werte einfach gespeichert werden sollen (dezimal).
Vorher steht wahrscheinlich irgendwo noch z.B. org 300h, d.h. der Compiler legt die Werte ab Adresse 300 als Tabelle ab.
Nun kann man je nach Programmgestaltung und Zeitschleifen auch unterschiedliche Frequenzen erzeugen. Hauptsache die einzelnen Tabellenwerte werden immer im gleichen Zeitlichen Abstand ausgegeben.
wenn ich dies jetzt zeichnen würde, würde ich dann auf der x Achse von 0 - 255 eintragen, weil es ja 256 Werte sind, und auf der Y Achse:
der Nullpunkt ist 64, dann geht der sinus bis zu seiner positiven amplitude, welche bei 127 ist, dann wieder auf 64, dann auf seine negative amplitude bei 0 und dann wieder auf 64.
würde das so stimmen?
ajo und noch was, hat jemand vielleicht eine etwas bessere sinustabelle bei der hand, die nicht so fehlerhaft ist, wo z.B die amplitude stimmt und ganz unten z.B wieder bei 64 endet, weil ich hab kein plan wie ich die richtig umschreiben soll, dass das stimmt.
brauch sie eh nicht zum programmieren, ich muss das nur veranschaulichen.
mfg wosh
Vielleicht kann man auch schnell mal sie Excel Funktion für die Sinustabelle optimieren, dann kann man die Tabelle den Erfordernissen anpassen, für alle die sie brauchen.
Die Funktion für die Werte 0 bis 255 in den Feldern A1 bis A256:
Ich gebe mal als Anfangsnäherung die Funktion
=64+64*SIN(A1/256*2*PI())
Mit der Beschränkung auf ganze Zahlen und Beschränkung auf den Wertebereich von 0 bis 127 ergibt sich beispielsweise
=GANZZAHL(64+(64*SIN(A1/256*2*PI()))*0,999999)
Die Werte lauten dann:
064, 065, 067, 068, 070, 071, 073, 074, 076, 078, 079, 081, 082, 084, 085, 087,
088, 089, 091, 092, 094, 095, 096, 098, 099, 100, 102, 103, 104, 105, 106, 108,
109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 118, 119, 120, 121, 121, 122,
123, 123, 124, 124, 125, 125, 126, 126, 126, 127, 127, 127, 127, 127, 127, 127,
127, 127, 127, 127, 127, 127, 127, 127, 126, 126, 126, 125, 125, 124, 124, 123,
123, 122, 121, 121, 120, 119, 118, 118, 117, 116, 115, 114, 113, 112, 111, 110,
109, 108, 106, 105, 104, 103, 102, 100, 099, 098, 096, 095, 094, 092, 091, 089,
088, 087, 085, 084, 082, 081, 079, 078, 076, 074, 073, 071, 070, 068, 067, 065,
064, 062, 060, 059, 057, 056, 054, 053, 051, 049, 048, 046, 045, 043, 042, 040,
039, 038, 036, 035, 033, 032, 031, 029, 028, 027, 025, 024, 023, 022, 021, 019,
018, 017, 016, 015, 014, 013, 012, 011, 010, 009, 009, 008, 007, 006, 006, 005,
004, 004, 003, 003, 002, 002, 001, 001, 001, 000, 000, 000, 000, 000, 000, 000,
000, 000, 000, 000, 000, 000, 000, 000, 001, 001, 001, 002, 002, 003, 003, 004,
004, 005, 006, 006, 007, 008, 009, 009, 010, 011, 012, 013, 014, 015, 016, 017,
018, 019, 021, 022, 023, 024, 025, 027, 028, 029, 031, 032, 033, 035, 036, 038,
039, 040, 042, 043, 045, 046, 048, 049, 051, 053, 054, 056, 057, 059, 060, 062,
Das ist im wesentlichen die Tabelle die vorgegeben war. Immerhin ist die 128 nicht mehr dabei.
Manfred
Vielleicht ein Hinweis: weiter als bis Pi/4 braucht man die Tabelle nicht anzulegen. Aber das wißt ihr wahrscheinlich eh alle.
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
warum eigentlich pi/4, der sinus beginnt ja normalerweise, bei 0 und ist bei pi wieder 0.
Dh. der zeitpunkt wo wir bei der positiven amplitude sind ist pi/2 und das wären 90°vom sinus.
warum dann pi /4, und warum beginnen wir mit pi/2 wie oben gesagt wurde?
mfg harald
Von 0 - PI/4 ist der sinus eben der sinus
von PI/4 - PI/2 kannst du auch nehmen sin = cos(PI/2 - x)
und der Cos ist ja cos = SQR( 1 - sin^^2 )
Und daß man grundsätzlich nur einen Quadranten braucht, ist ja schon klar, von PI/2 - PI geht ja auch sin = (PI - x), und mit dem Vorzeichen muß man ohnehin jonglieren.
Ich räum aber ein, man muß abwägen.
Wenn die Genauigkeit der obigen Tabelle tatsächlich reicht und/oder man Platz genug hat, zahlt es sich vielleicht nicht aus.
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
Hier ist das ganz gut erklärt, auch mit praktischem Beispiel. Zum besseren Verständnis kann man ja auch
unter Downloads mit der Sinus-Tabelle für Libre Office ein wenig herumexperimentieren.
http://www.afug-info.de/Download/tab/Sinus-Tab/
Lesezeichen