Hallo! Ich bin erst kurzem auf Mikrocontroller aufgestiegen. Und habe da ein Problem. Ich erzeuge einen Sinus in dem ich eine Wertetabelle von einem Sinus ausgebe. Mein Mikrocontroller ist ein ATMega8 und Programm schreibe ich mit codevision in c. Das Programm ist interruptgesteuert, d.h. ich erzeuge den sinus mit höchster priorität und ausgabe und messen wird mit dem interrupt ermöglicht. Erzeugung funktioniert, allerdings möchte ich, mit if-schleifen etwas programmieren. es scheint allerdings, das das if ignoriert wird und gleich das ausgeführt was in den geschweiften klammern steht. in dem programm habe ich einfach den wert bei dem momentan der interrupt ausgelöst wird, am lcd ausgegeben. zu testzwecken. das funktioniert auch. nur die if-bedingung passt nicht Schauts euch am besten das programm selber an. Wäre super wenn ihr mir helft, danke mfg daniel
Hallo Daniel! Erst mal: falsches Forum! Das gehört eher in "Allgemein". Naja, vielleicht sieht Andreas das und verschiebts freundlicherweise ;) Zu Deinem Problem: Du machst eine Zuweisung und prüfst dann, diese Zuweisung "wahr" ist. if (null=PINC.0) { lcd_gotoxy(0,1); lcd_putsf("Nulldurchgang"); } Das ist ein wenig falsch, was Du möchtest, sieht in etwa so aus: if (null == PINC.0) { lcd_gotoxy(0, 1); lcd_putsf("Nulldurchgang"); } Was ich immer wieder feststelle: der Code, den CodeVision ausspuckt, kann doch kein Mensch mehr lesen... Gruß, Patrick...
Danke, für die schnelle Antwort, Ja genau hast recht, ich wollte eine wahrbedingung haben mit == klappt es jetzt wunderbar, danek nochmals hast recht vielleicht ist ja andreas so nett und verschiebt die EInträge ins Allgemein-Forum weißt du vielleicht, wo ich ein codevision tutorial für c finde? Unter der Vorraussetzung es gibt natürlivh sowas. Bzw wo finde ich ein normales c-tutorial, das bestens für die erlernung von c für mikrocontroller geeignet ist. mfg daniel
Hallo! Habe wieder ein Problem bei meinem Projekt. Alles funktioniert wunderbar. Nur ich habe jetzt folgendes Problem. Ich möchte am PINC.3 Eingang per Taste auf einen andere Frequenz springen (dient eh nur zum Ausprobieren). Auf jeden Fall gebe ich was am Eingang PINC.3 ist zusätzlich auf dem Display aus. Und ich sehe das der Eingang von alleine zwischen 0 und 1 springt ohne das ich die Taste drücke bzw. vorher gedrückt habe. Ich habe die Vermutung das, das irgenwiemit dem aktiviertem ADC zu tun hat. Der ist nämlich auf PORTC und ich brauche die ersten beiden niedriegsten Bit (ADC0 und ADC1) um etwas einzulesen. Ich nehme mal an, dass er alle möglichen ADC-Eingänge aktiviert. Wie kann ich auf PIC.3 denn den ADC ausschalten. Oder irre ich mich und es liegt an etwas anderes. PS: Wie kann ich denn eine 16Bit-Zahl in 2 8Bit-Zahlen speichern, also High und Low? mfg, Daniel
Ach so, im vorigen Beitrag habe ich die Datei als Anhang dazugeschickt. Habs vergessen zu erwähnen. Wäre toll wenn mir wieder jemand hilft. mfg daniel
Ich bin mittlerweile fraufgekommen, wo der Fehler ist, aber nicht wieso. Es hat nichts mit dem ADC zu tun. Zur Sinuserzeugung brauche ich 8Bit Ausgänge. Da aber auf meinem Board der einzige PORTD mit 8Bit ist, der frei ist. Und ich den für das LCD brauche. Hat mir jemand diese Zeilen geschrieben, die die 2 höchstwertigen Bits auf PORTC.5 und PORTC.4 ausgibt. Die Zeilen schaun so aus: PORTB=(temp&0x3F); PORTC=((temp&0xC0)/0x04); Allerdings wie gesagt, habe ich das nicht selbst geschrieben und ich vertehe dies 2 Zeilen nicht, in der derFehler liegt. Ergeben für mich irgendwie keine Logik. Schauts euch die 2 Zeilen an und sagt mir bitte wie die funktionieren und was falsch ist. mfg daniel
Ich verstehe nun wie die Zeilen funktionieren, aber weiß nicht wie ich es besser machen kann. Kann mir jemand helfen. Ich meine, ich fühle mich hier schon ganz schön allein gelassen mitmeinem Problem. Bitte. mfg daniel
Alle Probleme habe ich mittlerweile behoben. Habe halt mal mein Hirn einschalten müssen. Für alle die sich ein paar Gedanken gemacht haben, möchte ich trotzdem danken. mfg daniel
Hoppala! Sorry, ich habe den Thread aus den Augen verloren, sonst hätte ich Dir natürlich geantwortet! Diese zwei Zeilen, die Du nicht verstehst, Maskieren die Bits, die auf dem "anderen" Port ausgegeben werden sollen. Aber das weist Du ja inzwischen :) Irgendwie war das doch dann gut, daß Dir keiner mehr geantwortet hat, jetzt vestehst Du es auf jeden fall ;) Gruß, Patrick...
Danke, jetzt habe ich es auch verstanden. Hast recht ist gut, das mir keiner geantwortet hat. So verstehe ich jetzt es ohne Probleme. mfg daniel
Hi! Ich hab wieder ein paar Fragen. Wie kann ich den relativ einfach im Codevision mit Kommawerten rechnen bzw. wie kann ich diese als Kommawerte am Display ausgeben. mfg daniel
Hallo Daniel! @Erzeugung funktioniert, allerdings möchte ich, mit if-schleifen etwas programmieren. Entschuldigung, ich möchte zwar nicht pingelig wirken, aber es gibt keine If-Schleifen. Bei uns in der Schule wurde jeder ermahnt, der If-Schleife sagte. Tschüss.
Ja, hast vielleicht recht. Hab C nie so richtig gelernt. Gfällt dir If-Bedingung besser? mfg daniel
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.