Sinus per Tabelle mit ADuC814

Gast #269780
Lesenswert?

Ich will einen sinus für ein Schwinggerät erzeugen mit dem ADuC814
(Analog Devices). Habe leider noch nie mit C Programmiert allerdings
nur mit C++. Wie kann ich herausfinden wie die Hardware einstellungen
für den uC mache (Digital-Analogwandler, Taktrate, I/O Ports,
Timerinterrupts etc.).
y(i)=A.sin(2*pi*(f/fa)*i)
wie mache ich am besten eine Tabelle für die oben gennante formel.
100-160 wete pro periode würde reichen und das Gerät soll 1-200Hz
schwingen
Danke!
Gast #269781
Lesenswert?

Mit welchem Compiler arbeitest du denn?
Die Tabelle wuerde ich in Excel erstellen, und dann in ein
Konstantenarray uebertragen. (z.B.: const unsigned short dactab[] =
{0x0000 , ..., 0xFFFF};
Folgendes musst du initialisieren: Timer-Interrupt mit dem gewuenschten
Interval (also zb.: 200Hz * 100 Werte = 1/20000 s), da wirds evtl. schon
knapp bei deinem 8051er mit der Zeit.
Den DAC setzt du in diesem Timer mit Hilfe der Werte aus der Tabelle.
DACL=(unsigned char)dactab[i];
DACH=(unsigned char)(dactab[i]<<8);
'i' ist eine globale Variable die im Timer von 0 nach sizeof(dactab)
zaehlt.
Welche Register du fuer DAC und Timer initalisieren musst solltest du
im Datasheet nachlesen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren