Hallo leute, ich bin neu hier und wußte nicht, ins welche forum ich meinen beitrag schreiben sollte.. s geht um folgendes: ich soll per software-programmierung einen signal generator programmieren. dabei gibt s mehrere anforderungen: 1. verschiedene signalverläufe (also zeitmäßig) 2. eine zeitspanne soll variabel einstellbar sein 3. muß über den rx-ausgang ausgegeben werden um nochmal alles genauer zu erläutern: ich habe einen 4bit schalter mit dem ich 16zustände generieren könnte. den schalter also einlesen, welche stellung er hat und dann sozusagen die bestimmten signalverläufe ausgeben, nachdem ein anderer druck-knopf (dahinter muss noch eine entsprell funktion hinterlegt werden) aussenden. wie kann ich dieses nun programmieren? ich weiß, ich brauche drei funktionen: 1.schalter einlesen und überprüfen 2.signal auf ausgang legen 3.abfragen, ob der drucktaster gedruckt wurde und dann entprellzeit beachten nochmal zu den zeitverläufen: sollte der drucktaster betätigt werden, muss erst 8ms ein LOW-Signal und anschließend min 8ms HIGH-Signal..dieses ist variabel und somit hinter dem SWITCH-Schalter abgelegt. ein beispiel: ist der switchschalter auf 0000, dann liefert er mir die zeit 8ms(LOW) und dann 8ms(HIGH). ist er auf 0001, dann 8ms (LOW) und 16ms(HIGH). 0010 = 8ms+24ms usw. ich hoffe, einer von euch kann mir helfen..
> wie kann ich dieses nun programmieren?
Die Frage ist ein bisschen zu allgemein gehalten. Google nach "direct
digital synthesis" und ansonsten, diskutiere die Details doch erst
einmal mit deinem Professor/Lehrer statt uns deine Hausaufgaben machen
zu lassen.
Hoffentlich programmierst du in Assembler, denn das würde die Zeitberechnung erleichtern. Ich würde das so umsetzen: Du Programmierst zwei Schleifen (Unterprogramme): a) Signal auf HIGH und 8ms warten b) Signal auf LOW und 8ms warten Nun wird in einer Hauptschleife der Taster abgefragt. Ist er gedrückt, so wird der aktuelle Zustand des 4-Bit-Schalters eingelesen und in einen temporären Register (bspw. R17) kopiert. Dann wird zuerst das Unterprogramm b) aufgerufen. Ist es abgearbeitet, wird das Unterprogramm a) in einer Schleife aufgerufen. Dabei dekrementiert der uC das temporäre Register R17 nach jedem durchlauf um ein 1 und überspringt die Schleife, sobald der Wert 255 (0 minus 1) beträgt, vorausgesetzt, du verwendest einen 8-Bitter.
also, eigentlich programmiere ich in c..dies sieht dann ja anders aus..würde ich sagen..
Dann besteht die Schwierigkeit darin, die Zeit von 8ms abzuwarten. Es gibt aber die möglichkeit mit dem Befehl "volatile" Assembler-Code in C einzufügen. Mehr kann ich dir dazu leider nicht sagen. Jetzt sind die C-ler gefragt.
also, ich habe mir schon überlegt, dass ich eine schleife mache, die meinetwegen meine funktionen alle 2ms aufruft..dies ist schon vorgegeben..dann muss ich halt die funktionen schreiben.. den schalter kann ich ja mit hilfe von if-else abfragen oder gibts da etwas einfacheres?? und dann in den verschiedenen abzweigungen meine andere funktion abfragen..bitte hilfe..
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.