for-Schleife bricht nicht ab AVR

Gast #3512374
Lesenswert?

Hallo liebe Programmierer,

ich sitze gerade vor meinem Steckbrett. Darauf befindet sich ein Atmega 
32, ein ULN2803 und ein Schrittmotor.

Die Anstuerung des Schrittmotors habe ich hinbekommen.

Im nächsten Schritt wollte ich versuchen, den Schrittmotor eine 
bestimmte Anzahl an Schritten fahren zu lassen. Aber ich scheitere 
kläglich.
Habe es mit einer for-Schleife probiert, aber es kommt nicht zum Abbruch 
des "steppens".

Ich habe aber leider keinen blassen Schimmer worand das liegen soll. 
Habe jetzt mehrere C-Tutorials angeschaut, in allen ist der Aufbau immer 
gleich

for(n=0;n=10;n++)
{
Bedingung
}

Nur bei mir klappt das nicht. Mein Stepper macht auch nach gewünschten 
10 Durchläuen einfach nicht halt.

Könnte eventuell mal einer von euch drüber schaunen?
Vielen Dank!

Anbei mein Code
1
#include <avr/io.h>
2
#include <avr/interrupt.h>
3
#include <util/delay.h>
4
#include <inttypes.h>
5

6

7
int main()
8
{
9

10
int n=0;
11

12
DDRB = 0b00001111;
13
                        
14
 
15
    while( 1 )
16
    {
17

18

19
    for(n= 0; n = 10; n++)
20

21
    {
22

23
    PORTB = 0x09;
24

25
    _delay_ms(500);
26

27
    PORTB = 0x0A;
28

29
    _delay_ms(500);
30

31
    PORTB = 0x06;
32

33
    _delay_ms(500);
34

35
    PORTB = 0x05;
36

37
    _delay_ms(500);
38

39
    }    
40
  
41
  }
42
}
Gast #3512408
Lesenswert?

1
#include <avr/io.h>
2
#include <avr/interrupt.h>
3
#include <util/delay.h>
4
#include <inttypes.h>
5

6
int main()
7
{
8
int n=0;
9
DDRB = 0b00001111;
10
                        
11

12
  for(n= 0; n < 10; n++)
13
  {
14
    PORTB = 0x09;
15
    _delay_ms(500);
16

17
    PORTB = 0x0A;
18
    _delay_ms(500);
19

20
    PORTB = 0x06;
21
    _delay_ms(500);
22

23
    PORTB = 0x05;
24
    _delay_ms(500);
25

26
  }    
27

28
  while (1); // Hier (für immer und ewig) stehen bleiben
29

30

31
}
Gast #3512429
Lesenswert?

Achim_42 schrieb:
> Die For Schleife wird schon beendet, dann ist aber eine While (1)
> drüber, und die for-Schleife beginnt wieder von vorne.

Danke, dass war der entscheidente Hinweis.

C-Buch hab ich, oder denkt ihr ich hab mir die ganze Syntax selbst 
ausgedacht und wunder mich noch warum nix geht...
#3512457
Lesenswert?

Paul schrieb:
> Achim_42 schrieb:
>> Die For Schleife wird schon beendet, dann ist aber eine While (1)
>> drüber, und die for-Schleife beginnt wieder von vorne.
>
> Danke, dass war der entscheidente Hinweis.
>
> C-Buch hab ich, oder denkt ihr ich hab mir die ganze Syntax selbst
> ausgedacht und wunder mich noch warum nix geht...

Wär nicht das erste mal.
Wer nicht weiß, wie die 3 Bestandteile in einem for funktionieren und 
dann auch noch = mit == verwechselt, hat üblicherweise keine Buch. Da 
würde ich jederzeit Geld drauf setzen, auch wenn ich diesmal verloren 
hätte.
Oder er hat eines, benutzt es aber nicht so wie vorgesehen. Oder er hat 
schlicht das falsche.
Gast #3512473
Lesenswert?

Man kann es auch nicht oft genug betonen, dass wenn C noch nicht so gut 
sitzt, C einfach auf dem PC lernen/üben sollte. Der PC ist keine 
Blackbox und einfacher zu bedienen. Praktischerweise gibt es da auch 
noch einen unschlagbaren Debugger.
Gast #3512478
Lesenswert?

Paul schrieb:
> C-Buch hab ich, oder denkt ihr ich hab mir die ganze Syntax selbst
> ausgedacht

Blindes Copy&Paste hilft manchmal nicht. Verstehen was da passiert ist 
das Wichtige. Dafür ist es ungemein lehrreich auch mal mit dem Simulator 
deiner Wahl Schritt für Schritt durchzusteppen und bei den 
Einzelschritten die Variablen-/Registerwerte zu verfolgen. Dann sieht 
man sofort, wenn etwas anders läuft, als man es sich gedacht hat und 
sieht vor allen Dingen auch, woran es liegt.
Gast #3512484
Lesenswert?

Um Gottes Wilhelm! Keinen Debugger!
Da würde man ja schon dem ersten Schleifendurchlauf sehen, dass die 
Variable den Wert 10 hat.

Übrigens:
>Blindes Copy&Paste hilft manchmal nicht.
Es gehört schon ein gerüttelt Maß an Glück dazu, eine solche 
for-Schleife zum Kopieren, zu finden:-)
#3512522
Lesenswert?

Paul schrieb:
> Achim_42 schrieb:
>> Die For Schleife wird schon beendet, dann ist aber eine While (1)
>> drüber, und die for-Schleife beginnt wieder von vorne.
>
> Danke, dass war der entscheidente Hinweis.
>
> C-Buch hab ich, oder denkt ihr ich hab mir die ganze Syntax selbst
> ausgedacht und wunder mich noch warum nix geht...

Ein C-Buch ist eben kein Groschen-Roman, den man einfach mal so 
durch-schwartet. Da muss man das Gelesene auch verstehen.

Ja ich weiß, dass ist viel verlangt in einer Zeit, wo alles gefällgst 
mit ein paar Klicks und ohne weiteres Zutun und Mühe zu funktionieren 
hat.

;-)
#3512825
Lesenswert?

Tut wüsste ich keines.
Aber es gibt sicher eine App. Zur Not gibts auch was bei Youtube.

Kommt Leute. Lasst es gut sein.
Wir haben es hier wieder mal mit dem Typus Programmierer zu tun, die die 
einführenden Tutorien mit LED ein/aus bzw. LED blinken überspringen, C 
brauchen sie nicht lernen sondern die steigen gleich 'richtig' mit ihrem 
Problemkreis ein. Und dann fallen sie eben auf die Nase.

Ist nicht das erste mal und wird auch nicht das letzte mal sein.
Gast #3512982
Lesenswert?

>Ist Euch Helden mal in den Sinn gekommen, daß sich Menschen nicht freiwillig mit 
solch einer ''*\}]{³² -Sprache auseinandersetzen?

Na und? Menschen sterben auch nicht freiwillig. Dennoch widmen sie sich 
dieser Tätigkeit mit all der Ernsthaftigkeit, die sie aufbringen können.
#3513004
Lesenswert?

Hallo,

wer weiß schon, wieviel Geld bereits in den Entwicklungsabteilungen 
verbrannt wurde, nur weil einer im Sourcecode statt == ein einfaches = 
verwendet hat.

Ich habe bestimmt schon mehrfach stundenlang deswegen vor den Debugger 
gehockt (und ich werde es auch wieder tun).

Gruß,
Michael
#3513007
Lesenswert?

Häma Tom schrieb:
> Ist Euch Helden mal in den Sinn gekommen, daß sich Menschen nicht
> freiwillig
> mit solch einer ''*\}]{³² -Sprache auseinandersetzen?

Umso schlimmer. Wenns nicht freiwillig ist, dann ist es also kein Hobby 
sondern dein Beruf. Also kriegst du Kohle dafür und solltest dir dein 
Geld auch verdienen!
Ich finde C deutlich einfacher zu erlernen als z.B. Französisch oder 
Latein.
#3513068
Lesenswert?

Häma Tom schrieb:

> Ist Euch Helden mal in den Sinn gekommen, daß sich Menschen nicht
> freiwillig
> mit solch einer ''*\}]{³² -Sprache auseinandersetzen?

Die Zeiten, in denen der Physik oder Mathelehrer per Direktor-Entscheid 
dazu verdonnert wurde, während der Sommerferien programmieren zu lernen 
um im nächsten Semester Informatik-Unterricht anbieten zu können, sind 
vorbei.
In der Zwischenzeit wurden genügend und auch gute Informatiker 
ausgebildet, so dass es jeder einen ausgebildeten und willigen 
Informatiker in der Nähe hat, der sein Handwerk versteht. Wenn man schon 
nicht selber Hand anlegen will.
Schliesslich zwingt einen ja auch keiner dazu, die Wasser-Installation 
im neuen Eigenheim selbst zu machen. Dazu gibt es genügend 
Installateure, die das gelernt haben, die ihr Handwerk verstehen und die 
das auch können. Nur: Wenn man es selber macht, dann muss man das eben 
lernen und sich mit der Materie auseinandersetzen.
Das gilt im übrigen für so ziemlich alle Lebensbereiche. Nur scheinbar 
wird es bei Computern akzeptiert, mit nicht viel mehr als einer vagen 
Ahnung und einer Ausbildung an der Youtube-Universität an Dinge 
ranzugehen, die (noch) ein paar Schuhnummern zu gross sind. Irgendwie 
scheint jeder in Mitteleuropa (und in den USA ist das wahrscheinlich 
auch nicht anders) Spezialist zu sein, wenn es um Computer geht. So 
schwer kann programmieren nicht sein, immerhin hat man es ja erfolgreich 
geschafft, seinen Netgear WLAN Router erfolgreich einzuschalten und die 
Kabel anzustecken. Und erst der Blueray-Player! So virtuos wie der 
bedient werden kann, wird es dann ja wohl auch kein Problem sein, da mal 
schnell ein neues Programm zu schreiben, immerhin konnte man ja den BIOS 
Update auch alleine bewerkstelligen.

Es ist eigenartig. Niemand der unfallfrei einen neuen Aufkleber auf die 
Heckscheibe seines Autos kleben kann, würde sich als angehender 
KFZ-Mechaniker ansehen. Und doch ist genau das bei Computern bzw. beim 
Programmieren der Fall. Nicht immer und nicht bei allen, die seltsame 
Fragen stellen, aber immerhin bei so vielen, dass es durchaus als 
Default angenommen werden kann. Auch wenn man manchmal dem TO Unrecht 
tut.
Gast #3513095
Lesenswert?

Karl-Heinz schrieb:
>So schwer kann programmieren nicht sein, immerhin hat man es ja
>erfolgreich geschafft, seinen Netgear WLAN Router erfolgreich
> einzuschalten....

...und schon wieder ist sie da, die unverhohlene Häme!
:-(

Gut, dann bringe ich es auch mal sarkastisch auf den Punkt:

Nein, Programmieren kann so schwer nicht sein, schließlich muß man nur
einen Algorithmus für das Problem finden und diesen dann in einer
Programmiersprache formulieren.

Aber halt -da fängt das Problem an: Wenn man eine Kauderwelsch-Sprache
wählt oder gar wählen mußte, bei der abhängig vom Compiler aus dem
gleichen Quelltext völlig unterschiedliche Programme generiert werden,
ja dann hat man schlechte Karten! Dann geht die Suche nach Fehlern los,
wo keine sind und umgekehrt...
Gast #3513127
Lesenswert?

Justus schrieb:
>Die angebliche Häme hat
>wenigstens etwas mit dem Thema zu tun, du willst nur flamen..

Das ist nicht richtig -ich konnte nur vor meinem Beitrag 10 Andere 
lesen,
die nur dazu dienten, den Fragesteller zum Affen zu machen. Da platzte 
mir
der Kragen.

Udo schrieb:
>Dann sag uns doch mal welche Sprache so viel besser ist.
Gerne: Purebasic oder Lazarus

>Wir lernen gerne dazu :-)
Das bezweifle ich.
#3513145
Lesenswert?

Häma Tom schrieb:
> Udo schrieb:
>>Dann sag uns doch mal welche Sprache so viel besser ist.
> Gerne: Purebasic oder Lazarus

Die ist also so viel besser?
Mal sehen:

Du könntest damit ein Betriebssystem wie Linux programmieren?
Die Sprache ist für den kleinsten µC bis zu dem dicksten Multicore 
verfügbar, meist sogar als kostenloser Compiler?
Du kannst damit hardwarenah programmieren, wenn du das willst/must?
Du kannst damit Projekte im Umfang von vielen 1000 Sourcecodedateien 
handeln?
....

Du siehst es gibt unterschiedliche Blickrichtungen was "gut" bedeutet.
Ich habe keine Probleme mich inb eine der beiden Sprachen einzuarbeiten 
(Basic oder Pascal) wenn es für ein Projekt nötig sein sollte, du 
bezeichnest C aber als

Häma Tom schrieb:
> Kauderwelsch-Sprache

Häma Tom schrieb:
> solch einer ''*\}]{³² -Sprache

Gleichzeitig unterstellst du mir, daß ich nicht lernwillig bin.

Häma Tom schrieb:
>>Wir lernen gerne dazu :-)
> Das bezweifle ich.

Sorry aber das ist so armselig.
Gast #3513152
Lesenswert?

Klaus schrieb:
>Dann zeig doch mal so ein Beispiel!

Na, aber gern! Ich habe mir mal den Spaß gemacht und "C Problem" in das
Suchfeld eingegeben. Damit fand ich nur ca. 69000 Threads. Ich hätte mit
mehr gerechnet.
:-(
Angehängte Dateien:
Gast #3513169
Lesenswert?

Häma Tom schrieb:
> Klaus schrieb:
>>Dann zeig doch mal so ein Beispiel!
>
> Na, aber gern! Ich habe mir mal den Spaß gemacht und "C Problem" in das
> Suchfeld eingegeben. Damit fand ich nur ca. 69000 Threads. Ich hätte mit
> mehr gerechnet.

Wenn ich den Code
1
C Problem
versuche zu kompilieren, bekomme ich gar kein Programm.

Ich hatte aber nach einem kompilierbaren Beispiel gefragt das
> abhängig vom Compiler aus dem
> gleichen Quelltext völlig unterschiedliche Programme generiert


MfG Klaus
#3513176
Lesenswert?

Das sagt jetzt aber nicht mehr oder weniger aus, als das es einfach viel 
mehr AVR-Programmierer gibt die C benutzen, als diejenigen die ihren AVR 
in Lazarus programmieren.

Wenn ich in Google "Probleme bei der Übersetzung nach Kisuaheli" 
eingebe, kriege ich auch wesentlich weniger Treffer, als wenn ich nach 
Problemen in der Übersetzung Deutsch-Englisch oder Deutsch-Spanisch 
suche.

Das es in C Probleme gibt, streitet doch keiner ab. Das räumen auch die 
Entwickler von C unumwunden ein, dass die Syntax an ein paar Stellen 
hätte besser gemacht werden können.
Das ändert aber nichts daran, dass man seine Sprache von der Pieke auf 
lernen muss.
Gast #3513186
Lesenswert?

Was soll eigentlich die Diskussion mit diesem "Häma Tom"?

Da verteidigt ein Low-Performer den anderen Low-Performer (was klar aus 
der Antwort auf die Frage nach einem Beispiel hervorgeht).

Das ist absehbar fruchtlos. Trolle füttern.
#3513193
Lesenswert?

Häma Tom schrieb:
> Na, aber gern! Ich habe mir mal den Spaß gemacht und "C Problem" in das
> Suchfeld eingegeben. Damit fand ich nur ca. 69000 Threads.

Ok, deine Logik ist übertragen so:
Der Pannendienst fährt 1000 mal so oft wegen einem VW Golf raus, als 
wegen eines ford t modells.
Also muss das ford t modell 1000 mal besser/zuverlässiger sein.

Ich sagte es schon: Armselig!
Gast #3513212
Lesenswert?

Karl Heinz schrieb:
> Es ist eigenartig.

Auch dein Vortrag ist irgendwie eigenartig, ist dies doch kein Forum 
voller Informatiker, sondern Elektroniker, auf die eigentlich das 
Gleiche zutrifft: Hier meint doch auch jeder, als Elektroniker koennte 
er genauso gut oder besser Software entwickeln, wie ein Informatiker. 
Aber die Elektroniker fuehlen sich von dir wahrscheinlich nicht 
angesprochen...
#3513224
Lesenswert?

Quack schrieb:
> Hier meint doch auch jeder, als Elektroniker koennte
> er genauso gut oder besser Software entwickeln, wie ein Informatiker.

Was hat das damit zu tun, ich kenne Mathematiker, Physiker ja sogar 
Lehrer, die 9 von 10 studierte Informatiker locker bzgl 
Softwareentwicklung in die Tasche stecken.
Es kommt wenig auf die Studienrichtung an, viel wichtiger ist sich in 
Neues einarbeiten zu können und zu wollen, sein Hirn zu benutzen und 
sein Werkzeug zu beherrschen.
#3513266
Lesenswert?

Udo Schmitt schrieb:
> Quack schrieb:
>> Hier meint doch auch jeder, als Elektroniker koennte
>> er genauso gut oder besser Software entwickeln, wie ein Informatiker.
>
> Was hat das damit zu tun, ich kenne Mathematiker, Physiker ja sogar
> Lehrer, die 9 von 10 studierte Informatiker locker bzgl
> Softwareentwicklung in die Tasche stecken.
> Es kommt wenig auf die Studienrichtung an, viel wichtiger ist sich in
> Neues einarbeiten zu können und zu wollen, sein Hirn zu benutzen und
> sein Werkzeug zu beherrschen.

und .... am Anfang nicht zu viel zu wollen.
Wer in Mathe Schwierigkeiten mit dem Umformen von einfachen Gleichungen 
hat, aber über Differentialgleichungen diskutieren will, dem lege ich 
auch erst mal nahe, doch bitte seine Defizite auszuräumen, weil das nun 
mal recht witzlos ist, wenn man in seinen Ausführungen ständig Fehler 
auf Trivialniveau korrigieren muss anstatt sich auf das an dieser Stelle 
wesentliche, die Lösungsidee die hinter einer Methode steckt, 
konzentrieren zu können. Das der eine oder andere Flüchtigkeitsfehler 
schon mal vorkommt - geschenkt. Aber wenn man jede einzelne Zeile 
untersuchen muss, ob noch alle Terme vorhanden sind, oder ob er schon 
wieder einen Vorzeichenfehler eingebaut hat, dann wird es mühsam. Sowohl 
für ihn als auch für mich.

Sicher, ich schiess schon mal übers Ziel hinaus. Trotzdem stehe ich 
dazu. Lernen beginnt am Anfang der Materie und nicht irgendwo 
mittendrinn. Und genau das ist es, was ich nicht müde werde zu 
bekritteln (inklusive fehlendem Lehrbuch)
Gast #3513278
Lesenswert?

Auch hier im Forum gibt's Menschen aller Coleur. Das spielt doch keine 
Rolle. Fakt ist, wenn ich ein Werkzeug verwenden will, muß ich damit 
umgehen könnnen. Das trifft auf einen Bagger genauso zu wie auf eine 
Programmiersprache. Wenn ich das Werkzeug nicht beherrsche, kann ich 
damit den größten Unsinn anstellen. Da muß man sich doch auch mal 
gefallen lassen, wenn man auf Fehler hingewiesen wird. Ich für meinen 
Teil bin dankbar dafür, weil ich daraus lernen kann und die gleichen 
Fehler (wahrscheinlich) nicht noch einmal mache. Das hat auch wenig 
damit zu tun, ob man das als Hobby macht oder beruflich. Das eine will 
man tun, das andere muß man. Für beide Varianten muß ich aber mein 
Werkzeug beherrschen, und das lernt man, indem man aus gemachten Fehlern 
eine Lehre zieht.
Gast #3513584
Lesenswert?

"aus einer Source immer wieder andere Programme generiert werden"
Zum Glück, den manchmal ruft man Unterprogramme via RCALL, manchmal via 
BALR. Gut daß der GCC das für mich macht, egal ob AVR oder Mainframe 
(ja, den Befehl gab's schon vor ARM). Das macht der sogar, obwohl ich 
Informatik studiert habe. Vieleicht weil ich ihm's nicht verraten hab.
Wie war das noch mal mit portabel. In C manchmal schwierig, sonst oft 
nicht existent.
BTW, Basic brauch ich natürlich auch. Als Office-Macro!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren