Hallo, auch wenn sich hier nicht gerade viele PSoC Entwickler tummeln probiere ich mal mein Glück. Ich programmiere auf dem Cypress PSoC 29466. Ich habe mein Programm auf dem POD dafür entwickelt und alles läuft bestens. Ein HexKeypad wird abgefragt und zusätzlich dei Daten von einem RFID Leser ausgewertet. Beides wird dann per UART an einen Rechner verschickt. Auf dem POD läufts, und wenn ich es afu einen realen Chip brenne, funzt es nicht komplett. Die Keypadauswertung funktioniert, und die Daten werden auch per UART verschickt. Doch die Ansteuerung des RFID-Lesers funktioniert dort nicht mehr komplett. Weiß jemand wo genau die Unterschiede bestehen zwischen dem POD udn dem Real Chip? Bin gerade ein wenig Ratlos wo ich da nach Fehlern suchen soll. Denn die sonstige Schaltung ist ja die selbe. Danke für Ideen, funky
Hallo, wie genau hast du die Kommunikation mit dem RFID Leser realisiert? Programmiere auch den CY8C29466 und kann dir folgende seite wärmstens empfehlen, ist für PSoCs die absolut beste! http://www.psocdeveloper.com/forums/ Unterschied zwischen POD und real Chip, das POD emuliert bloß, somit wird der Code nicht direkt reingeblasen sondern läuft nach wie vor auf dem PC (Debug). Leider hab ich das Problem auch immer wieder das codes mitn POD funken und mitn Chip nicht so ganz. Überprüfe mal deine Einstellungen bei Project --> Settings, Compiler. Wenn du den CY8C29466 verwendest sollte enable Paging angeklickt sein, da der ja 8 Pages zu je 256Byte RAM hat (= 2kBYTE). Diese Einstellung hat z.B. keine Auswirkungen beim POD, beim Chip aber sehr wohl. Vielleicht hast du auch ein Problem mit der Clock, die ändert sich leider auch zwischen POD und Chip (geringfügig, aber könnt dein Problem mitn RFID sein...) Hoffe ich hab dir zumindest etwas helfen können, kann dir nur sagen das der PSoC ein absolut genialer Chip ist der sehr leistungsfähig ist wenn man richtig mit ihm umgeht. mfg Bernhard
Wenn du funkyjay bist hast die Seite ja schon vorher gefunden g Bernhard
hi, ja im DeveloperForum habe ich auch schon gepostet und noch eine Anregung bzgl. der Spannungsversorgung bekommen. Ich habe da POD-powered ausgewählt, und evtl. hat das auch noch einen Einfluss wenn die Spannung für meinen Real-Chip nicht ganz sauber ist Der RFID Leser ist ein fertiges Modul welcher mit zwei Leitungen an dem PSoC hängt. (Clock und Data) Die Clock liegt irgendwo im Bereich von 100us-300us(bin momentan nicht in der Firma) und sollte ja eigentlich nicht allzuhohe Geschwindigkeitsanforderungen an den PSoC stellen. Die Clock habe ich an einen Interrupteingang gehängt, und sobald die Clock losläuft, werden die Bits von der Datenleitung eingelesen. Und da haut irgendwas mit dem Timing nicht hin. Es werden so wie es aussieht einzelne Bits verschluckt auf dem PSoC, weswegen mein Programm die Daten nicht auswertet und somit auch nix verschickt vom RFID Leser. Die Clock hatte ich zu Anfang auch im Verdacht, aber da UART ja funktioniert(was wesentlich Clock.kritischer sein dürfte) sehe ich das momentan nicht als Hauptproblem an. Die Ram-Einstellungen werde ich nochmal kontrollieren. Habe da nur mal was gelesen mit LargeMemoryModell usw. aber habe mich damit noch nicht tiefgehender beschäftigt. (Arbeite auch noch nicht sehr lange mit PSoCs) Aber das der Code gar nicht richtig auf dem POD läuft wußte ich z.b. noch nicht. Bin morgen wieder in der Firma und werde weiter testen. Evtl. gewinne ich dann ja noch paar neue Erkenntnisse
Hallo, als wenn dein Port mit der clk le4_clk ist dann hast du den aber nicht interruptgesteuert gemacht... Wenn du die Zustände am Datenport selber filtern musst, also kein Modul (UART) verwenden kannst, kann ich dir nahelegen es so zu probieren wie ich es mit dem Empfang von IR RC5 Code gemacht habe: http://www.psocdeveloper.com/forums/viewtopic.php?f=3&t=4143 < Die Ram-Einstellungen werde ich nochmal kontrollieren. Habe da nur mal was gelesen mit LargeMemoryModell usw. aber habe mich damit noch nicht tiefgehender beschäftigt. (Arbeite auch noch nicht sehr lange mit PSoCs) < Das ist im Prinzip nicht schwierig musst dir nur vorstellen, dass dein chip eben 8 pages zu je 256Byte RAM hat, muss man aufpassen wenn man eine ISR betritt, dass man auf die richtige Page zugreift, ist aber erst relevant wenn du sehr großen Code mit sehr vielen Variablen schreibst. Ich kann dir nur sagen der PSoC ist ein geiles Teil (hat aber natürlich auch gewisse Nachteile), und alle die über den PSoC schimpfen haben darüber nicht viel Ahnung... Es steht jedem Programmierer selbst zu ob ihm ein Chip sympathisch ist oder eben nicht. Also lass dich nicht entmutigen, halte durch, der Anfang ist recht schwierig! mfg Bernhard
Ach ja noch was: ISR (Interrupt Service Routinen) sind so kurz wie möglich zu halten (am besten in ASM), also in einer ISR switch case Anweisungen, mächtige Rechnerein und ähnliches sollte man unterlassen, ist besser in der ISR nur ein flag zu setzen und es im Hauptprogramm abzufragen. Wenn nämlich ein Interrupt abgearbeitet wird und ein weiterer kommt hinzu wird der zweite hinten angereiht. Wenn du für den ersten allerdings z.B.: die doppelte Zeit brauchst als der zweite kommt, verlierst du den zweiten Interrupt, kann bei dir das Problem sein. mfg Bernhard
hi, ja ok...das mit der Interruptroutine muss ich vielleicht nochmal überarbeiten. Zuanfang habe ich in den Routine auch noch den UART Kram gemacht ;D Das wird aber jetzt alles in der Hauptschleife gemacht. ja, aber eigentlich sollte LE_CLK einen Interrupt triggern. le_clk habe ich auf einen digitalen Buffer gelegt, welcher mir dann den Interrupt auslösen soll(tut er ja auch auf dem POD) Ich wollte nicht Keypad und RFID Int zusammen in den GPIO Interrupt packen, und soweit ich das gelesen habe hat man sonst nur die Möglichkeit mit diesen Dig_ENV User modulen wenn man einen Interrupt auf einen Pin legen will. Oder habe ich was übersehen? Naja, zu Anfang habe ich schon auf den PSoC geschimpft, weil das mit dem Designer alles so neu war. Aber wenn man einmal das Konzept ansatzweise geschnallt hat, isses doch ne geile Sache. (Ich bin aber wie man sieht erst am Anfang und habe noch keine AHnung was man damit noch so anstellen kann. Gerade die Rekonfigurierbarkeit verwirrt noch sehr) Aber das der Kram jetzt auf dem Chip nicht so läuft wie auf dem POD hat mir schon einen Dämpfer verpasst. Dachte ich könnte meinen Chef beeindrucken, aber war wohl nix ;D
Hallo, >Dachte ich könnte meinen Chef >beeindrucken, aber war wohl nix ;D kenn ich von wo... >ja, aber eigentlich sollte LE_CLK einen Interrupt triggern. >le_clk habe ich auf einen digitalen Buffer gelegt, welcher mir dann den >Interrupt auslösen soll(tut er ja auch auf dem POD) Sorry, stimmt, hab ich übersehen. Wenn ich mir dein main.c so ansehe glaub ich nicht das es notwendig ist das du die Tasten interruptgesteuert machst. Würde das mitn Buffer verschmeißen, die Tasten im 10msec Takt im while(1) abfragen und mir den GPIO Interrupt für die eingehenden Daten aufheben (ist Prioritäten Sache, wenn man bedenkt auf einem Taster bleibt man schon mal einige 10msec drauf, bei eingehenden Daten siehts aber anders aus...) Weiters ist es ratsam die Zeile: M8C_ClearIntFlag(INT_CLR0, INT_MSK0_GPIO); // Das Interruptflag fuer den GPIO Interrupt wird geloescht vorm Verlassen des GPIO Interrupts zu schreiben, ist eine PSoC Eigenheit. Verändere deine Software mal soweit, dass du auf die Tasten mal nicht so viel Rücksicht nimmst und schau mal was dein Leser dann macht. Ich vermute stark das deine Tasten ISR zu lange ist und der PSoC den Datenstrom vom Leser deshalb nicht richtig erkennt. Außerdem sollte man Tasten immer entprellen, wenn deine Versorgungsspannung nicht konstant ist, kann es sein, dass der PSoC Tastendrücker erkennt die keine sind... mfg Bernhard
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.