mikrocontroller.net

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


Autor: Heinz peter Posch (poschi8)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Standardantwort: JTAG Fuse abschalten

Autor: ichhhhh (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Heinz peter Posch (poschi8)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Ich (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: avr (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Heinz peter Posch (poschi8)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mach das mal so:
int main(void)
{
  while(1)
  {
  }
}

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

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Mein original Code lautet ja ganz anders.

Danke schön du Trottel;)

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Klaus Wachtler (mfgkw)
Datum:

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

Autor: Heinz peter Posch (poschi8)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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)

Autor: Klaus Wachtler (mfgkw)
Datum:

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

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Heinz peter Posch (poschi8)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also über das ganze noch ein while(1) geben?!

Mit freundlichen Grüßen,
Heinz Peter

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: avr (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sauber!

Autor: Heinz peter Posch (poschi8)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: egon (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Heinz peter Posch (poschi8)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jap das war auch einer meiner Fehler... ;)

Mit freundlichen Grüßen,
Heinz Peter

Autor: schlaumeier (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Weil sein original Code ja ganz anders lautet.

Autor: Heinz peter Posch (poschi8)
Datum:

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

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Weil es immer noch keine if-Schleifen gibt.

Autor: Heinz peter Posch (poschi8)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was, das versteh Ich jetzt nicht?

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eben.

Autor: Heinz peter Posch (poschi8)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Heinz peter Posch (poschi8)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Winfried J. (Firma: Nisch-Aufzüge) (winne)
Datum:

Bewertung
0 lesenswert
nicht 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.

;-)

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Heinz peter Posch (poschi8)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Joe (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Winfried J. (Firma: Nisch-Aufzüge) (winne)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jetzt werden wir aber philosophisch :>

Autor: Winfried J. (Firma: Nisch-Aufzüge) (winne)
Datum:

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

Autor: Wegstaben Verbuchsler (wegstabenverbuchsler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Winfried J.

gut zusammen gefasst. Dein Beitrag 25.04.2010 10:06 bringt es ganau auf 
den (philosophischen) Punkt.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.