Hallo Leute Vielleicht hat jemand schon mit dem Psoc-µC gearbeitet. Ich Bin ein neuling in der Entwickung mit Psoc und habe dazu paar fragen. ich versuche ein Signal am Ausgang des µC abhängig von dem am Eingang eingelegte Spannung(mit Poti) zu steuern. Die gemessene Analog spannung wird intern mit eiem ADC umgewandelt. Am Anfang wird der startwert(Ini_wert) ermittelt und gespeichert. Danach erfolgt in einer Endlossschleife weitere Messungen(Mess_wert). Die Differenz aus Mess_wert und Ini_wert wird gebildet. Nach überschreiten einem Schwellewert schaltet sich der Ausgang (Hier als Beispiel LED). Der LED bleibt an bis der untere Schwellewert nicht überschritten wird ansonsten aus. ich möchte also ein Code implementieren(in C) zur steuerung diese LED. In welche Form wird er ADC-ergebnis zurückgegeben (dezi, hexa, binär...)? Kann mir Jemand helfen mit einem Beispielcode in C für ein Psoch?. Der ADC ist ein Delta sigma umsetzer. Ich bin für jede Hilfe sehr Dankbar. Lg Sebastian
schau doch mal in die datasheets der einzelnen usermodule. da sind beispielcodes dabei wie man den jeweiligen ADC/DAC anspricht. die hysterese sind dann nur noch paar if abfragen
Ja danke ist schon gemacht , aber ich weiß nicht genau in welcher format(hex oder bin oder dezi) das Ergebnis zurückgegeben wird, sodass ich in der If-Anweisung vergleichen kann. Anbei habe ich code abschnitt zum Lesen des Startwerts(readADstart) und die Messwerts(readAD). Der startwert resultiert aus der Mittelung aus 255 Messungen. Danke für weitere Imputs.
heeeeeee Leute wieso keiner ist bereit dieser Junge zu helfen. ich kenne mich nicht so gut mit Psoc , sonst ich hätte dich geholfen Sebastian. lg
Hi >ich kenne mich nicht so gut mit Psoc , sonst ich hätte dich geholfen >Sebastian. Ich auch nicht. > aber ich weiß nicht genau in welcher format(hex oder >bin oder dezi) das Ergebnis zurückgegeben wird, .... Wenn du den ADC meinst, bei einem 12Bit-ADC kommt ein Wert zwischen 0 und 4095 zurück. Wie du den schreibst ist egal. MfG Spess
Danke Spess ich versuvche mit diesem ERkenntniss schon mal vorran zu kommen
Mir erschließt sich die Logik deines Programms nicht recht. Du summierst in 'ergb' auf und gleichzeitig teilst du 'ergb' durch 'counter' in einer Integeroperation? Soll das den Mittelwert über 255 Werte darstellen? Was geht denn nicht, wenn du den Code ausführen läßt? Wo ist der Code für die Ansteuerung der LED? In den Beispielen bei PSoC gibt es auch noch den Hysterese-Komparator als extra Modul implementiert. Vielleicht ist das eher was für dich. Und wieso heißt du oben Stefan und unten Sebastian? Nur mal so als Frage. Gruß - Abdul
kannst du nicht dein Code ein bisschen mehr kommentieren... würde es vereinfachen
Hi, Endschuldigung für den vornamen, mein Bruder war mal kurz hier Online , und ich habe vergessen zurückzustellen. ok. ist das nicht die Mittelung über diese 255 Messungen ? oder habe ich da was falsch gemacht. ich addiere auf 0, 255 mal den Messwert und dann teile ich das endergebnis durch 255. Meiner Meinung nach ist sinnvoll um den gemittelte Wert zu haben, oder sehe ich es flach !!!!! Danke Stefan
Mal so als Beispiel: Am Anfang ist ergb=0, dann liest du den ADC und der liefert dir maximal 4095. ergb und ADC werden addiert zu ergb. Dann teilst du ergb durch counter und der ist da 255. Bereits bei deiner ersten Messung kann der Wert also nicht größer 2^12/2^8 werden. Aus deinem 12Bit Wandler wird also ein 8Bit Wandler! Ich vermute, du willst ein Tiefpaßfilter in Software realisieren. Das ist einfacher in Hardware als RC-Glied zu machen, außer deine Meßabstände ergäben unrealistisch große Werte für R und C. Nebenher erschlägst du damit auch gleich mögliche Transienten im Eingangssignal, die der ADC fehlerhaft übersetzen könnte, denn der hat auch ne Grenzfrequenz! Stichwort Aliasing. Die ganze Sache hat aber mit der Hysterese und der Ansteuerung der LED nix zu tun! Trenne beide Codeabschnitte und setze für den zweiten Teil (Komparator) fiktive Werte über Variablenzuweisung und teste den zweiten Teil dann komplett getrennt. So wie sich das Problem darstellt, hat es auch mit PSoC ansich nichts zu tun. Ist ein reines C-Problem. Gruß - Abdul
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.