Forum: Mikrocontroller und Digitale Elektronik Problem mit AVR Bitte Hilfe Dringend


von Heinz peter P. (poschi8)


Lesenswert?

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

von holger (Gast)


Lesenswert?

Standardantwort: JTAG Fuse abschalten

von ichhhhh (Gast)


Lesenswert?

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.

von Heinz peter P. (poschi8)


Lesenswert?

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

von Ich (Gast)


Lesenswert?

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?

von avr (Gast)


Lesenswert?

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

von Heinz peter P. (poschi8)


Lesenswert?

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

von holger (Gast)


Lesenswert?

Mach das mal so:
1
int main(void)
2
{
3
  while(1)
4
  {
5
  }
6
}

Dann sollte PC2 aus sein;)
Ansonsten JTAG Fuse abschalten.

von holger (Gast)


Lesenswert?

>Mein original Code lautet ja ganz anders.

Danke schön du Trottel;)

von Klaus W. (mfgkw)


Lesenswert?

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.

von Klaus W. (mfgkw)


Lesenswert?

@holger:
wenn ich mir schon sowas verkneife findet sich jemand anderes :-)
In der Sache hast du sicher vollkommen recht.

von Heinz peter P. (poschi8)


Angehängte Dateien:

Lesenswert?

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

von holger (Gast)


Lesenswert?

>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)

von Klaus W. (mfgkw)


Lesenswert?

Eines der ungelösten Rätsel der Informatik:
Was um alles in der Welt ist eine if-Schleife?

von Klaus W. (mfgkw)


Lesenswert?

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.

von Heinz peter P. (poschi8)


Lesenswert?

Also über das ganze noch ein while(1) geben?!

Mit freundlichen Grüßen,
Heinz Peter

von holger (Gast)


Lesenswert?

>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.

von avr (Gast)


Lesenswert?

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

von Klaus W. (mfgkw)


Lesenswert?

Sauber!

von Heinz peter P. (poschi8)


Lesenswert?

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

von egon (Gast)


Lesenswert?

>    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?

von Heinz peter P. (poschi8)


Lesenswert?

Jap das war auch einer meiner Fehler... ;)

Mit freundlichen Grüßen,
Heinz Peter

von schlaumeier (Gast)


Lesenswert?

Weil sein original Code ja ganz anders lautet.

von Heinz peter P. (poschi8)


Lesenswert?

Warum wird beim Drücken von PB0 (kontakt gegen Masse) die zweite 
if-Schleife nicht ausgeführt?
Mit freundlichen Grüßen,
Heinz Peter

von Klaus W. (mfgkw)


Lesenswert?

Weil es immer noch keine if-Schleifen gibt.

von Heinz peter P. (poschi8)


Lesenswert?

Was, das versteh Ich jetzt nicht?

von Klaus W. (mfgkw)


Lesenswert?

Eben.

von Heinz peter P. (poschi8)


Lesenswert?

Ich weiß schon was eine if-Schleife ist und was die macht falls du das 
denkst.
Könntest du dich bitte klar ausdrücken.

von (prx) A. K. (prx)


Lesenswert?

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.

von Heinz peter P. (poschi8)


Lesenswert?

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.

von (prx) A. K. (prx)


Lesenswert?

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.

von Winfried J. (Firma: Nisch-Aufzüge) (winne) Benutzerseite


Lesenswert?

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.

;-)

von Klaus W. (mfgkw)


Lesenswert?

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!

von Heinz peter P. (poschi8)


Lesenswert?

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.

von Klaus W. (mfgkw)


Lesenswert?

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.

von Joe (Gast)


Lesenswert?

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

von Winfried J. (Firma: Nisch-Aufzüge) (winne) Benutzerseite


Lesenswert?

@ 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.

von Klaus (Gast)


Lesenswert?

Jetzt werden wir aber philosophisch :>

von Winfried J. (Firma: Nisch-Aufzüge) (winne) Benutzerseite


Lesenswert?

99% aller Missverständnisse sind philosophischer Natur.
Eine Schande das dies an keiner Grundschule gelehrt wird !!!

von Wegstaben V. (wegstabenverbuchsler)


Lesenswert?

@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
Noch kein Account? Hier anmelden.