hey leute, probiere gerade eine pin abfrage zu machen mit 430F2274. mit diesem Code: #include "msp430x22x4.h" volatile unsigned int i; void main(void) { WDTCTL = WDTPW + WDTHOLD; P1DIR |= 0x01; for (;;) { if(P1IN & BIT2){ P1OUT ^= 0x01; // Toggle P1.0 using exclusive-OR i = 50000; // Delay do (i--); while (i != 0); } } } ---------------------------- das problem ist auch wenn ich den taster am Port1-Pin2 drücke, passiert nichts. Ich benutze den Code Composer E version 2. Hier gibt es eine Registerleiste. das komische ist, wenn ich den taster drücke, wird der Flag des Ports für Pin2 gesetzt , aber im P1IN register verändert sich nichts. habe ich da was übersehen? darf ich den P1IN-register nicht abfragen? hm....... MFG max
Hallo, lass mal den Debugger weg, übersetz das Programm nativ ohne Debugcode und lass es dann am Prozessor laufen. Außerdem solltest du die P1DIR und P1SEL für beide verwendeten Ports richtig einstellen, bei solchen Fehlern nicht dran glauben, dass die defaultmäßig stimmen, schon gar nicht im Debugmode. P1IN ist das Port input register, da steht der momentane Zustand der PortEINGÄNGE. Deine Abfrage ist also korrekt. Grüße, Peter
Danke Peter. naja habe das jetzt aufm port 2 probiert und es geht. kennst du dich mit CCE v2 aus, wie übersetze ich da progrramm ohne Debugcode? MFG Max
Beim MSP430 gibt es meines Wissens, normalerweise keinen separaten Debug-Code bzw. Monitor Software, da er ja per JTAG "gedebuggt" wird und das Zeug in Hardware vorhanden ist.
Kann Dein code überhaupt funktionieren? do (i--); while (i != 0); sollte wohl eher heissen: do { i--; } while (i != 0);
Hallo, wenn es nur eine Anweisung im do ist, dann ist das zulässig. Mit CCE kenn ich mich nicht sehr gut aus, aber man kann auf jeden Fall von Debug auf Release umstellen. Project -> Properies -> C/C++ Build hier kann man normal zwischen Debug und Release umstellen, wenn es das Profil Release noch nicht gibt, musst du eins anlegen. Dazu muss man bei den Optionen im unteren Fensterteil alles auf höchste Optimierung stellen und nicht auswählen, dass irgenein Debugcode integriert wird, so genau kenn ich mich damit aber auch nicht aus. Dann kann man einfach ein neues Profil speichern. Ich verwende immer den mspgcc Compiler und übertrage meine Programme dann im BSL-Modus in den Controller. Zusammen mit Programmers Notepad und einem kleinen Batchfile zum Abarbeiten der Compilierungsschritte geht das sehr gut. Aber der CCE Compiler ist wohl auch nicht schlecht, vor allem ist nur die Codesequenz auf 8kB begrenzt, Data darf beliebig groß sein, man darf also auch für 32kB irgendwelche Schriftarten und Bilder für Displays usw. in arrays legen, ohne dass der Compiler aussteigt. IAR lässt das nicht zu, da ist alles zusammen auf 4 kB begrenzt. Grüße, Peter
jop peter , danke nochmal, habe die einstellung gefunden für release. PS: kleines updatechen (nur zu info)--> mit dem neuen CCE_v3 kann man bis zu 16kB code programmieren ;)
> do (i--); > while (i != 0); Ok, wusste nicht, dass dies zulässig ist. Aber ich würde es auf jeden Fall anders schreiben. Schnell ändert man mal was am Code und dann geht gar nichts mehr, wenn man sowas dann übersieht. Habe nochmal nachgedacht. Wenn Dein Code mit Port 2 funktioniert, dann hast Du bei Port 1 vielleicht noch ein Peripheriemodul aktiviert, dass das IO 0 oder 2 belegt und die Kontrolle darüber hat. Vielleicht ist es sogar der BSL, keine Ahnung. Am besten zu Beginn Deines Programmes auch noch P1SEL wie gewünscht setzen. Und "P1DIR |= 0x01;" ersetzen durch "P1DIR = 0x01;", damit es zu Beginn mal einen bekannter Wert zugewiesen wird.
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.