Forum: Mikrocontroller und Digitale Elektronik PIN einlesen, in variable laden, maskieren und anschließend abfragen-PROB


von Brocken Sei (Gast)


Lesenswert?

Also das ist das erste mal dass mir so etwas passiert, Titel sagt 
hoffentlich alles,

Nicht funktionierender Codeabschnitt:
1
DDRD |= (1<<PD4) | (1<<PD5); //PWM Kanäle als Ausgang
2
  PORTD |= (1<<PD0); //PIND.0 als Input und Pullup aktivieren
3
4
  //Read EEPROM:*****************************
5
  registerVariable = PIND;
6
  registerVariable &= 0b00000001;
7
  if(registerVariable & 0b00000001)
8
    sollwert = eeprom_read_word(&EEsollwert);
9
  else if(registerVariable & 0b00000000)
10
    sollwert = 0;
11
  //*****************************************
12
13
  //Messe die Linie aus und zeige Zustände am Display*+*+*+*+*+*
14
  if(sollwert == 0)
15
  {
16
    sollwert = messeSollwert();
17
    eeprom_write_word(&EEsollwert, sollwert);   //Schreibe Messung ins EEPROM, damit nicht immer wieder
18
                          //neu ausgemessen werden muss, neue Messung wird erzwunden
19
                          //durch PINC.1 = 1
20
  }
21
  /*
22
   * sollwert soll nur einmal ausgemessen werden damit der
23
   * Algorithmus genauer funktioniert
24
   */
25
  //+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*
26
27
  //Enable Interrupt:
28
  sei();
29
30
  //Main-Loop:*********************************************************************
31
  while(1)
32
  {

Ich habe einen Taster an Portd0 gegen ground gehängt, und den Pullup 
eingeschaltet. Wenn ich daran Pegel messe, dann stimmen die Werte, 
Taster = 0 --> V = 5V, Taster = 1 --> V = 0V.

Nun kann der Fehler nur mehr an der Software liegen, aber ich weiß 
einfach nicht wo. Es wird immer wieder beim Systemstart messeSollwert() 
aufgerufen, denn das sehe ich am Display obwohl ich den Taster auf 1 
hab, aber wieso?
Sollwert war nach der ersten Messung 8. So wurde es am Display angezeigt 
also muss es auch in der Variable sollwert gespeichert worden sein und 
demntsprechend auch in EEsollwert. Also kann die Variable gar nicht null 
sein.

messeSOllwert:
1
//Unterprogramme------------------------------------------------------
2
//MesseLinie***************************************************
3
uint16_t messeSollwert()
4
{
5
  uint16_t sollwert;
6
7
  lcd_setcursor(0, 1);
8
    lcd_string("Auf mitte stellen:");
9
    for(i = 5; i > 0; i --)
10
    {
11
      lcd_setcursor(19,1);
12
      //sprintf(buffer, "%d", i);
13
      itoa(i, buffer, 10);
14
      lcd_string(buffer);
15
      _delay_ms(1000);
16
    }
17
    lcd_clear();
18
19
    /*Sollwert messen:*/
20
        sollwert = GetADC_8bit(2);
21
22
    sprintf(buffer, "%d", sollwert);
23
    lcd_string("Erfolgreich gemessen");lcd_setcursor(0, 2);
24
    lcd_string("Gemessen:");lcd_string(buffer);
25
26
    _delay_ms(1500);
27
28
    lcd_clear();
29
    lcd_setcursor(0,1);
30
    lcd_string("Programm startet in:");
31
32
    for(i = 5; i > 0; i --)
33
    {
34
      lcd_setcursor(0,2);
35
      //sprintf(buffer, "%d", i);
36
      itoa(i, buffer, 10);
37
      lcd_string(buffer);
38
      _delay_ms(1000);
39
    }
40
    lcd_clear();
41
    lcd_home();
42
    return sollwert;
43
}


Gesamtes Coding:
1
#include <stdio.h>
2
#include <stdlib.h>
3
#include <stdint.h>
4
#include <avr/io.h>
5
#include <string.h>
6
#include <util/delay.h>
7
#include <string.h>
8
#include <avr/pgmspace.h>
9
#include <avr/interrupt.h>
10
#include <avr/eeprom.h>
11
#include <inttypes.h>
12
#include <math.h>
13
#include <avr/eeprom.h>
14
15
//Definitionen--------------------------------------------------------
16
#define ON 512   //Motor ein für PWM
17
#define OFF 0  //Motor aus für PWM
18
#define UART_BAUD_RATE 9600  //UART Baudrate
19
#define BufferMAX 100  //Buffer für Stringumwandlungen und Typumwandlungen
20
#define Ta 1 //Parameter für PID Algorithmus
21
#define ADC_Korr(ReferenceVoltage,BitMode) ((ReferenceVoltage)/(pow(2,BitMode)))
22
#define MotorLINKS OCR1B
23
#define MotorRECHTS OCR1A
24
25
//Deklarierte Funktionen----------------------------------------------
26
uint8_t GetADC_8bit(uint8_t Chanel);
27
uint16_t messeSollwert();
28
29
//Globale Variablen---------------------------------------------------
30
char buffer[BufferMAX] = { 0 }; //String Buffer
31
unsigned int i; //Zählervariable
32
uint8_t registerVariable = 0;   //Wird verwendet um Daten aus Ports
33
                //auszulesen und auszuwerten
34
35
//Deklarierte Variablen im EEPROM-------------------------------------
36
uint16_t EEsollwert EEMEM = 0;
37
38
//Sub-Routines--------------------------------------------------------
39
#include "UART_Init.h"
40
#include "lcd-routines.h"
41
#include "Unterprogramme.h"
42
//--------------------------------------------------------------------
43
44
static volatile signed long y = 0, esum = 0, ealt = 0, differenz = 0;
45
static volatile uint8_t Kp = 1;  //Reglerparameter Proportional
46
static volatile uint8_t Ki = 0;  //Reglerparameter Integral
47
static volatile uint8_t Kd = 0;//Reglerparameter Differncial
48
49
//Main-Program--------------------------------------------------------
50
int main()
51
{
52
  //Deklarierte Variablen im RAM:
53
  signed long int sensorL0, sensorL1, sensorM, sensorR0, sensorR1, summe;
54
  uint16_t sollwert = 0;
55
  uint16_t PWMright = 0, PWMleft = 0;
56
57
  //LCD init:
58
  lcd_init();
59
  lcd_home();
60
61
  //UART_init:
62
  uart_init(UART_BAUD_SELECT(UART_BAUD_RATE, F_CPU));
63
64
  //ADC-Init:
65
  ADMUX |= (1<<REFS0); //Refernz Intern-AVCC mit Kondensator gegen GND
66
  ADMUX |= (1<<ADLAR); //8Bit Modus ein
67
  ADCSRA |= (1<<ADEN) | (1<<ADPS2); //ADC Enable, Prescaler = 16
68
69
  //Timer/Counter0 Konfiguration:
70
  TCCR0 &=~ ((1<<WGM00) | (1<<WGM01)); //Normal-Modus
71
  TCCR0 |= (1<<CS01); //Prescaler = 8
72
  TIMSK |= (1<<TOIE0); //Interrupt enable --> Overflow
73
74
  //Timer/Counter1 Konfiguration:
75
  TCCR1A |= (1<<WGM10) | (1<<WGM11); //PWM Mode = 10bit Correct Phase PWM
76
  TCCR1B |= (1<<CS10); // Prescaler = 1024, da Motortreiber!
77
  TCCR1A |= (1<<COM1A1) | (1<<COM1B1) ; //Nicht invertierend
78
79
  //Ein-/Ausgabe:
80
  DDRB = 0b00001111;  //Motoren
81
  PORTB = 0b00001010; //Rotation of Motors in same direct
82
  DDRD |= (1<<PD4) | (1<<PD5); //PWM Kanäle als Ausgang
83
  PORTD |= (1<<PD0); //PIND.0 als Input und Pullup aktivieren
84
85
  //Read EEPROM:*****************************
86
  registerVariable = PIND;
87
  registerVariable &= 0b00000001;
88
  if(registerVariable & 0b00000001)
89
    sollwert = eeprom_read_word(&EEsollwert);
90
  else if(registerVariable & 0b00000000)
91
    sollwert = 0;
92
  //*****************************************
93
94
  //Messe die Linie aus und zeige Zustände am Display*+*+*+*+*+*
95
  if(sollwert == 0)
96
  {
97
    sollwert = messeSollwert();
98
    eeprom_write_word(&EEsollwert, sollwert);   //Schreibe Messung ins EEPROM, damit nicht immer wieder
99
                          //neu ausgemessen werden muss, neue Messung wird erzwunden
100
                          //durch PINC.1 = 1
101
  }
102
  /*
103
   * sollwert soll nur einmal ausgemessen werden damit der
104
   * Algorithmus genauer funktioniert
105
   */
106
  //+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*
107
108
  //Enable Interrupt:
109
  sei();
110
111
  //Main-Loop:*********************************************************************
112
  while(1)
113
  {
114
    //lcd_clear();
115
    summe = 0;
116
117
    sensorL0 = (long)GetADC_8bit(0) * 1; //Sensor ganz Links
118
    sensorL1 = (long)GetADC_8bit(1); //Sensor Links
119
    sensorM  = (long)GetADC_8bit(2); //Sensor Mitte
120
    sensorR0 = (long)GetADC_8bit(3); //Sensor Rechts
121
    sensorR1 = (long)GetADC_8bit(4) * 5; // Sensor ganz Rechts
122
123
    summe = (sensorL1 - sensorR0) + sollwert;  //sensorL1 - sensorR0 ergibt einen Bereich von -235 ... +235 und
124
                          //addiert mit 235 einen bereich von 0 ... 570 (für PID Algo)
125
                          //und Sollwert ist dann genau in der Mitte, da sensorM = sollwert
126
127
    if((summe > (sollwert - 5)) && (summe < (sollwert + 5)))  //Wenn Sollwert, dann Motoren beide voll
128
    {
129
      //lcd_setcursor(0, 1);
130
      //lcd_string("MotorRechts: 512");//MotorLINKS = ON;
131
      PWMleft = ON;
132
133
      //lcd_setcursor(0, 2);
134
      //lcd_string("MotorLinks: 512");//MotorRECHTS = ON;
135
      PWMright = ON;
136
    }
137
    else if(summe < (sollwert - 5)) //ansonsten mehr links
138
    {
139
      differenz = (summe - sollwert) * (-1); //errechne Abweichung
140
      PWMright += y;   //PWM-Wert für Motor rechts
141
      PWMleft = OFF;  //MotorRechts = 0
142
143
      /*
144
      lcd_setcursor(0, 1);
145
      lcd_string("MotorRechts: 0"); //MotorLINKS = OFF;  //(MotorLINKS -= y;)
146
147
      lcd_setcursor(0, 2);
148
      sprintf(buffer, "%li", (y + PWMright));
149
      lcd_string("MotorLinks: ");
150
      lcd_string(buffer);//MotorRECHTS += y;  //ON von vorher + Abweichung, die vom PID modifiziert wird
151
      */
152
    }
153
    else if (summe > (sollwert + 5)) //oder mehr rechts
154
    {
155
      differenz = summe - sollwert; //errechne Abweichung
156
      PWMleft += y;   //PWM-Wert für Motor links
157
      PWMright = OFF;  //MotorRechts = 0
158
159
      /*
160
      lcd_setcursor(0, 1);
161
      sprintf(buffer, "%li", (y + PWMleft));
162
      lcd_string("MotorRechts: ");
163
      lcd_string(buffer);//MotorLINKS += y;  //ON + Abweichung, die vom PID modifiziert wird
164
165
      lcd_setcursor(0, 2);
166
      lcd_string("MotorLinks: 0");//MotorRECHTS = OFF;  //(MotorRECHTS -= y;)
167
      */
168
    }
169
    else if((sensorM < 50) && (sensorL1 < 50) && (sensorR0 < 50)) //ansonsten wenn keiner auf der Linie, dann stopp!!
170
    {
171
      //lcd_setcursor(0, 1);
172
      //lcd_string("MotorRechts: 512");//MotorLINKS = OFF;
173
      PWMleft = OFF;
174
175
      //lcd_setcursor(0, 2);
176
      //lcd_string("MotorLinks: 512");//MotorRECHTS = OFF;
177
      PWMright = OFF;
178
    }
179
180
    //MotorLINKS = PWMleft;  //Werte den Motoren übergeben
181
    //MotorRECHTS = PWMright;  //Werte übernehmen
182
183
    //_delay_ms(100);
184
185
  }
186
  //back***************************************************************************
187
  return 0;
188
}
189
190
ISR(TIMER0_OVF_vect)
191
{
192
  esum = esum + differenz;                      //Integration I-Anteil
193
  y = Kp*differenz + Ki*Ta*esum + (Kd*((differenz-ealt)/Ta));        //PID-Regelalgorithmus
194
  ealt = differenz;                          //Differzenteil
195
}

sry für den langen code.

Gruß Bro

von Grrrr (Gast)


Lesenswert?

Brocken Sei schrieb:
> sry für den langen code.

Den kann man als Anhang speichern. Nächstes Mal. ;-)

Prüfe mal ob Dein Taster ein Schliesser oder ein Öffner ist. Das die 
Taste "1" ist, ist keine sinnvolle Aussage in dem Zusammenhang.


Der folgende Codeabschnitt
1
  //Read EEPROM:*****************************
2
  registerVariable = PIND;
3
  registerVariable &= 0b00000001;
4
  if(registerVariable & 0b00000001)
5
    sollwert = eeprom_read_word(&EEsollwert);
6
  else if(registerVariable & 0b00000000)
7
    sollwert = 0;
ist zum einen unnötig kompliziert und dann noch an einer Stelle falsch 
er kann so geschrieben werden:
1
  //Read EEPROM:*****************************
2
  registerVariable = PIND;
3
  if(registerVariable & 0b00000001)
4
    sollwert = eeprom_read_word(&EEsollwert);
5
  else
6
    sollwert = 0;
und hat ausserdem zur Voraussetzung, dass (neben der Frage mit dem 
Taster) an der EPPROM-Adresse ein Wert ungleich Null steht.
Der Ausdruck registerVariable & 0b00000000 ist grundsätzlich immer Null 
und daher die Bedingung falsch. Der Wert gleich Null wird vermutlich aus 
dem EEPROM stammen.
Prüf das mal nach.

von Peter D. (peda)


Lesenswert?

Brocken Sei schrieb:
> sry für den langen code.

Vielleicht erstmal die Posting-Regeln lesen:

"Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang"


Peter

von Grrrr (Gast)


Lesenswert?

Man sollte an dieser Stelle auch noch mal Werbung für Peter Dannegers 
Entprellroutine machen, wenn Du einen Taster verwendest.

von Karl H. (kbuchegg)


Lesenswert?

Brocken Sei schrieb:


gewöhn dir für deine Taster diese Abfrage an
1
      if( !(PIND & (1<<PD0) ))
2
      {
3
        mach was wenn gedrückt
4
      }
5
      else
6
      {
7
        mach was wenn nicht gedrückt
8
      }

bzw
1
      if( (PIND & (1<<PD0) ))
2
      {
3
        mach was wenn nicht gedrückt
4
      }
5
      else
6
      {
7
        mach was wenn gedrückt
8
      }

also
  * Schreibweise mit den Bitnamen
  * Abfrage auf gedrückt mit !  (weil deine Tasten low aktiv sind)
    Abfrage auf nicht gedrückt ohne !  (weil Tasten low aktiv sind)
  * Wenn du für einen if den Gegenteilzweig haben willst
    dann nimm else. Dafür ist es gemacht.
    Schreibst du selbst die gegenteilige Bedingung hin, dann kannst
    du dich maximal verschreiben. So wie in deinem Fall.

von Brocken Sei (Gast)


Angehängte Dateien:

Lesenswert?

Grrrr schrieb:
> Prüfe mal ob Dein Taster ein Schliesser oder ein Öffner ist. Das die
> Taste "1" ist, ist keine sinnvolle Aussage in dem Zusammenhang.

Schließer

Grrrr schrieb:
> er kann so geschrieben werden:
>   //Read EEPROM:*****************************
>   registerVariable = PIND;
>   if(registerVariable & 0b00000001)
>     sollwert = eeprom_read_word(&EEsollwert);
>   else
>     sollwert = 0;

Nein, das kann ich deswegen nicht weil sich am PORTD auch Ausgänge 
befinden, also muss ich ausmaskieren.

Grrrr schrieb:
> an der EPPROM-Adresse ein Wert ungleich Null steht.

Das muss es sogar in meinem Fall, was gleich Null gibt es nicht

Grrrr schrieb:
> Der Wert gleich Null wird vermutlich aus
> dem EEPROM stammen.

Nein das tut er nicht. Das Display zeigt in messeSollwert() definitiv an 
dass der Wert größer Null ist. Und anzeigen tut er es nur nachdem er es 
gemessen hat. Dh es ist nicht null.

Hab jetzt die Änderungen vorgenommen, jedoch immer noch gleicher Effekt. 
Entprellung sollte eig nicht notwendig sein, da ich beivor ich 
einschalte auf die Taste gedrückt halte.

Gruß Bro

von Brocken Sei (Gast)


Lesenswert?

Brocken Sei schrieb:
> Grrrr schrieb:
>> er kann so geschrieben werden:
>>   //Read EEPROM:*****************************
>>   registerVariable = PIND;
>>   if(registerVariable & 0b00000001)
>>     sollwert = eeprom_read_word(&EEsollwert);
>>   else
>>     sollwert = 0;
>
> Nein, das kann ich deswegen nicht weil sich am PORTD auch Ausgänge
> befinden, also muss ich ausmaskieren.

Nein du hast doch recht, stimmt schon, sry^^

Gruß Bro

von Grrrr (Gast)


Lesenswert?

OK, also ein Schliesser.

Brocken Sei schrieb:
>> Nein, das kann ich deswegen nicht weil sich am PORTD auch Ausgänge
>> befinden, also muss ich ausmaskieren.
>
> Nein du hast doch recht, stimmt schon, sry^^

Na also!

Brocken Sei schrieb:
> Nein das tut er nicht. Das Display zeigt in messeSollwert() definitiv an
> dass der Wert größer Null ist. Und anzeigen tut er es nur nachdem er es
> gemessen hat. Dh es ist nicht null.

Das ist nicht der Punkt. Die Entscheidung, ob messeSollwert überhaupt 
aufgerufen wird, hängt ja davon ab, welchen Wert Du aus dem EEPROM 
liest, falls der Taster gedrückt ist, denn dieser Wert wird in sollwert 
gespeichert und danach zu Entscheidung herangezogen. Wenn Du den Taster 
beim Einschalten gedrückt hast und wieder erwarten die Funktion 
aufgerufen wird, dann folgt daraus, dass aus dem EEPROM Null gelesen 
wird.

Brocken Sei schrieb:
> Grrrr schrieb:
>> an der EPPROM-Adresse ein Wert ungleich Null steht.
>
> Das muss es sogar in meinem Fall, was gleich Null gibt es nicht
Natürlich existiert ein Wert gleich Null, nämlich genau die Null!
Was Du meinst, ist, das Du nicht "erwartest" das da eine Null steht. Man 
kann sich aber irren. Deswegen sollst Du es nachprüfen.

von Grrrr (Gast)


Lesenswert?

Grrrr schrieb:
> Brocken Sei schrieb:
>> Nein das tut er nicht. Das Display zeigt in messeSollwert() definitiv an
>> dass der Wert größer Null ist. Und anzeigen tut er es nur nachdem er es
>> gemessen hat. Dh es ist nicht null.
>
> Das ist nicht der Punkt. Die Entscheidung, ob messeSollwert überhaupt
> ...

Oh Sch... Das ist falsch. Vergiss es.

von Grrrr (Gast)


Lesenswert?

Es ist vielmehr so: Wenn Du beim Einschalten den Taster gedrückt hast, 
es ist ein Schliesser und er schliesst nach Gnd, so wird sollwert = 0 
gesetzt. Deswegen wird die Funktion messeSollwert() aufgerufen.

Das aber ist das, was Du, wenn ich den ersten Beitrag richtig verstehe:
Brocken Sei schrieb:
> Es wird immer wieder beim Systemstart messeSollwert()
> aufgerufen, denn das sehe ich am Display obwohl ich den Taster auf 1
> hab, aber wieso?

nicht das was Du erwartest. Richtig?

von Brocken Sei (Gast)


Lesenswert?

Grrrr schrieb:
> Es ist vielmehr so: Wenn Du beim Einschalten den Taster gedrückt hast,
> es ist ein Schliesser und er schliesst nach Gnd, so wird sollwert = 0
> gesetzt. Deswegen wird die Funktion messeSollwert() aufgerufen.

Richtig, das ist auch der Sinn und Zweck.

Grrrr schrieb:
> nicht das was Du erwartest. Richtig?

Richtig, denn obwohl ich den Taster nicht drücke misst er, auch beim 
zweiten mal. Ich lasse ihn beim ersten mal durchmessen, er zeigt an dass 
er die Variable gemessen hat, diese ist größer als 0. Tja, keine Ahnung 
was da passiert.

Die einzige Fehlerquelle die noch sein kann ist der EEPROM. Irgendwas 
läuft beim Spichern schief.

puuuff!

Gruß Bro

Brocken Sei schrieb:
> Es wird immer wieder beim Systemstart messeSollwert()
> aufgerufen, denn das sehe ich am Display obwohl ich den Taster auf 1
> hab, aber wieso?

Das war ein Fehler von mir, das soll natüelich so sein, ich entschuldige 
mich! Denn er misst wenn der Taster auch 0 ist. Und das ist der Punkt.

von Grrrr (Gast)


Lesenswert?

Brocken Sei schrieb:
> Grrrr schrieb:
>> Es ist vielmehr so: Wenn Du beim Einschalten den Taster gedrückt hast,
>> es ist ein Schliesser und er schliesst nach Gnd, so wird sollwert = 0
>> gesetzt. Deswegen wird die Funktion messeSollwert() aufgerufen.
>
> Richtig, das ist auch der Sinn und Zweck.
>
> Grrrr schrieb:
>> nicht das was Du erwartest. Richtig?
>
> Richtig, denn obwohl ich den Taster nicht drücke misst er, auch beim
> zweiten mal. Ich lasse ihn beim ersten mal durchmessen, er zeigt an dass
> er die Variable gemessen hat, diese ist größer als 0. Tja, keine Ahnung
> was da passiert.

Beides gleichzeitig kann ja nicht zutreffen. Entweder drückst Du den 
Taster beim Einschalten oder nicht. Entweder erwartest Du das die 
Messung erfolgt oder nicht.

Versuche nochmal genau und im Detail zu beschreiben was Du tust und was 
Du beobachtest.

Und gewöhne Dir ab zu schreiben das ein Taster 0 ist oder 1. Er ist 
entweder geschlossen oder offen. Allenfalls ist ein Schliesser bzw. 
Öffner gedrückt oder losgelassen. Alles andere ist missverständlich.

von Brocken Sei (Gast)


Lesenswert?

Grrrr schrieb:
> Beides gleichzeitig kann ja nicht zutreffen. Entweder drückst Du den
> Taster beim Einschalten oder nicht. Entweder erwartest Du das die
> Messung erfolgt oder nicht.

GENAU!! Aber er misst bei beiden Fällen. Die Hardware passt und die 
Software ja auch.

Grrrr schrieb:
> Versuche nochmal genau und im Detail zu beschreiben was Du tust und was
> Du beobachtest.

Was meine Absicht war und noch ist:
Das erste mal wenn ich den Controller einsetze nachdem ich ihn 
programmiert habe muss sollwert 0 sein. Dh es muss eine Messung 
durchgeführt werden.
Diese zeigt er an auf dem Display.
Wenn ich jetzt ausschalte soll normal keine Messung durchgeführt werden, 
da ja die Linie sich für meinen Linefollower nicht ändert.
Wenn jez jedoch eine andere Linie zum einsatz kommt, dann ändert sich 
der Sollwert und es soll eine neue Messung durchgeführt werden indem ich 
beim Systemstart die Taste gedrückt halte.

Problem dabei: Es wird jedesal gemessen, und laut euch und auch mir 
liegt der Fehler nicht bei der SOftware. Und an der Hardware passen die 
Pegel und der Pin.

Gruß Bro

von Grrrr (Gast)


Lesenswert?

Ich meine schon zu verstehen, das Du den Sollwert nur messen willst, 
wenn Du beim Einschalten den Taster drückst. OK. Da der Taster ein 
Schliesser ist, wird er beim drücken eine 0 am Portpin liefern, weil er 
wie Du schreibst zwischen Gnd und dem Port hängt.

Dann aber ist Deine Bedingung immer noch falsch formuliert.
1
  if((PIND) & (1<<PD0))
2
    sollwert = eeprom_read_word(&EEsollwert);
3
  else
4
    sollwert = 0;

denn aus dem EEPROM wird genau dann gelesen wenn am Portpin eine 1 (ein 
High) liegt, also wenn der Schliesser nicht betätigt ist. Das musst Du 
umdrehen, wie oben von Karl Heinz beschrieben.

von Brocken Sei (Gast)


Lesenswert?

Grrrr schrieb:
> denn aus dem EEPROM wird genau dann gelesen wenn am Portpin eine 1 (ein
> High) liegt, also wenn der Schliesser nicht betätigt ist.

JA das soll auch so sein, denn nur dann kriege ich einen Wert von 
sollwert >0 und es wird nicht gemessen.

Gruß Bro

von Grrrr (Gast)


Lesenswert?

Brocken Sei schrieb:
> Grrrr schrieb:
>> Versuche nochmal genau und im Detail zu beschreiben was Du tust und was
>> Du beobachtest.
>
> Was meine Absicht war und noch ist:

Lies einfach mal genauer was hier geschrieben wird. Ich frage nach dem 
was Du tust und beobachtest und Du antwortest mit dem was das Programm 
tun soll.

Ganz am Ende kommt dann
Brocken Sei schrieb:
> Es wird jedesal gemessen, und laut euch und auch mir
> liegt der Fehler nicht bei der SOftware.
und das wieder ohne Details und genauen Ablauf.

Ausserdem hat niemand geschrieben das es nicht an der Hardware oder 
Software liegt.

Wenn unabhängig davon, ob der Schliesser betätigt ist oder nicht, die 
Messung durchgeführt wird, dann steht im EEPROM eine Null.

Brocken Sei schrieb:
> JA das soll auch so sein, denn nur dann kriege ich einen Wert von
> sollwert >0 und es wird nicht gemessen.

Seufz. Jetzt schreibst Du es wieder andersherum. Das hängt eben nicht 
nur von der Tasterstellung ab sondern auch von dem was aus dem EEPROM 
gelesen wird.
Prüf nach was im EEPROM steht und negiere die Bedingung.

Also, da waren wir schon mal und ich habe auch keine Lust mehr.

von Grrrr (Gast)


Lesenswert?

Ich verstehe sowieso nicht, warum Du nicht einfach direkt programmierst 
was passieren soll. Warum dieser Umweg über sollwert um die 
Tasterstellung weiterzugeben, wenn die Konsequenz ohnehin klar ist?

Schreibs doch direkt:
1
  if((PIND) & (1<<PD0))
2
    sollwert = eeprom_read_word(&EEsollwert);
3
  else {
4
    sollwert = messeSollwert();
5
    eeprom_write_word(&EEsollwert, sollwert);
6
  }

von Karl H. (kbuchegg)


Lesenswert?

Grrrr schrieb:
> Ich verstehe sowieso nicht, warum Du nicht einfach direkt programmierst
> was passieren soll. Warum dieser Umweg über sollwert um die
> Tasterstellung weiterzugeben, wenn die Konsequenz ohnehin klar ist?
>
> Schreibs doch direkt:
>
>
1
>   if((PIND) & (1<<PD0))
2
>     sollwert = eeprom_read_word(&EEsollwert);
3
>   else {
4
>     sollwert = messeSollwert();
5
>     eeprom_write_word(&EEsollwert, sollwert);
6
>   }
7
>


oder, wenn die Absicht ist, beim ersten Einschalten die Kalibrierung auf 
jeden Fall auch auszulösen (Achtung: In dem Fall kommt aus dem EEPROM 
eine 0xFF und keine 0. In einem gelöschten EEPROM stehen 0xFF drinnen)
1
  sollwert = eeprom_read_word(&EEsollwert);
2
3
  if( !(PIND & (1<<PD0)) ||            // wenn Taste gedrückt
4
      sollwert = 0xFFFF )              // oder nach dem ersten Einschalten
5
                                       // noch nicht kalibriert
6
  {
7
    sollwert = messeSollwert();
8
    eeprom_write_word(&EEsollwert, sollwert);
9
  }

Man kann sich auch mit kompliziert formuliertem Code und 25 
Hilfsvariablen (deren Name mit der beabsichtigten Funktionalität nichts 
zu tun hat) so lange selbst austricksen, bis ihn keiner mehr versteht.

von Brocken Sei (Gast)


Lesenswert?

Grrrr schrieb:
> und das wieder ohne Details und genauen Ablauf.

Was für Details willst denn noch?

??
Brocken Sei schrieb:
> Was meine Absicht war und noch ist:
> Das erste mal wenn ich den Controller einsetze nachdem ich ihn
> programmiert habe muss sollwert 0 sein. Dh es muss eine Messung
> durchgeführt werden.
> Diese zeigt er an auf dem Display.
> Wenn ich jetzt ausschalte soll normal keine Messung durchgeführt werden,
> da ja die Linie sich für meinen Linefollower nicht ändert.
> Wenn jez jedoch eine andere Linie zum einsatz kommt, dann ändert sich
> der Sollwert und es soll eine neue Messung durchgeführt werden indem ich
> beim Systemstart die Taste gedrückt halte.
>
> Problem dabei: Es wird jedesal gemessen, und laut euch und auch mir
> liegt der Fehler nicht bei der SOftware. Und an der Hardware passen die
> Pegel und der Pin.

??

Grrrr schrieb:
> Ausserdem hat niemand geschrieben das es nicht an der Hardware oder
> Software liegt.

Für mich kam es so rüber da es am Anfang keine Lösungsvorschläge gab nur 
Verbesserungsvorschläge, daher die Annahme.

Grrrr schrieb:
> Wenn unabhängig davon, ob der Schliesser betätigt ist oder nicht, die
> Messung durchgeführt wird, dann steht im EEPROM eine Null.

ich habe jetzt was in sollwert steht ausgegeben:
1
//Read EEPROM:*****************************
2
  if(!(PIND & (1<<PD0)))
3
    sollwert = 0;
4
  else
5
    sollwert = eeprom_read_word(&EEsollwert);
6
7
  lcd_setcursor(0, 1);
8
  sprintf(buffer, "%d", sollwert);
9
  lcd_string(buffer);
10
  _delay_ms(3000);
11
  //*****************************************
12
13
  //Messe die Linie aus und zeige Zustände am Display*+*+*+*+*+*
14
  if(sollwert == 0)
15
  {
16
    sollwert = messeSollwert();
17
    eeprom_write_word(&EEsollwert, sollwert);   //Schreibe Messung ins EEPROM, damit nicht immer wieder
18
                          //neu ausgemessen werden muss, neue Messung wird erzwunden
19
                          //durch PINC.1 = 1
20
  }

Am Display ist bei und bei keiner Tastenbetätigung nur eine -1 oder 2142 
oder eine 0 angezeigt.
Was das soll weiß ich auch nicht, arbeite aber drann.

Grrrr schrieb:
> Seufz. Jetzt schreibst Du es wieder andersherum.

nein habe ich nicht, ließ dir nochmal das durch:

Grrrr schrieb:
> denn aus dem EEPROM wird genau dann gelesen wenn am Portpin eine 1 (ein
> High) liegt, also wenn der Schliesser nicht betätigt ist. Das musst Du
> umdrehen, wie oben von Karl Heinz beschrieben.

Brocken Sei schrieb:
> JA das soll auch so sein, denn nur dann kriege ich einen Wert von
> sollwert >0 und es wird nicht gemessen.

Grrrr schrieb:
> Ich verstehe sowieso nicht, warum Du nicht einfach direkt programmierst
> was passieren soll. Warum dieser Umweg über sollwert um die
> Tasterstellung weiterzugeben, wenn die Konsequenz ohnehin klar ist?

Ich wollte mal auf meine neue Hardware vorbereiten in die ein paar 
Taster eingelötet werden, und spätestens dann muss ich sowas in der Art 
machen. Die If Abfrage brauche ich nur weill die Motoren zwischendurch 
viel Strom ziehen und der Controller sich resetet und das nicht 
auffallen darf.

Gruß Bro

von Brocken Sei (Gast)


Lesenswert?

Grrrr schrieb:
> if((PIND) & (1<<PD0))
>     sollwert = eeprom_read_word(&EEsollwert);
>   else {
>     sollwert = messeSollwert();
>     eeprom_write_word(&EEsollwert, sollwert);
>   }

Sry wieder nicht ganz durchgelesen, ja das wär ne idee.

Gruß Bro

von Grrrr (Gast)


Lesenswert?

Ich geb's auf.

von Brocken Sei (Gast)


Lesenswert?

Grrrr schrieb:
> Ich geb's auf.

Ist ok, ich bins sowieso gewohnt immer alleine die Fehler zu finden.
Aber danke dir für die Hilfe.

Gruß Bro

von Karl H. (kbuchegg)


Lesenswert?

Brocken Sei schrieb:
> Grrrr schrieb:
>> Ich geb's auf.
>
> Ist ok, ich bins sowieso gewohnt immer alleine die Fehler zu finden.

Du hast sie ja schliesslich auch eingebaut :-)

(Soll jetzt keine Anmache sein)

von Brocken Sei (Gast)


Lesenswert?

Karl heinz Buchegger schrieb:
> Du hast sie ja schliesslich auch eingebaut :-)

Nun ja, es gibt keine Fehlerfreie Software, so ist halt in der 
Programmierung.

Karl heinz Buchegger schrieb:
> (Soll jetzt keine Anmache sein)

Achso, du weißt also was schief läuft`?

Gruß Bro

von Brocken Sei (Gast)


Lesenswert?

HAAH, hab den Fehler:
1
//Deklarierte Variablen im EEPROM-------------------------------------
2
uint16_t EEsollwert EEMEM = 0;

Hoffe es ist selbsterklärend.

Gruß Bro

von Brocken Sei (Gast)


Lesenswert?

War scheinbar doch kein Fehler, es hat zwar grad 4 mal hintereinader 
funktioniert aber das wars auch schon.
Egal.
Morgen ist ein neuer Tag und da kann ich sicher klarer denken.

Gute Nacht
Bro

von Grrrr (Gast)


Lesenswert?

Aha. Aber Du hast alles genau gelesen, was?

Grrrr schrieb:
> Der Wert gleich Null wird vermutlich aus
> dem EEPROM stammen.

Brocken Sei schrieb:
> Grrrr schrieb:
>> Der Wert gleich Null wird vermutlich aus
>> dem EEPROM stammen.

Grrrr schrieb:
> Brocken Sei schrieb:
>> Grrrr schrieb:
>>> an der EPPROM-Adresse ein Wert ungleich Null steht.
>>
>> Das muss es sogar in meinem Fall, was gleich Null gibt es nicht
> Natürlich existiert ein Wert gleich Null, nämlich genau die Null!
> Was Du meinst, ist, das Du nicht "erwartest" das da eine Null steht. Man
> kann sich aber irren. Deswegen sollst Du es nachprüfen.

Grrrr schrieb:
> Prüf nach was im EEPROM steht und negiere die Bedingung.

_Viermal_habe ich Dich aufgefordert das zu prüfen.

Du kannst wohl davon ausgehen, dass ich Dir nicht nochmal helfe.

von Brocken Sei (Gast)


Lesenswert?

Grrrr schrieb:
> Aha. Aber Du hast alles genau gelesen, was?
>
> Grrrr schrieb:
>> Der Wert gleich Null wird vermutlich aus
>> dem EEPROM stammen.
>
> Brocken Sei schrieb:
>> Grrrr schrieb:
>>> Der Wert gleich Null wird vermutlich aus
>>> dem EEPROM stammen.
>
> Grrrr schrieb:
>> Brocken Sei schrieb:
>>> Grrrr schrieb:
>>>> an der EPPROM-Adresse ein Wert ungleich Null steht.
>>>
>>> Das muss es sogar in meinem Fall, was gleich Null gibt es nicht
>> Natürlich existiert ein Wert gleich Null, nämlich genau die Null!
>> Was Du meinst, ist, das Du nicht "erwartest" das da eine Null steht. Man
>> kann sich aber irren. Deswegen sollst Du es nachprüfen.
>
> Grrrr schrieb:
>> Prüf nach was im EEPROM steht und negiere die Bedingung.
>
> _Viermal_habe ich Dich aufgefordert das zu prüfen.

Ok vielleicht gehe ich jetz nich nicht schlafen,

wieso ließt du nicht genauer:

Brocken Sei schrieb:
> ich habe jetzt was in sollwert steht ausgegeben://Read 
EEPROM:*****************************
>   if(!(PIND & (1<<PD0)))
>     sollwert = 0;
>   else
>     sollwert = eeprom_read_word(&EEsollwert);
>
>   lcd_setcursor(0, 1);
>   sprintf(buffer, "%d", sollwert);
>   lcd_string(buffer);
>   _delay_ms(3000);
>   //*****************************************
>
>   //Messe die Linie aus und zeige Zustände am Display*+*+*+*+*+*
>   if(sollwert == 0)
>   {
>     sollwert = messeSollwert();
>     eeprom_write_word(&EEsollwert, sollwert);   //Schreibe Messung ins EEPROM, 
damit nicht immer wieder
>                           //neu ausgemessen werden muss, neue Messung wird 
erzwunden
>                           //durch PINC.1 = 1
>   }
>
> Am Display ist bei und bei keiner Tastenbetätigung nur eine -1 oder 2142
> oder eine 0 angezeigt.

Grrrr schrieb:
> Du kannst wohl davon ausgehen, dass ich Dir nicht nochmal helfe.

Wenn man gut in seiner Sache ist und etwas in ein Forum stellt dann 
rechnet man nie damit dass einem richtig geholfen wird, wieso auch?
Du denkst doch nicht ich wär abhängig oder?
Das "ins Forum reinstellen" mache ich neben meiner richtigen Arbeit, und 
die Wahrscheinlichkeit dass was dabei nützlich rauskommt liegt bei 
meiner Erwartung um die 10% herum, naja immerhin etwas.
Also merke dir eines: Wenn du keine Lust hast dann schleich dich!

Gruß Bro

von Grrrr (Gast)


Lesenswert?

Jaja. Mach mal.

von Grrrr (Gast)


Lesenswert?

Brocken Sei schrieb:
> Du denkst doch nicht ich wär abhängig oder?

Schau'n wir doch mal zusammen ob ich Anlass dazu habe:

1. Beitrag "LCD Zeichen von 16 auf 20 ändern - GCC"
Ursache: Tutorial nicht genau gelesen. Pin war nicht oder falsch 
angeschlossen. Fehlerbeschreibung so ungenügend das Aussenstehende das 
Problem nicht erkennen konnten. Anschliessend Disput über seinen Frage- 
und Diskussionstil und Rückzug in die Defensive (ich bin ja sowieso 
dumm).

2. Beitrag "Timer1-PWM Init Unterprogramm"
Ursache: Unkenntnis der String-Verarbeitung, spez. Unterschied Zeiger 
und String-Literal. Lehnt lesen und lernen der Grundlagen ab. Keine 
objektive Betrachtung der Bedeutung von Sprachdefinitionen.

3. Beitrag "char-String mit directive vergleichen"
Ursache: Unkentniss der String-Verarbeitung, spez. Vergleich. Ruhiger 
und freundlicher Abschluss des Threads

4. Beitrag "LCD_Formarierungsalgorithmus-sprintf"
Ursache: Unkenntnis über printf format string.
Unklare Fehlerbeschreibung. Unkenntnis des Unterschieds zwischen dem was 
sein Programm tun soll und dem was es tatsächlich tut. Abschliessend in 
die Defensive.

5. Beitrag "PID Algorithmus: Verbindung zwischen Aktoren und Sensoren und dem PID"
Keine eigentliche Ursache da Frage nach Information: Unklare, 
themenunangemessene Formulierungen. Deutliche Lücken im "technischen 
Denken". Passiv-aggressiver Abschluss. (Na ich werds schon finden).

[wegen Link-Anzahlb-Begrenzung Fortsetzung im nächsten Posting]

von Grrrr (Gast)


Lesenswert?

6. Beitrag "C-Code für AVR- Mikrocontroller simulieren- gibt es überhaupt eine vernünftige IDE?"
Ursache: Nicht geklärt. Keine Fehlerbeschreibung. Das er AVRStudio, 
Eclipse und CodeBlocks zum abstürzen bekommen hat motiviert ihn nach 
einer "vernünftigen" IDE zu fragen. Erstaunte Überraschung.

7. Beitrag "Aktivieren der Floating Point Version von sprintf in Eclipse"
Ursache: Keine Kenntnis der Eclipse IDE (rtfm). Keine Klarheit über 
Unterschied zwischen Lib und h-File. Abwertung einer genannten 
Alternative ohne Reflektion. Auffällig: Jetzt (Datum später als Punkt 6) 
geht Eclipse.
Aber in dem Thread keine Erklärung was die Ursache war.

8. Beitrag "WinHlp32.hlp und nicht WinHlp32.exe benötigt VMLAB"
Ursache: Keine eigene Internetsuche.

9. Beitrag "Algorithmus für Linefollower mit 5 Sensoren"
Ursache: Letzlich falsches Verständnis der Problemsituation. Unklare 
Problembeschreibung: "wie schreibe ich das". Offensichtlich kein 
Problemverständis von "LineFollower" im Zshg. mit verwendetem Sensor, 
Steuerung und Regelung. Forderndes, defensives und aggressives 
Verhalten. Vermutlich Lüge über Vorerfahrungen mit Linefollowern.

Brocken Sei schrieb:
> Du denkst doch nicht ich wär abhängig oder?

Tja, Du wirst staunen. Das denke ich.
Aber was heisst das schon. Ich weiss auch viele Sachen nicht und manche 
meiner Fehler halte ich für wirklich dumm. Irgendwie sind wir alle mehr 
oder minder von was oder wem abhängig.

>Das "ins Forum reinstellen" mache ich neben meiner richtigen Arbeit,
Ist nicht nötig. Wir kommen auch ohne das klar. Danke.
Aber Deine Haltung ist nicht angemessen. Ich denke, das Du hier nur 
konsumierst.
Wir helfen gerne, aber bitte: Tu wenigstens so als wenn Du uns 
respektierst. Gib Dir Mühe bei den Fehlerbeschreibungen; du brauchst 
Dein Gesicht nicht zu wahren; lies mal gründlicher was die Anderen 
schreiben.

von Brocken Sei (Gast)


Lesenswert?

Schade, dass ich noch nicht schlafen gegangen bin, war die ärgste 
Zeitverschwendung auf deine ich nenns mal so "Verteidiung" zu warten. 
Also was du mir mit deinem letzten Beitrag näher gebracht hast ist 
folgendes:
         Du           bist               ein                 Freak

Das sollst überhaupt nict als Kompliment nehmen, denn ich schreib dir 
mal auf was du gerade gemacht hast:
Du hast jeden Thread von mir Aufgesucht, ihn studiert, teilweise falsch 
analysierte Zusammenfassung aufgeschrieben nur um mir oder wen auch 
immer zu beweisen, dass ich ein nichtswissender idiot bin, der zu dumm 
ist selbst was auf die Reihe zu kriegen, damit du dich nicht so 
beleidigt fühlst.

Aber ich stelle nun wieder so mache Dinge klar: Wenn du dich ausheulen 
willst dann tuh das bei deina mami, und nicht bei so einer Plattform

Grrrr schrieb:
> aber bitte: Tu wenigstens so als wenn Du uns
> respektierst.

wenn du respekt suchst, dann nicht im Internet sondern im realen Leben 
und in einer Firma wo du dich hinaufarbeitest oder auch bei deiner 
Familie, aber erwarte bitte nicht zu viel, ich werd mir fürs nächste mal 
mühe geben deinen Wunsch zu erfüllen, aber nur weil du darum gefragt 
hast^^

Grrrr schrieb:
> ig. Wir komm
Wer ist wir?
Du bist nichtmal angemeldet und zählst dich zu den sehr hilfsbereiten in 
dieser Plattform.

Grrrr schrieb:
> Gib Dir Mühe bei den Fehlerbeschreibungen

Das werde ich, versprochen!

Grrrr schrieb:
> du brauchst
> Dein Gesicht nicht zu wahren

hahaha, wie meinst du denn das?

Grrrr schrieb:
> lies mal gründlicher was die Anderen
> schreiben.

Wenn ich mich nicht täusche sieht man in diesem Thread dass das auch für 
Herrn Grrr geht.

Grrrr schrieb:
> Aber Deine Haltung ist nicht angemessen. Ich denke, das Du hier nur
> konsumierst.

Das tun 60% aller Leute hier, also beschuldige mich bitte nicht falschen 
verhaltens, außerdem kann ich nicht nur konsumieren wenn doch andere aus 
meinem Thread möglicherweise Erfahrung bringen.

Grrrr schrieb:
> Vermutlich Lüge über Vorerfahrungen mit Linefollowern.

Genau solche Sachen zählen zu Hilfsbereiten Leuten hier zu dem 
negativsten und abstoßendstem. Du weißt ganz genau, dass das reiner 
Schwachsinn ist, weil ich das schon sehr oft gesagt habe, und mir 
dennoch nicht zu glauben ist kindisch und nicht kollegial!

Aber im Großen und ganzen glaube ich dass du zu lange vor dem PC sitzt 
sowie viele andere(mit AUsnahmen natürlich die ihre Arbeit am PC haben 
und die die hobbymäßig 2 Stunden am Tag was machen). Du solltest nicht 
alles so persönlich nehmen was gesagt wird, denn wir kennen uns ja 
hließlichsc nicht wirklich. Und wenn du was falsches machst dage ich 
bestimmt nichts, denn Fehler passieren immer. Also lassen wir lieber in 
Zukunft die Emotionen weg und konzentrieren uns wie wir am besten und 
effizientesten den Thread nützlich machen können.

Gruß Bro

von spess53 (Gast)


Lesenswert?

Hi

>Die If Abfrage brauche ich nur weill die Motoren zwischendurch
>viel Strom ziehen und der Controller sich resetet und das nicht
>auffallen darf.

Interessanter Ansatz.

MfG Spess

von Jean Player (Gast)


Lesenswert?

spess53 schrieb:
>>Die If Abfrage brauche ich nur weill die Motoren zwischendurch
>>viel Strom ziehen und der Controller sich resetet und das nicht
>>auffallen darf.

> Interessanter Ansatz.

Warum auch die Ursache bekämpfen, wenn man es so schön dirty machen 
kann^^.
Der Thread hat echt mal wieder meinen Tag gerettet.
Grüsse

von Karl H. (kbuchegg)


Lesenswert?

Eigentlich hab ich am Anfang des Threads schon darauf gewartet, dass 
diesmal der Compiler schuld ist :-)

Aber ich wollte mich ja eigentlich aus Brocken Sei's Threads raushalten. 
Bin schon weg.

von Grrrr (Gast)


Lesenswert?

Brocken Sei schrieb:
> ...ich nenns mal so "Verteidiung"...

Nenn' es Verteidigung. Deswegen ist es noch keine.
Wen oder was sollte ich denn verteidigen? Wen oder was meinst Du 
gefährden zu können und auf welche Weise?
Du wirst Dich vielleicht erinnern, dass Du fragtest, ob ich Dich für 
abhängig halte. Um Dir darauf zu antworten machte ich eine Analyse 
Deiner Threads. Einfach eine Frage der Redlichkeit. Wenn Du mir eine 
solche Frage stellst ziehe ich es vor die Antwort zu fundieren. Wo 
siehst Du da eine Verteidigung? Tja, da haben sich eben noch weitere 
Fakten und Urteile ergeben. Ist halt so. Hättest es halt nicht 
herausfordern sollen.

> denn ich schreib dir
> mal auf was du gerade gemacht hast:

Wenn Du meinst das es nötig ist...
Du nimmst wohl an, das man das, was ich getan habe, tun kann ohne es zu 
merken. Kam mir nicht so vor, als wenn ich das nicht bemerkt hätte.

> teilweise falsch
> analysierte Zusammenfassung aufgeschrieben

Nein. Ich habe eine Zusammenfassung erstellt. Ich habe hingegen nicht 
eine (meine eigene Zusammenfassung) analysiert. Da ich keine Analyse 
meiner Zusammenfassung hingeschrieben habe, kannst Du auch garnicht 
wissen ob ich sie analysiert habe. Du meinst wahrscheinlich, die 
Zusammenfassung meiner falschen Analyse oder die falsche Zusammenfassung 
meiner Analyse oder vielleicht auch meine falsche Zusammenfassung meiner 
falschen Analyse.
Im ersten Fall wird über die Qualität der Zusammenfassung nichts gesagt 
aber über die der Analyse, im zweiten die Zusammenfassung qualifiziert 
und nicht die Analyse, im dritten beides. An Deiner Ausdrucksweise und 
Denkfähigkeit solltest Du wirklich noch ein wenig arbeiten.
"Teilweise falsch", ist doch schon mal ein guter Ansatz.

> nur um mir oder wen auch
> immer zu beweisen, dass ich ein nichtswissender idiot bin, der zu dumm
> ist selbst was auf die Reihe zu kriegen, damit du dich nicht so
> beleidigt fühlst.

Das war garnicht meine Absicht. Das Ergebnis einer solchen Analyse kann 
man ja vorher garnicht wissen. Es wäre auch ziemlich idiotisch mit einer 
vorgefassten Meinung eine Analyse zu beginnen.
Wenn ich zu dem Ergebnis gekommen wäre, dann hätte ich diesen Schluss 
auch hingeschrieben.
Darüber hinaus wäre mir die Kennzeichung Idiot im Sinne von "Stümper", 
"unwissender Mensch" auch zu ungenau gewesen. Lies die Zusammenfassungen 
der Analysen und den Schluss. Ich habe Dich nicht einmal als "Irgendwas" 
gekennzeichnet sondern Dein Verhalten beschrieben. Daneben ist mir 
schleierhaft, auf welche Weise Du meinst mich beleidigt zu haben, 
abgesehen von der Frage, wie denn das eigentlich gehen sollte.

> Aber ich stelle nun wieder so mache Dinge klar: Wenn du dich ausheulen
> willst dann tuh das bei deina mami, und nicht bei so einer Plattform

Wer heult den bitte und welche meiner Äusserungen ist so zu 
interpretieren?
So eine Unterstellung ist doch reine Taktik. Was meinst Du damit zu 
gewinnen? Oder noch ein Beleg, dass Du kein Textverständis hast?

> wenn du respekt suchst, dann nicht im Internet sondern im realen Leben
> und in einer Firma wo du dich hinaufarbeitest oder auch bei deiner
> Familie, aber erwarte bitte nicht zu viel, ich werd mir fürs nächste mal
> mühe geben deinen Wunsch zu erfüllen, aber nur weil du darum gefragt
> hast^^

Ich "suche" keinen Respekt sondern "erwarte" von Dir, als dem hier um 
Hilfe Ersuchenden genau den Respekt, der in solch einer Situation und 
der Person gegenüber angemessen ist, die man um Hilfe ersucht. Einen 
Unterschied zwischen dem "Internet" und dem "realen Leben" kann ich in 
meinem Weltbild nicht feststellen und ich halte ihn auch nicht für 
sinnvoll. Demgemäß erwarte ich, setze ich mal voraus das man die beiden 
Sphären unterscheiden könnte, in beiden den selben Respekt.

> Wer ist wir?
> Du bist nichtmal angemeldet und zählst dich zu den sehr hilfsbereiten in
> dieser Plattform.

"Wir" sind im vorliegenden Fall eine Anzahl von Menschen, von denen 
einer (nämlich ich) sich selbst und die mit ihm eine gemeinsame 
Aktivität durchführenden Personen bezeichnet.
Zwischen der Tatsache das ich nicht angemeldet bin und der evtl. 
Tatsache, das ich mich für hilfbereit halte sehe ich keinen inneren 
Zusammenhang oder gar Widerspruch. Der Diktion nach handelt es sich wohl 
um einen Vorwurf. Ich kann in darin, dass genau beides auf mich zutrifft 
oder zutreffen könnte nichts negatives sehen.

> Das werde ich, versprochen!

Danke. Das ist sehr freundlich von Dir.

> Grrrr schrieb:
>> du brauchst
>> Dein Gesicht nicht zu wahren
>
> hahaha, wie meinst du denn das?

"Das Gesicht wahren" heisst soviel wie anderen Menschen gegenüber das 
Bild aufrecht erhalten oder herstellen wollen, das diese von einem haben 
oder dem eigenem Wunsch entsprechend haben sollten wobei im engeren 
Sinne einer Person eine als negative beurteilte Eigenschaft nicht oder 
nicht mehr zugeordnet werden soll.

> Grrrr schrieb:
>> lies mal gründlicher was die Anderen
>> schreiben.
>
> Wenn ich mich nicht täusche sieht man in diesem Thread dass das auch für
> Herrn Grrr geht.

Es kommt mitunter vor, das ich oberflächlich lese. In diesem Thread gibt 
es so einen Fall den man so deuten könnte, das stimmt.
Na und?

> Grrrr schrieb:
>> Aber Deine Haltung ist nicht angemessen. Ich denke, das Du hier nur
>> konsumierst.
>
> Das tun 60% aller Leute hier, also beschuldige mich bitte nicht falschen
> verhaltens, außerdem kann ich nicht nur konsumieren wenn doch andere aus
> meinem Thread möglicherweise Erfahrung bringen.

Du hast z.B. hier wieder nicht gründlich gelesen und nachgedacht. 
Erstmal besteht zwischen dem Anteil von Menschen einer Gruppe die 
oberflächlich lesen und der Tatsache das einer davon um gründlicheres 
lesen gebeten wird kein logischer Zusammenhang. Also ist eine Bitte die 
mit dem Wort "also" einen solchen herstellt sachlich damit nicht 
hinreichend begründet. Im übrigen tue ich was ich für richtig halte. Das 
Dir das nicht angenehm sein kann, meine ich genügend bedacht zu haben.
Dann halte ich ehrlich gesagt, das Wissen, das man gerade aus Deinen 
Threads ziehen kann für eher begrenzt und im Vergleich zu anderen 
Threads gleichen Themas sogar für sehr eng begrenzt, jedenfalls aber für 
höchstens gleichwertig.
Tatsächlich begründe ich meine Auffassung mit zwei Fakten: Erstens hast 
Du niemals hier einem Anderen geholfen und zweitens zeigst Du verbal, 
dass Du ständig forderst, Informationen nicht selbstständig verarbeitest 
und auf sachliche Kritik abweisend reagierst. Alles Verhalten einer 
Person die meint erwarten zu können, ja ein Recht auf das zu haben was 
man ihr hier scheinbar verweigert: Einfache Antworten, die man ohne 
selbst zu denken übernehmen kann.

> Grrrr schrieb:
>> Vermutlich Lüge über Vorerfahrungen mit Linefollowern.
>
> Genau solche Sachen zählen zu Hilfsbereiten Leuten hier zu dem
> negativsten und abstoßendstem. Du weißt ganz genau, dass das reiner
> Schwachsinn ist, weil ich das schon sehr oft gesagt habe, und mir
> dennoch nicht zu glauben ist kindisch und nicht kollegial!

Dein Satzbau ist zwar ein wenig ungeschickt, aber ich nehme zur 
Kenntnis, dass eine kritische Meinung von einem der hilfsbereit ist Dich 
abstösst.
Deine Unterstellung das ich sehr wohl wüsste das meine Vermutung (und 
nicht nur meine) unwahr ist, steht im Widerspruch zur Tatsache, das ich 
sie geäussert habe und zu dem Fakt, dass Du nicht wissen ob ich darüber 
Kenntnis habe oder nicht.
Ich kann ja nicht gut gleichzeitig ein "Wissen" darüber haben, dass Du 
nicht gelogen hast und "vermuten" das Du es getan hast. Es sei denn, 
dass Du entweder denkst, dass wiederum ich lüge, indem ich wider 
besseres Wissen oder entgegen meiner tatsächlichen Annahmen über den 
Sachverhalt solch eine Vermutung äussere oder das eine pathologische 
Ursache dafür verantwortlich ist. Aus welchem Grunde Du so etwas denken 
solltest weiss ich nicht. Tatsachen über mein Wissen oder meine Annahmen 
können Dir garnicht bekannt sein und für die Diagnose von mentalen 
Zuständen halte ich Dich nicht für qualifiziert.
Ob es kindisch wäre, Vermutungen entgegen den tatsächlichen Annahmen 
oder im Widerspruch zu faktischem Wissen zu äussern, halte ich für 
unwichtig. Ich nehme an diese Einordnung soll mich herabsetzen.
Dein Kollege bin ich nicht. Insofern ist der Vorwurf der 
"unkollegialität" überhaupt nicht anwendbar. Du wirst mir sicherlich 
zustimmen das eine Person, die kein Kollege ist, sich schon aus rein 
logischen Gründen nicht unkollegial verhalten kann.

> Aber im Großen und ganzen glaube ich dass du zu lange vor dem PC sitzt
> sowie viele andere(mit AUsnahmen natürlich die ihre Arbeit am PC haben
> und die die hobbymäßig 2 Stunden am Tag was machen).

Abgesehen davon, das unklar bleibt "wofür" ich zu lange am PC sitze, 
kann ich Dir sagen, das das was Du als Ausnahme definierst auf mich 
zutrifft. Ich bin beruflich in der Hardware und Software-Entwicklung 
tätig.

> Du solltest nicht
> alles so persönlich nehmen was gesagt wird, denn wir kennen uns ja
> hließlichsc nicht wirklich.

Deinen Rat nehme ich zur Kenntnis.

> Und wenn du was falsches machst dage ich
> bestimmt nichts, denn Fehler passieren immer.

Sag' mir ruhig, wenn ich einen Fehler mache.
Es heisst doch so schön, das man aus seinen Fehlern lernt; sogar noch 
mehr, als aus dem, was man auf Anhieb richtig macht.

> Also lassen wir lieber in
> Zukunft die Emotionen weg und konzentrieren uns wie wir am besten und
> effizientesten den Thread nützlich machen können.

Emotionen? Für mich ist das ein Spass, sowas richtig schön im Detail 
auseinanderzunehmen.


Ach, noch was:
Mängel am Netzteil mit irgendwelchen Softwaretricks zu umgehen ist 
überhaupt nicht ratsam.

von Karl H. (kbuchegg)


Lesenswert?

Brocken Sei schrieb:

> Du hast jeden Thread von mir Aufgesucht, ihn studiert, teilweise falsch
> analysierte Zusammenfassung aufgeschrieben nur um mir oder wen auch
> immer zu beweisen, dass ich ein nichtswissender idiot bin, der zu dumm
> ist selbst was auf die Reihe zu kriegen, damit du dich nicht so
> beleidigt fühlst.

Einmal darf ich noch. Denn hier liegt ein Misverständnis vor.
Es geht nicht darum, dich als Idioten hinzustellen.

Wir alle machen Fehler und wir alle in der Softwarebranche verrennen uns 
zeitweise in die falsche Richtung.

Das ist so und jeder, der lange genug dabei ist, weiß das das nicht zu 
vermeiden ist. Egal wie sehr wir uns bemühen.

Deswegen ist man noch lange kein Idiot. Und auch hier wieder: Niemand 
weiß das besser, als diejenigen die lange genug in der SW-Branche 
arbeiten.

Genauso auch hier in deinem Fall: Niemand will dich als Idiot 
hinstellen.

Aber wenn du etwas ungeschickt angehst, wenn dir Grundlagen fehlen, wenn 
du ein Projekt mit Halbwissen versuchst durchzuziehen, dann wird dir 
hier im Forum immer der Spiegel vorgehalten. Nicht, weil wir dich als 
Idioten hinstellen wollen, sondern weil wir dich dazu animieren wollen, 
deine Wissenslücken zu schliessen. Und zwar am besten indem man nicht 
alles vorkauen muss, sondern indem du selbst tätig wirst. Durch nichts 
lernt man soviel, wie durch eigene Erfahrung.


Dein Code-Stil zb hat sich mitlerweile ganz gut entwickelt (um mal auch 
etwas positives zu sagen). Lediglich dieser Abschnitt
1
  //Read EEPROM:*****************************
2
  registerVariable = PIND;
3
  registerVariable &= 0b00000001;
4
  if(registerVariable & 0b00000001)
5
    sollwert = eeprom_read_word(&EEsollwert);
6
  else if(registerVariable & 0b00000000)
7
    sollwert = 0;
8
  //*****************************************
9
10
  //Messe die Linie aus und zeige Zustände am Display*+*+*+*+*+*
11
  if(sollwert == 0)
12
  {
13
    sollwert = messeSollwert();
14
    eeprom_write_word(&EEsollwert, sollwert);   //Schreibe Messung ins EEPROM, damit nicht immer wieder
15
                          //neu ausgemessen werden muss, neue Messung wird erzwunden
16
                          //durch PINC.1 = 1
17
  }

der passt überhaupt nicht zum Rest. Der ist schwer zu lesen, kryptisch, 
unübersichtlich - und im Grunde wundert es von den erfahrenen 
SW-Entwicklern niemanden, dass er fehlerhaft ist. Man muss ständig 
zwischen den Zeilen springen und Variablen verfolgen. Welchen Wert hat 
welche Variable wann und warum, was folgt daraus. Wer wird mit wem 
verundet und warum, was kommt da raus, warum gibt es ein else if (würde 
ein else alleine nicht auch reichen) etc. etc. Dazu kommt, dass ein 
Variebalenname ala "registerVariable" nicht wirklich klug gewählt ist.
16 Zeilen für etwas, was man locker in weniger als der Hälfte, bei 
gleichzeitig besserer Lesbarkeit, ausdrücken könnte. In gewisser Weise 
hat hier das Politikersyndrom zugeschlagen: Wo jeder normale Mensch Ja 
oder Nein sagen würde, reden Politiker kompliziert um den heißen Brei 
herum ohne etwas zu sagen. Dein Code dupliziert das ein bischen in C. 
Die Länge des Codes ist der Fragestellung überhaupt nicht angemessen.
Natürlich erkennt man solche Dinge nicht auf Anhieb und man braucht 
Übung. Dáher zeigen wir auch Alternativen.
1
  sollwert = eeprom_read_word(&EEsollwert);
2
3
  if( !(PIND & (1<<PD0)) || sollwert == 0 )
4
  {
5
    sollwert = messeSollwert();
6
    eeprom_write_word(&EEsollwert, sollwert);
7
  }

Wenn sich aber dann herausstellt, dass während man sich Alternativen 
überlegt hat, sich bei dir wieder alles umdreht (inklusive dem 
erwünschten Verhalten bei Tastendruck), dann verliert man als Helfer 
irgendwann die Lust.

Und denk dran: niemand hier kann dir über die Schulter schauen. Alles 
was wir an Information haben, ist das was du uns gibst.
Einmal ist der Taster gedrückt, dann wieder nicht.
Wir haben nur das, was du schreibst. Also stell besser sicher, dass 
zumindest die gröbsten Fehler aussortiert sind. Da bleibt dann noch was 
übrig, aber ein bischen zwischen den Zeilen lesen können wir auch.

Und dann ist natürlich noch die Tatsache, dass all das nicht das erste 
mal ist. Wenn sich die Geschichte in jedem Thread immer wieder erneut 
wiederholt, dann wird dein Vorschuss-Bonus mit der Zeit immer kleiner.

von Hc Z. (mizch)


Lesenswert?

Der Thread ist ein Lehrstück einer alten Geschichte:

Gib einem Hungrigen einen Fisch, und er hat für einen Tag zu essen.  Gib 
ihm eine Angel, und er wird Dir sagen, was zum Kuckuck er mit einem 
beschissenen Stück Schnur anfangen soll, wo er doch Hunger hat.

von Brocken Sei (Gast)


Lesenswert?

@Grrr:
ok, ich verstehe deine Wut, du hast gewonnen, ich überlasse dir den 
letzen längeren Beitrag :)
keinen Bock mehr auf so nen Freak wie dich einzugehen, das führt nur zu 
längeren Beiträgen zu gunsten keinem!

Karl heinz Buchegger schrieb:
> Durch nichts
> lernt man soviel, wie durch eigene Erfahrung.

Richtig.

Karl heinz Buchegger schrieb:
> Lediglich dieser Abschnitt...

Das war ein einfaches Experiment, ich wusste ich kann das so nicht 
stehen lassen, ich habe das Tutorial gelesen, und als erstes Beispiel 
war es genau so beschrieben, also wollte ich es auch mal so machen, ihr 
konntet natürlich nichts wissen, wie auch?
Ich versteh aber trotzdem die AUfregung nicht, weil es ja nicht falsch 
war was ich hingeschrieben habe.

Karl heinz Buchegger schrieb:
> der passt überhaupt nicht zum Rest. Der ist schwer zu lesen, kryptisch,
> unübersichtlich - und im Grunde wundert es von den erfahrenen
> SW-Entwicklern niemanden, dass er fehlerhaft ist. Man muss ständig
> zwischen den Zeilen springen und Variablen verfolgen. Welchen Wert hat
> welche Variable wann und warum, was folgt daraus. Wer wird mit wem
> verundet und warum, was kommt da raus

Da stimme ich dir zu, ich wusste von vornherein bevor ich gebrannt hab 
dass das nicht funktionieren würde.

Karl heinz Buchegger schrieb:
> warum gibt es ein else if (würde
> ein else alleine nicht auch reichen)

Das hat seinen einfachen Grund: Bevor ich meinen Code ins Forum stellte 
habe ich sehr viel ausprobiert.
Anfangs stand da nur ein else und da der COntroller meinen Code falsch 
ausführte, ohne dass ich den Fhler entdeckte, sank ich noch tiefer und 
wollte alles eingrenzen, im Endeffekt war es dann sinnlos, aber Versuch 
halt.

Hc Zimmerer schrieb:
> Dazu kommt, dass ein
> Variebalenname ala "registerVariable" nicht wirklich klug gewählt ist.
> 16 Zeilen für etwas, was man locker in weniger als der Hälfte, bei
> gleichzeitig besserer Lesbarkeit, ausdrücken könnte.

Wie schon vorher gesagt, --> Erstes Beispiel im Tutorial.

Karl heinz Buchegger schrieb:
> Dáher zeigen wir auch Alternativen.

Auch wenn du das jetzt nicht glauben willst, so habe ich es heute früh 
auch probiert, und es hat noch macken, denn sollwert zeigt nicht immer 
die vorher gemessene Variable an, aber ich glaube langsam es liegt an 
der schmutzigen Hardware.

Karl heinz Buchegger schrieb:
> Wenn sich aber dann herausstellt, dass während man sich Alternativen
> überlegt hat, sich bei dir wieder alles umdreht (inklusive dem
> erwünschten Verhalten bei Tastendruck), dann verliert man als Helfer
> irgendwann die Lust.

Das verstehe ich, ich habe mich auch entschuldigt.
Und wenn ein Helfer seine Lust verliert, dann soll er doch wem anderen 
"helfen", aber wieso denn sagen, das ist doch unter seinem Niveau oder?

Karl heinz Buchegger schrieb:
> Wenn sich die Geschichte in jedem Thread immer wieder erneut
> wiederholt
Ich werde mich bemühen noch besser auf meine Probleme einzugehen und sie 
zu verdeutlichen.

Karl heinz Buchegger schrieb:
> dann wird dein Vorschuss-Bonus mit der Zeit immer kleiner.

hah, wieso das? Und was für ein Vorschussbonus?
Ich glaube du hast mich falsch verstanden.
Ich erkläre es noch einmal: Ich bin nicht abhängig!
Weder von dir Karl noch von Mr Grr (wer auch immer das ist) und sonst 
auch von keinem anderen.
Natürlich ist es schön wenn man Hilfe bekommt, deswegen schätze ich 
diese Plattform so, weil es die einzige ist wo man so schnell auf Hilfe 
zählen kann. Ich bin noch längst nicht an dem Punkt angelangt anderen zu 
helfen, da ich noch mitten im uC-Studium bin.


Gruß Bro

von Grrrr (Gast)


Lesenswert?

Hc Zimmerer schrieb:
> Gib einem Hungrigen einen Fisch, und er hat für einen Tag zu essen.  Gib
> ihm eine Angel, und er wird Dir sagen, was zum Kuckuck er mit einem
> beschissenen Stück Schnur anfangen soll, wo er doch Hunger hat.

Ich ändere das mal passend zum Thread auf Grillhühnchen. Ich mag Fisch, 
aber immer derselbe Fisch...? :-)

Gib einem Hungrigen einen Grillhühnchen , und er hat für einen Tag zu 
essen. Gib ihm eine Angel, und er wird Dir sagen, was zum Fisch er mit 
einem beschissenen Stück Schnur anfangen soll, wo man Grillhähnchen doch 
mit der Axt fängt.

von Wegstaben V. (wegstabenverbuchsler)


Lesenswert?

>> Karl heinz Buchegger schrieb:
>> Lediglich dieser Abschnitt...

> Das war ein einfaches Experiment, ich wusste ich kann das so nicht
> stehen lassen, ich habe das Tutorial gelesen, und als erstes Beispiel
> war es genau so beschrieben, also wollte ich es auch mal so machen, ihr
> konntet natürlich nichts wissen, wie auch?
> Ich versteh aber trotzdem die AUfregung nicht, weil es ja nicht falsch
> war was ich hingeschrieben habe.

aha.
Ist jetzt der Gegenstand des Experiments die Codezeile an sich gewesen 
(bzw. dessen Funktionalität)?
oder ging das Experiment darum, dem Hilfegebenden auf den Zahn zu 
fühlen, ob derjenige merkt, daß diese Codezeile "irgendwie merkwürdig" 
ist?


>> Karl heinz Buchegger schrieb:
>> [..text..]
> Da stimme ich dir zu, ich wusste von vornherein bevor ich gebrannt hab
> dass das nicht funktionieren würde.

ein interessanter Ansatz. Worin besteht der Zweck? Wolltest du prüfen, 
ob der Compiler aufpasst?

> ich glaube langsam es liegt an der schmutzigen Hardware.

Welchen Teil deiner Hardware hast du denn als schmutzig in Verdacht, und 
was genau kennst bzw. planst du, um diesen "Schmutz" zu entschärfen?


Sowas von Selbstverliebtheit wie die Beiträge von "Brocken Sei (Gast)" 
liest man nicht alle Tage. Danke für diesen Thread.

von Brocken Sei (Gast)


Lesenswert?

Wegstaben Verbuchsler schrieb:
> Ist jetzt der Gegenstand des Experiments die Codezeile an sich gewesen
> (bzw. dessen Funktionalität)?

Seit wann muss man denn Experimentieren begründen?

Wegstaben Verbuchsler schrieb:
> Worin besteht der Zweck?

Eine etwas komische Frage, ich grh trotzdem drauf ein, der Zweck von was 
denn?

Wegstaben Verbuchsler schrieb:
> Welchen Teil deiner Hardware hast du denn als schmutzig in Verdacht

Die gesamte Steuerplatine inclusive Sensorik und Display sind gefähdelt.
Ich werde noch wohl eine Woche warten müssen bis ich meine neue Platine 
ätzen kann.
Aber genauer: Die Steuerplatine, dort ist alles drauf E/A, Motortreiber, 
uC, Zusatzbeschaltungen. Die Motoren agieren schon ohne dass sie 
angesteuert werden. Das hat wohl die Hardware verdächtigt, obwohl doch 
allen bekannt ist, dass Motoren auf Störungen abfahren.

Wegstaben Verbuchsler schrieb:
> was genau kennst bzw. planst du, um diesen "Schmutz" zu entschärfen?

Das ist gar nicht so einfach.
Ich sag einmal eine neue Steuerplatine (geätzt), einen anderen Weg sehe 
ich nicht.

Wegstaben Verbuchsler schrieb:
> Sowas von Selbstverliebtheit

Ich bin nicht selbstverliebt. Ich finde es einfach nur falsch wenn man 
Leuten hier einfach so manches unterstellen darf. Vor allem Grrr, der ja 
scheinbar neben sein Informatikstudium auch noch Jus studiert hat.

Gruß Bro

von Wegstaben V. (wegstabenverbuchsler)


Lesenswert?

> Seit wann muss man denn Experimentieren begründen?

Ich wollte von dir nur hören, was das Ziel des Experiments war, und ob 
du dieses Ziel erreichen konntest.

> Eine etwas komische Frage, ich grh trotzdem drauf ein, der Zweck von was
denn?

ja, das wollte ich ja grade von dir wissen: Der Zweck deiner Handlung
"ich wusste von vornherein bevor ich gebrannt hab dass das nicht 
funktionieren würde" --> Warum "machst" du etwas, von dem du weißt DASS 
es dich nicht zum Ziel führt? Oder war das auch wieder ein "Experiment"?


PS: Das ist irgendwie schwierig, mit Inselbegabten wie dir zu 
kommunizieren.

http://de.wikipedia.org/wiki/Inselbegabung

von Karl H. (kbuchegg)


Lesenswert?

Brocken Sei schrieb:

> Die gesamte Steuerplatine inclusive Sensorik und Display sind gefähdelt.

Verteil erst mal großzügig Abblockkondensatoren. Auch ein kleiner C am 
µC-Reset kann nicht schaden.

Die Versorgung der Motoren möglichst gut von der Versorgung des µC 
entkoppeln. Entstörkondensatoren an die Motoren.


> angesteuert werden. Das hat wohl die Hardware verdächtigt, obwohl doch
> allen bekannt ist, dass Motoren auf Störungen abfahren.

Mir ist das nicht bekannt.
Bei meinen Motoren kann in der Nähe passieren was will, die sind 
unbeeindruckt davon :-)

> Ich sag einmal eine neue Steuerplatine (geätzt), einen anderen Weg sehe
> ich nicht.

Kommt drauf an.
Auch gefädelte Platinen laufen im Regelfall zuverlässig. Wenn du auf der 
anderen Seite keine geeigneten Entstörmassnahmen ergriffen hast, hilft 
dir auch eine geätzte Platine nichts.

von Brocken Sei (Gast)


Lesenswert?

Wegstaben Verbuchsler schrieb:
> PS: Das ist irgendwie schwierig, mit Inselbegabten wie dir zu
> kommunizieren

Naja ok, wenn das deine Meinung ist.

JEtzt eine Bitte:
Können wir diesen Thread schließen oder beenden?
Es hat einfach keinen Sinn da weiter zu diskutieren ob ich nun wirklich 
ein vollidiot bin oder einfach so tue odergar das Gegenteil bin.

Wegstaben Verbuchsler schrieb:
> PS: Das ist irgendwie schwierig, mit Inselbegabten wie dir zu
> kommunizieren

Das hat ja das Bild von mir verdeutlicht.

PS: Mich stört es nicht wirklich was du da gesagt hast, ich nimms nicht 
ernst.

Gruß Bro

von Brocken Sei (Gast)


Lesenswert?

Karl heinz Buchegger schrieb:
> Verteil erst mal großzügig Abblockkondensatoren. Auch ein kleiner C am
> µC-Reset kann nicht schaden.

ist drann!

Karl heinz Buchegger schrieb:
> Die Versorgung der Motoren möglichst gut von der Versorgung des µC
> entkoppeln.

Hmm, meinst du mit OPVs?

Karl heinz Buchegger schrieb:
> Entstörkondensatoren an die Motoren.

Sind drann.

Karl heinz Buchegger schrieb:
> Mir ist das nicht bekannt.

Echt? Komisch, also viele Erfahrene Roboterbauer sagen Motoren neigen 
dazu Störungen einzufangen.

Karl heinz Buchegger schrieb:
> Bei meinen Motoren kann in der Nähe passieren was will, die sind
> unbeeindruckt davon :-)

Dann hängt das meist mit der gut geätzten Platine zusammen. Abstände 
usw..

Karl heinz Buchegger schrieb:
> Wenn du auf der
> anderen Seite keine geeigneten Entstörmassnahmen ergriffen hast, hilft
> dir auch eine geätzte Platine nichts.

Das ist wohl klar.

Gruß Bro

von Karl H. (kbuchegg)


Lesenswert?

Brocken Sei schrieb:

> Karl heinz Buchegger schrieb:
>> Mir ist das nicht bekannt.
>
> Echt? Komisch, also viele Erfahrene Roboterbauer sagen Motoren neigen
> dazu Störungen einzufangen.

Motoren neigen höchstens dazu, massenhaft Störungen abzugeben und die 
restliche Elektronik ausser Tritt zu bringen.
Aber den Motor selber wirst du mit massenhaft Elektronik rundherum nicht 
ausser Tritt bringen können. Was soll denn in einem Motor gestört 
werden? Der Stromfluss von den Bürsten/Kohlen zum Kollektor oder fangen 
die Windungen zu schwingen an?

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.