Hallo, Ich habe folgenden Code geschrieben: int main(void) { while(1) { DDRB &= ~( 1 << PB0 ); PORTB |= ( 1 << PB0 ); DDRC &= ~( 1 << PC0 ); PORTC |= ( 1 << PC0 ); PORTC |= (1 << PC1) | (1 << PC2) | (1 << PC3); PORTC &= ~(1 << PC2); } } Mein Problem ist das Ich am Pin PC2 5,2V messe trotz: PORTC &= ~(1 << PC2); Wo liegt hier der Fehler. Danke schon mal in voraus für eure Antworten, Heinz Peter
Werde dir erstmal darüber klar, was der Code überhaupt macht. Die Bedeutung und den Unterschied zwischen DDR und PORT solltest du auch verstehen. Weißt du was while(1) macht? Topic: Bitte Hilfe Dringend Wenn du noch bei den Grundlagen bist, kann es ja wohl nicht so dringend sein.
While(1) ist ne Endlosschleife. Mit DDR leg ich fest ob die Pins Eingang oder Ausgang sind. mit PORT frage ich die dann ab, bzw schalte die Pins. Und doch es ist dringend... Mit freundliche Grüßen, Heinz Peter
Du hast die Befehle in einer Endlosschleife. Dh: PORTC |= ( 1 << PC0 ); PORTC |= (1 << PC1) | (1 << PC2) | (1 << PC3); PORTC &= ~(1 << PC2); wird laufend hintereinander ausgeführt. Genauso wie die DDR Register... Ist dir das bewusst?
Heinz peter Posch schrieb: > mit PORT frage ich die dann ab, bzw schalte die Pins. ist FALSCH! Richtig: mit PIN frage ich die dann die Pins ab mit PORT schalte die Pins avr
Ahh, jaja schon klar. Mein original Code lautet ja ganz anders. HAb da meinen Fehler aber bereits gefunden, war ein problem mit der Endlosschleife. Mit freundlichen Grüßen, Heinz Peter
Mach das mal so:
1 | int main(void) |
2 | {
|
3 | while(1) |
4 | {
|
5 | }
|
6 | }
|
Dann sollte PC2 aus sein;) Ansonsten JTAG Fuse abschalten.
>Mein original Code lautet ja ganz anders.
Danke schön du Trottel;)
Ein Semikolon dahinter? Es wäre nett, beim nächsten Mal Orignalcode einzufügen und nicht irgendetwas ähnliches, außerdem helfen eine ordentliche Formatierung und ein [c]-Tag beim Lesen.
@holger: wenn ich mir schon sowas verkneife findet sich jemand anderes :-) In der Sache hast du sicher vollkommen recht.
Hier ist mein Code angehängt. Warum wird die Erste if-schleife nicht durchlaufen wenn der Taster an PC0 gegen Masse schliesst? Mit freundlichen Grüßen, Heinz Peter
>Warum wird die Erste if-schleife nicht durchlaufen wenn der Taster an >PC0 Weil das Programm ganz schnell zuende ist und nicht mehr ausgeführt wird. Da fehlt das while(1)
Eines der ungelösten Rätsel der Informatik: Was um alles in der Welt ist eine if-Schleife?
Die Idee, mehrere _delay_ms hintereinander zu schreiben anstatt in eine Schleife finde ich übrigens gut. Gegenüber einer for-Schleife spart das nämlich toll Rechenzeit.
Also über das ganze noch ein while(1) geben?! Mit freundlichen Grüßen, Heinz Peter
>Die Idee, mehrere _delay_ms hintereinander zu schreiben anstatt in >eine Schleife finde ich übrigens gut. >Gegenüber einer for-Schleife spart das nämlich toll Rechenzeit. Könnte man auch mit while machen. Oder "do please" ;) >Also über das ganze noch ein while(1) geben?! Ja.
Klaus Wachtler schrieb: > Was um alles in der Welt ist eine if-Schleife? Es muß sie "fast" geben, eine Homepage hat sie jedenfalls: http://www.if-schleife.de/ avr
Ja da hast du eigentlich recht... lol Ich hab das aus der OOP entnommen, da man hier die Funktionen auch in eigene Methoden schreibt (allerdings um Codezeilen einzusparen). Naja hab für das Projekt vorher nicht wirklich ein Konzept erstellt, sonder eher drauf los programmiert, ist wie man sieht nicht zum weiterempfehlen. Aber der Durchlauf ist geglückt, also Danke für deine Hilfe!!! Mit freundlichen Grüßen, Heinz Peter
> DDRC &= ~( 1 << PC0 ); > Mein Problem ist das Ich am Pin PC2 5,2V messe trotz: PORTC &= ~(1 << PC2); Warum hat von euch Schlaumeiern Peter nicht darauf hingewiesen, dass es DDRC |= ( 1 << PC2 ); heißen muss, wenn man PC2 als Ausgang betreiben möchte?
Jap das war auch einer meiner Fehler... ;) Mit freundlichen Grüßen, Heinz Peter
Warum wird beim Drücken von PB0 (kontakt gegen Masse) die zweite if-Schleife nicht ausgeführt? Mit freundlichen Grüßen, Heinz Peter
Ich weiß schon was eine if-Schleife ist und was die macht falls du das denkst. Könntest du dich bitte klar ausdrücken.
Heinz peter Posch schrieb: > Ich weiß schon was eine if-Schleife ist Sieh an! Ausser dir weiss das nämlich niemand. Erklär! M.a.W: Jemand, der stur auf seiner if-Schleife besteht, hat Probleme, ernst genommen zu werden.
Hallo?! Ich will nicht über Schleifen diskutieren, Ich möchte bitte wissen warum beim Drücken des Tasters an PB0 das programm nicht in die Verzweigung springt.
Und (wohl nicht nur) ich möchte wissen, warum von dir bisher nichts zum Thema JTAG-fuse kam. Wurde zweimal erwähnt. Das ein gut eingübter Reflex: Frage Port C => Antwort JTAG abschalten.
Eine bedingte Programmsequenz wird nicht ausgeführt wenn: die If abfrage nicht erreicht wird die if Bedingung nicht erfüllt werden kann die if Bedingung nicht zur rechten Zeit erfüllt ist. Such dir was aus ein PAP oder ein Programstrukturplan hilft weiter, wenn ma nicht aus der Hüfte zu schießen vermag. Pampen dagegen eher nicht. ;-)
Also, noch ein Versuch.
Es gibt hier etliche Leute, die ihren Mitmenschen gerne
helfen und großteils enormes Wissen herumschleppen.
Das zu nutzen, indem man sich helfen lässt, ist
sinnvoll und legitim.
Das setzt aber auch eine gewisse Höflichkeit voraus, oder wie
man es auch immer nennen möchte (Netiquette...).
Wenn jetzt jemand sich aber nicht daran halten mag, darf
er sich nicht wundern, wenn er mehr oder weniger schnell
unfreundliche Antworten bekommt oder zumindest keine
sinnvollen mehr.
Einer der Punkte, die mir sauer aufstossen, ist daß du
keinerlei Bemühen zeigst, denen das Leben zu erleichtern,
die dir helfen sollen.
Das beginnt mit einem unformatierten Quelltext, der halt
schwerer zu erfassen ist als ein sauber formatierter und
deinen Helferlein also schon mal unnötig Zeit stiehlt.
Dann steht bei jedem Verfassen eines Postings direkt drüber
ein Hinweis zur Formatierung mit [c]..., was du elegant
ignorierst. Auch das würde die Lesbarkeit verbessern.
Irgendwann kommt dann mal ein Quelltext, vollkommen
unverständlicherweise als irgendwas.txt.txt.
Er ist wieder mies formatiert, praktisch unkommentiert
(außer etwas hirnrissigem in der Art "Ende Zeile 1").
Was soll das?
Es wäre nett, das Problem auf ein möglichst kleines,
vollständiges Beispiel zu reduzieren, das ordentlich
beschrieben ist. Zusammen mit der Information, was
du dir davon erwartest und einer klaren Aussage, was
stattdessen passiert, würde man auch gerne helfen.
Stattdessen bekommt man etwas vorgesetzt, durch das
man sich mühsam durchquält.
Weil du keine Zeit investierst, sollen deine Sklaven
hier mehr Arbeit haben? Das ganze natürlich laut
Threadtitel "Dringend".
Zu dem "Dringend": Du machst jetzt bislang den Eindruck,
als ob du - hm, naja, nur begrenzt Ahnung von der
Materie hast.
Genau genommen stehst du vor dem Wissensstand, den man
mit dem Tutorial erwirbt.
Auch das ist wieder ein Punkt, den ich irgendwo zwischen
unhöflich und dreist ansiedle: Du lässt dir hier Sachen
erklären, die du auch selber lernen könntest - ohne
anderen die Zeit zu stehlen.
Was willst du also Tolles entwickeln, wenn du
a) keine Ahnung hast (was ja erstmal nicht verwerflich
ist, solange man sich bemüht das zu verbessern), und
b) nicht mal die elementaren Sachen lernen willst?
Aber zurück zu den Unhöflichkeiten/Dreistigkeiten:
Hier einen mageren Quelltext hin zu werfen mit der
selten dämlichen Frage "wo ist hier der Fehler"
(wie soll man aus dem Quelltext auf deine 5.2Volt
schließen, wenn man die Schaltung nicht kennt?),
hier die Zeit deiner ehrenamtlichen Helferlein zu
verplempern, nur um dann irgendwann zu verkünden:
> Mein original Code lautet ja ganz anders.
qualifiziert einen für das Arschloch des Monats.
Ich bin ja ein weitgehend friedlicher Mensch, aber
da schwillt mir dann doch der Kamm.
Nächster Punkt ist die Beratungsresistenz.
Musterbeispiel: Auch durch häufiges Wiederholen
des Worts gibt es keine if-Schleifen.
Wenn du hier Wissen holen willst, darfst du gerne
vernünftig formulieren.
Jeder fängt klein an, aber man darf sich durchaus
steigern.
Davon kann ich hier nichts erkennen.
Noch klarer werde ich mich jetzt aber nicht ausdrücken,
sonst wird es beleidigend.
Schönen Sonntag!
Also bezüglich JTAG das kanns nicht sein, denn ICh arbeite mit nem ATMEGA 8 der hat ja so viel Ich weis kein JTAG. Nun zu dir Klaus: Ich wollte eigentlich nur einen Code ausschnitt reinstellen damit das ganze leichter wird, wenn du das mal in meiner txt Datei suchst wirst du ziehmlich schnell auf diesen Code treffen. Die kommentare die Ich da gemacht habe sind für die anderen programmieren die an diesem Projekt arbeiten, da wir nach einem Masterplan zu arbeiten haben. @ Winfried Hast wohl Recht, ohne einen Ordentlichen Plan wird das wohl nichts.
Heinz peter Posch schrieb: > Ich wollte eigentlich nur einen Code ausschnitt reinstellen damit das > ganze leichter wird, wenn du das mal in meiner txt Datei suchst wirst du > ziehmlich schnell auf diesen Code treffen. Nein, das finde ich so nicht dort. Was die beiden Quelltexte gemeinsam haben, ist vor allem die Formatierung :-) Und genau das ist das Problem: hilfreich wäre ein kleines, vollständiges Beispiel, das den Fehler aufweist, und zwar dieses Beispiel im Original - nicht etwas, was stellenweise ähnlich ist. Was du geliefert hast, ist etwas anderes. Ist mir aber auch egal, ich gehe lieber mit dem Hund raus.
Erlebnisse in diesem Forum: Ich habe eine Frage .... Antwort: das kannst du selbst, wenn du nach denkst ... Ich wiederhole die Frage ... Antwort: Du musst erst lernen ... Nochmal gefragt ... Jonas schreibt: Wer lesen kann ist klar im Vorteil Max schreibt an Jonas: Das steht aber nicht in Wiki.. Jonas schreibt: Du hast keine Ahnung und bist doof Max wird ausfallend (Text liegt unter der Gürtellinie) Ich frage erneut nach .... Zitate: Antwort: oben steht doch, das findest du im Datenblatt Antwort: Du kannst doch im Forum suchen .... Antwort: googeln Antwort: erst mal lernen Antwort: Arschloch Antwort: gehirnlos . . . . Nach dem 32. Beitrag von insgesamt 15 Schreibern schreibt ein bisher nicht in Erscheinung getretener Gast: .... einen externen Takt an den Oszillatoreingang anlegen und .... Nach diesem brauchbaren Beitrag gab es keine weiteren Beiträge. Dieser Beitrag war passend zur ersten Frage. Fazit: alle vorherigen Schreiber waren nicht in der Lage eine qualifizierte Antwort zu geben. ==> In diesem Forum kann einer von 15 Schreibern eine brauchbare Hilfe geben. Danke
@ klaus es ist ein typisches Anfängerprolem, vollkommen unabhängig vom Fachgebiet, sich eine "Fachmann/(Fachidioten)" nicht klar und verständlich ausdrücken zu können. Er kann es nicht aus Unhöflichkeit nicht, sondern weil er die Terminologie geauso wenig beherrscht wie das Problem an sich oder dessen zweckmäsige Darstellung. Könnte er all dies von dir Geforderte, so hätte er das Problem gar nicht und müsste dich nicht belästigen. Hier ist der Effizenz suchende Scholar an den Wiedrigkeiten der Kommunikation gescheitert. Man sehe es ihm nach, denn er weis nicht was er tut, er glaubt es nur, da er seine wahre Unwissenheit nicht zu erkennen vermag. Sein Verstand gaukelt ihm vor das Problem zu erkennen, ihm fehle nur die Lösung. In Wahrheit sieht er nur das Problem vor dem Problem.
99% aller Missverständnisse sind philosophischer Natur. Eine Schande das dies an keiner Grundschule gelehrt wird !!!
@Winfried J. gut zusammen gefasst. Dein Beitrag 25.04.2010 10:06 bringt es ganau auf den (philosophischen) Punkt.
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.