Forum: Mikrocontroller und Digitale Elektronik PIC ignoriert endlosschleife


von Pascal (Gast)


Lesenswert?

Guten Tag

Ich habe mal versucht, einen PIC zum laufen zu bringen. Das Program an 
sich funktioniert fast ganz so wie ich es gerne hätte, würde der PIC 
nicht penetrant die While (1){..} (eigentlich eine endlosschlaufe) 
ignorieren

der Coode sieht folgendermassen aus:
1
/*///////////////////////////////////////////////////////////////////////////////////////////////////////////*/
2
3
#include "htc.h"  //* Compiler-Grundfunktionen */
4
#include "pic.h"  //* PIC-Funtionen */
5
#include "always.h"  //* Datentypenerweiterungen für Delayfunktionen */
6
#include "delay.h"  //* Headerdatei Delayfunktionen */
7
#include "delay.c"  //* Delayfunktionen */
8
9
/*//////////////////////////////////////////////////////////////////////////////////////////////////////////*/
10
11
//__CONFIG (WDTDIS & UNPROTECT & INTIO & MCLRDIS & LVPDIS & FCMDIS & IESODIS & BORDIS & PWRTDIS);
12
13
14
/*///////////////////////////////////////////////////////////////////////////////////////////////////////////*/
15
16
17
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
18
#define  PIN(x,y,z)  static bit x @ ((unsigned) &y*8+z)
19
20
//Eingänge
21
PIN (/*Switch*/Pir, PORTB, 4);
22
//PIN (Pir, PORTB, 5);
23
24
//Ausgänge
25
PIN (Out, PORTC, 1);//PWM Ausgang
26
PIN (Ton, PORTC, 0);
27
28
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
29
fPortinitialisierung(void)
30
{
31
  ANSEL = 0x00;    /*PORTA und PORTE alles Digital I/0)*/
32
  ANSELH = 0x00;  /*PORTB alles Digital I/0)*/
33
  
34
  TRISA = 0xFF;    /*PORTA Eingaenge*/
35
  TRISB = 0xFF;    /*PORTB  Eingaenge*/
36
  
37
  TRISD = 0x00;    /*PORTD  Ausgaenge*/
38
  TRISC = 0x00;
39
  
40
  PORTD=0x00;
41
  PORTC=0x00;
42
}
43
fPWMON(void)
44
{
45
  PR2 = 0b01111100 ;    //Timer für PWM
46
  T2CON = 0b00000101 ;  //Register PWM
47
  CCP1CON = 0b00001100 ;  //Register PWM
48
  CCP2CON = 0b00111100 ;  //Register PWM
49
  
50
  CCPR1L = 128 ;  //Minimale Dimmung (Dunkelst)
51
  CCPR2L = 0 ;  //Minimale Dimmung (Dunkelst)
52
  /*
53
  * PWM resolution is 10 bits
54
  * don't use last 2 less significant bits CCPxCON,
55
  * so only CCPRxL have to be touched to change duty cycle
56
  */
57
}
58
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
59
main(void)
60
{
61
  fPortinitialisierung();
62
  short Stufe=0;  //Helligkeitsstufe (PWM)
63
  int dc=127;
64
  int Light=0;
65
  int status=12;
66
  short start=1;
67
  
68
//-------------------------------------------------STARTUP-------------------------------------------------//  
69
  for(int i=200;i>0;i--)
70
  {  //Akustik
71
    Ton=1;
72
    fDelay_us(200);
73
    Ton =0;
74
    fDelay_us(200);
75
  }
76
  
77
  for(int i=200;i>0;i--)
78
  {  //Akustik
79
    Ton=1;
80
    fDelay_us(200);
81
    Ton =0;
82
    fDelay_us(100);
83
  }
84
  
85
  for(int i=90;i>0;i--)
86
  {  //Akustik
87
    Ton=1;
88
    fDelay_ms(1);
89
    Ton =0;
90
    fDelay_ms(1);
91
  }
92
93
  //-------------------------------------------------MAIN-------------------------------------------------//
94
  while(1)      //Start
95
  {  
96
    
97
    if(Pir==1)    //Überprüfung Bewegung
98
    {
99
      Light=1;
100
    }
101
    switch (Light)  //Zyklus
102
    {
103
      case 1:    //Aufdimmen
104
        
105
        if(start==1)
106
        {
107
          fPWMON();
108
          CCPR1L=127;
109
          CCPR2L=1;
110
          fDelay_ms(220);
111
          fDelay_ms(230);
112
        }
113
        for(;dc>1;dc--)
114
          {
115
            CCPR1L=dc;
116
            CCPR2L=128-dc;
117
            fDelay_ms(40);
118
          }
119
          start=0;
120
          status=100;
121
        Light=2;
122
      break;
123
      case 2://dc zunehmen
124
        if(status>1)
125
        {
126
          status--;
127
          CCPR1L=dc;
128
          CCPR2L=128-dc;
129
          PORTD=0x02;
130
          fDelay_ms(10);
131
        }
132
        else
133
        {
134
          for(;dc<10;dc++)
135
          {
136
            CCPR1L=dc;
137
            CCPR2L=128-dc;
138
            fDelay_ms(10);
139
          }
140
          status=100;
141
          Light=3;
142
        }
143
      break;
144
      case 3:
145
        if(status>1)
146
        {
147
          status--;
148
          CCPR1L=dc;
149
          CCPR2L=128-dc;
150
          PORTD=0x03;
151
          fDelay_ms(10);
152
        }
153
        else
154
        {
155
          for(;dc<20;dc++)
156
          {
157
            CCPR1L=dc;
158
            CCPR2L=128-dc;
159
            fDelay_ms(10);
160
          }
161
          status=100;
162
          Light=4;
163
        }
164
      break;
165
      case 4:
166
        if(status>1)
167
        {
168
          status--;
169
          CCPR1L=dc;
170
          CCPR2L=128-dc;
171
          PORTD=0x04;
172
          fDelay_ms(10);
173
        }
174
        else
175
        {
176
          for(;dc<30;dc++)
177
          {
178
            CCPR1L=dc;
179
            CCPR2L=128-dc;
180
            fDelay_ms(10);
181
          }
182
          status=100;
183
          Light=5;
184
        }
185
      break;
186
      case 5:
187
        if(status>1)
188
        {
189
          status--;
190
          CCPR1L=dc;
191
          CCPR2L=128-dc;
192
          PORTD=0x05;
193
          fDelay_ms(10);
194
        }
195
        else
196
        {
197
          for(;dc<40;dc++)
198
          {
199
            CCPR1L=dc;
200
            CCPR2L=128-dc;
201
            fDelay_ms(10);
202
          }
203
          status=100;
204
          Light=6;
205
        }
206
      break;
207
      case 6:
208
        if(status>1)
209
        {
210
          status--;
211
          CCPR1L=dc;
212
          CCPR2L=128-dc;
213
          PORTD=0x06;
214
          fDelay_ms(10);
215
        }
216
        else
217
        {
218
          for(;dc<50;dc++)
219
          {
220
            CCPR1L=dc;
221
            CCPR2L=128-dc;
222
            fDelay_ms(10);
223
          }
224
          status=100;
225
          Light=7;
226
        }
227
      break;
228
      case 7:
229
        if(status>1)
230
        {
231
          status--;
232
          CCPR1L=dc;
233
          CCPR2L=128-dc;
234
          PORTD=0x07;
235
          fDelay_ms(10);
236
        }
237
        else
238
        {
239
          for(;dc<70;dc++)
240
          {
241
            CCPR1L=dc;
242
            CCPR2L=128-dc;
243
            fDelay_ms(10);
244
          }
245
          status=100;
246
          Light=8;
247
        }
248
      break;
249
      case 8:
250
        if(status>1)
251
        {
252
          status--;
253
          CCPR1L=dc;
254
          CCPR2L=128-dc;
255
          PORTD=0x08;
256
          fDelay_ms(10);
257
        }
258
        else
259
        {
260
          for(;dc<90;dc++)
261
          {
262
            CCPR1L=dc;
263
            CCPR2L=128-dc;
264
            fDelay_ms(10);
265
          }
266
          status=100;
267
          Light=9;
268
        }
269
      break;
270
      case 9:
271
        if(status>1)
272
        {
273
          status--;
274
          CCPR1L=dc;
275
          CCPR2L=128-dc;
276
          PORTD=0x09;
277
          fDelay_ms(10);
278
        }
279
        else
280
        {
281
          for(;dc<115;dc++)
282
          {
283
            CCPR1L=dc;
284
            CCPR2L=128-dc;
285
            fDelay_ms(10);
286
          }
287
          status=100;
288
          Light=10;
289
        }
290
      break;
291
      case 10:  //Timer abgelaufen Licht beenden
292
        if(status>1)
293
        {
294
          status--;
295
          CCPR1L=dc;
296
          CCPR2L=128-dc;
297
          PORTD=0xFF;
298
          fDelay_ms(10);
299
        }
300
        Light=0;
301
        start=1;
302
        dc=128;
303
        TRISC = 0x00;
304
      break;
305
306
    }
307
  }
308
}
Wie gesagt, es funktioniert alles, nur dass der PIC, wie ich vermute, 
nach jedem Durchlauf ganz von vorne beginnt. Der Lautsprecher den ich 
mit der Variable Ton ansteuere piepst nämlich alle paar Sekunden, sowohl 
dass ja nicht möglich sein sollte, da sich der Pic später in der 
While-schleife verweilen sollte.
Vielleicht liegt es daran, dass die Zeile mit den Konfigurationen 
auskommentiert ist. Ich habe keinen blassen was dort gemacht wird, da 
ich dass aus einem Programm aus dem Lehrbetrieb übernommen habe, weis 
nur das der Kompiler nichts davon kennt und mir 20 Errors ins Gesicht 
wirft.

Wäre sehr froh, wenn jemand helfen könnte :)

MFG

von Peter (Gast)


Lesenswert?

- Läuft dein PIC ?
- ConfigWord richtig gesetzt ?
- Taktquelle ?
- Reset richtig beschaltet ?
- PIC richtig beschaltet ?

- Hast du SIMULIERT ?

von Marco S (Gast)


Lesenswert?

Hallo. Ich will demnächst auch mit PICs anfangen. Bin kein Experte, aber 
könnte es am auskommentierten watchdogtimerdisable liegen?

//__CONFIG (WDTDIS ...

von Michael L. (michaelx)


Lesenswert?

Siehst so aus, als scheint dein PIC immer wieder "abzustürzen"

Es fehlen leider wichtige Informationen ...

Welcher PIC? (Es gibt da sehr viele verschiedene Typen.)
Schaltplan?

So kann ich nur mit allgemeinen Ratschlägen dienen:

- Kondensatoren zwischen Vdd und Vss direkt am PIC
- Resetpin richtig beschalten oder MCLRE_OFF konfigurieren
- Brown Out Detection abschalten
- Watch Dog Reset abschalten
- Einfaches, kurzes Testprogramm, um Stacküberlauf auszuschließen

Und noch eine Bitte:

So umfachreichen Code nicht wieder im Beitrag posten, sondern als 
Dateianhang mit richtiger Dateiendung, und für kurze Code-Fragmente im 
Beitrag die entsprechenden Code-Tags verwenden.

;-)

von Easylife (Gast)


Lesenswert?

Ich weiss nicht, was dein PIC macht, wenn du eine switch struktur hast, 
die keinen Fall für "Light==0" kennt, aber Light 0 werden kann (nach 
Light==10)

Vielleicht definierst du noch einen default case, der einfach nichts 
macht.

von Easylife (Gast)


Lesenswert?

Welche 20 Errors wirft denn der Compiler eigentlich aus? Und wie kann es 
sein, dass ein Binary gebaut wird, wenn es Errors gab?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Pascal schrieb:
> der Coode sieht folgendermassen aus:
> ...
> fPortinitialisierung(void)

Und den übersetzt Dein C-Compiler ohne irgendwelche Kommentare?

C sieht seit 1989 vor, daß bei Funktionsdeklarationen und -Definitionen 
der Datentyp des Rückgabewerts angegeben wird - void, wenn nichts 
zurückgegeben wird.

Pascal schrieb:
> #include "delay.h"  //* Headerdatei Delayfunktionen */
> #include "delay.c"  //* Delayfunktionen */

Und das solltest Du Dir auch noch mal ansehen.

von X4U (Gast)


Lesenswert?

Pascal schrieb:

> Wie gesagt, es funktioniert alles, nur dass der PIC, wie ich vermute,
> nach jedem Durchlauf ganz von vorne beginnt.

Dann grenzt das ein. Vor der loop eine Led einschalten (mit delay) die 
bei Neustart wieder ausgeht.

von Master S. (snowman)


Lesenswert?

selbst ich, der schon einige zeit mit PICs arbeite, mache ganz am anfang 
eines projekts mit einem neuen PIC erstmal ein blinklicht - und in der 
letzten zeit, bleibt das meist bis zum schluss einfach im hintergrund: 
wenn da was blinkt, weiss ich, dass der PIC zu 95% ordnungsgemäss läuft 
:-)

ich würde dir das selbe vorschlagen: erstmal ein blinklicht, und dann 
nach und nach das projekt mit code füllen. das hat den unglaublichen 
vorteil, dass man nicht lange suchen muss, wo(!) ein fehler liegt, wenn 
mal was nicht richtig läuft.

von Somebody123 (Gast)


Lesenswert?

Hallo,

schau mal in den config Bits, ob nicht der Watchdog eingeschaltet ist. 
Wenn ja, schalten ihn aus oder setzte regelmässig den Watchdogtimer 
zurück.

Der kann das verursachen, wenn er regelmässig des Reset zieht, weil dann 
immer ein Hochlauf passiert.
Hat mich bei meinem ersten Blinkprogramm ein paar Stunden gekostet...

von Easylife (Gast)


Lesenswert?

Ich denke nach wie vor das Programm durchläuft deine gesamte 
Lichtsequenz, und am Ende der Sequenz setzt du "Light=0;"
Da es keinen case für 0 in der select struktur gibt, vermute ich gibt es 
eine exception, die einen Reboot hervorruft.

von Frank B. (f-baer)


Lesenswert?

Easylife schrieb:
> Ich denke nach wie vor das Programm durchläuft deine gesamte
> Lichtsequenz, und am Ende der Sequenz setzt du "Light=0;"
> Da es keinen case für 0 in der select struktur gibt, vermute ich gibt es
> eine exception, die einen Reboot hervorruft.

Ein Default-Zweig wird eigentlich nach C-Standard automatisch angelegt 
und ist insofern nicht erforderlich, wenn keine spezielle Aktion 
ausgeführt werden soll.

von Pascal (Gast)


Angehängte Dateien:

Lesenswert?

Danke für die Ratschläge.

Im Anhang das Schema. Ein Hardwarefehler ist auszuschliessen.

Nun Zuerst die Fehlermeldung, wenn ich die Configuration nicht mehr 
auskommentiere:
1
__CONFIG (WDTDIS & UNPROTECT & INTIO & MCLRDIS & LVPDIS & FCMDIS & IESODIS & BORDIS & PWRTDIS);
1
(1273) Omniscient Code Generation ist in der Lite Version nicht verfügbar (warning)
2
Error   [800] TRy.as; 45. undefiniertes Symbol "PWRTDIS"
3
Error   [800] TRy.as; 45. undefiniertes Symbol "BORDIS"
4
Error   [800] TRy.as; 45. undefiniertes Symbol "IESODIS"
5
Error   [800] TRy.as; 45. undefiniertes Symbol "FCMDIS"
6
Error   [800] TRy.as; 45. undefiniertes Symbol "LVPDIS"
7
Error   [800] TRy.as; 45. undefiniertes Symbol "MCLRDIS"
8
Error   [800] TRy.as; 45. undefiniertes Symbol "INTIO"
9
Error   [800] TRy.as; 45. undefiniertes Symbol "UNPROTECT"
10
Error   [800] TRy.as; 45. undefiniertes Symbol "WDTDIS"

Wenn ich im entsprechenden Headerfile nachschaue finde ich 
interessanterweise die Befehle, darum habe ich auch mittlerweile 
verstanden, was hier geschieht.
Darum ahbe ich den Programcode ensprechend angepasst.
1
#define WDTDIS=0x3FF7;      //Die konfiguration habe ich so aus dem pic.h File geholt
2
#define PWRTDIS=0x3FFF;      //ob es funktioniert weiss ich nicht, aber es gibt keine
3
#define MCLRDIS=0x3FDF;      //Fehler die der Compiler mir anzeigt
4
#define UNPROTECT=0x3FFF;
5
#define BORDIS=0x3CFF;
6
#define IESODIS=0x3BFF;
7
#define FCMDIS=0x37FF;
8
#define LVPDIS=0x2FFF;

von Pascal (Gast)


Lesenswert?

Upas das war der flasche Knopf, wollte noch weiteres schreiben, kommt 
gleich...

von Harald (Gast)


Lesenswert?

Ähem, ich habe die ganze Diskussion nicht Wort für Wort gelesen, aber:

Bei einem PIC-Compiler hatte ich mal ein sehr ähnliches Problem, 
while(1) wurde einfach nicht korrekt übersetzt. Anstelle dessen habe ich 
dann ein for(;;) eingebaut und fertig. Für eine tiefere Analyse hatte 
ich keine Lust, denn die Anweisung hat den gleiche Effekt.

War ein CCS Compiler, Version weiß ich nicht mehr.

von Pascal (Gast)


Lesenswert?

Wie geraten habe ich ein Test Programm geschrieben, funktioniert.

Peter schrieb:
> - Läuft dein PIC ?
ja
> - ConfigWord richtig gesetzt ?
Ist ausgeklammert, demfall eher nicht, wegen beschriebenem fehler
> - Taktquelle ?
interner Quarz, funktioniert.
> - Reset richtig beschaltet ?
RB3 auf masse gezogen,(5k6)
> - PIC richtig beschaltet ?
>Bestimmt
> - Hast du SIMULIERT ?
Nein, können sie mir eine Software empfehlen?



Michael L. schrieb:
> Welcher PIC? (Es gibt da sehr viele verschiedene Typen.)
16F887
> Schaltplan?
jep, vorher
> So kann ich nur mit allgemeinen Ratschlägen dienen:
 :)



> - Kondensatoren zwischen Vdd und Vss direkt am PIC
Ja
> - Resetpin richtig beschalten oder MCLRE_OFF konfigurieren
MCLR=RB3 ist pull down auf masse.
> - Brown Out Detection abschalten
nein, weil bisher beschiebener fehler.
> - Watch Dog Reset abschalten
nein weil bisher beschiebener fehler.
Wenn meine pseudokonfiguration funktioniert wie ich sie in der 
vorletzten antwort geschireben habe, dann ist das jetzt erledigt.
> - Einfaches, kurzes Testprogramm, um Stacküberlauf auszuschließen
gemacht, hat funktioniert.



Easylife schrieb:
> Ich weiss nicht, was dein PIC macht, wenn du eine switch struktur hast,
> die keinen Fall für "Light==0" kennt, aber Light 0 werden kann (nach
> Light==10)
gemacht, ändert leider nichts.



Rufus Τ. Firefly schrieb:
>> fPortinitialisierung(void)
>
> Und den übersetzt Dein C-Compiler ohne irgendwelche Kommentare?
Nein, er hat keine ersichtlichen Probleme damit
> C sieht seit 1989 vor, daß bei Funktionsdeklarationen und -Definitionen
> der Datentyp des Rückgabewerts angegeben wird - void, wenn nichts
> zurückgegeben wird.
Wie meinen sie das genau? es ist void eingetragen, und die Funktion soll 
auch nichts zurückgeben, was sie meine Meinung nach auch tut.
> Pascal schrieb:
>> #include "delay.h"  //* Headerdatei Delayfunktionen */
>> #include "delay.c"  //* Delayfunktionen */
>
> Und das solltest Du Dir auch noch mal ansehen.
Die funktionieren, der grösste Fehler kann sein, dass die 
Delayfunktionen auf andere Frequenzen als mein interner Standard 4MHz 
tackt ist. Aber das stört im Moment noch nicht



Harald schrieb:
> Bei einem PIC-Compiler hatte ich mal ein sehr ähnliches Problem,
> while(1) wurde einfach nicht korrekt übersetzt. Anstelle dessen habe ich
> dann ein for(;;) eingebaut und fertig...
Habe ich auch bereits versucht, hatte leider nichts gebracht.

Vielen Dank an alle für die Mühe und Antworten.

von Michael L. (michaelx)


Lesenswert?

Pascal schrieb:
>> - Resetpin richtig beschalten oder MCLRE_OFF konfigurieren
>MCLR=RB3 ist pull down auf masse.
Du meinst sicher RE3.

>> - Brown Out Detection abschalten
>nein, weil bisher beschiebener fehler.
Bei eine stabile Betriebsspannung und wenn die Kondensator nicht fehlen, 
sollte das nicht so kritisch sein.

>> - Watch Dog Reset abschalten
>nein weil bisher beschiebener fehler.
Das ist definitiv eine mögliche Ursache, wenn der Watch Dog nicht 
abgeschaltet ist, und nicht rechtzeitig zurückgesetzt wird.

>> Pascal schrieb:
>>> #include "delay.h"  //* Headerdatei Delayfunktionen */
>>> #include "delay.c"  //* Delayfunktionen */
>>
>> Und das solltest Du Dir auch noch mal ansehen.
> Die funktionieren, ...

Was Rufus damit sagen wollte: Man includiert nur Header-Files.

Klar funktioniert das trotz dem irgendwie, aber es ist schlechter Stil, 
der dir irgendwann auf die Füße fällt.

Genau so kann man Funktionen in Header-Files schreiben, tut es aber 
nicht.

Wie sieht das kurze Testprogramm aus, und was bedeutet "es hat 
funktioniert"?

;-)

von Pascal (Gast)


Angehängte Dateien:

Lesenswert?

Hallo

Ich hatte mittlerweile etwas zeit, und habe das Problem gefunden.
Wenn ich das PWM einschaltem möchte stürzt der Pic früher oder später 
ab.

Die Fehleranalyse findet man im Anhang.
Ich habe den Code für das PWM im Internet gefunden, genau hier:
http://www.micro-examples.com/public/microex-navig/doc/097-pwm-calculator.html

da habe ich direkt das aus dem Codebeispiel auf dem unteren Teil der 
Seite kopiert.
Nun wenn ich im Datenblatt des Pics nachschaue werde ich nicht schlau, 
was in den Registern genau passiert. Kann mir das vieleicht jemand 
erklären? Wahrscheinlich findet sich auch dort der Fehler.

Freundliche Grüsse

von X4U (Gast)


Lesenswert?

Pascal schrieb:
> Wenn ich das PWM einschaltem möchte stürzt der Pic früher oder später
> ab.

Ist die Formulierung "sobald ich die Akustik einschalte kommen Fehler" 
richtig?

Was hängt am PWM?

- Können Störungen entstehen. z.B. ist ein Speaker auch ein Generator.
- Reicht die Stromversorgung, ist die zum Pic getrennt vom Leistungsteil

von PIC N. (eigo) Benutzerseite


Lesenswert?

Ist der MCLR(= RE3 ) wirklich über einen Pull-down auf Masse?

von San L. (zwillingsfreunde)


Lesenswert?

Pascal schrieb:
>> - Resetpin richtig beschalten oder MCLRE_OFF konfigurieren
> MCLR=RB3 ist pull down auf masse.

MCLR ist RE3. Ausserdem gehört der per Pull-up an VCC, nicht an Masse!

von michael "meikel" D. (meikel)


Lesenswert?

Kann möglich sein, daß ich mich irre.

Ein MCU ist ein Microkontroller meine einem mehr oder weniger dürftigen 
Befehlssatz. Ein Teil bevorzugt für das bißchen Speicher Assembler und 
der Rest machts nicht uter C/C++.

Genaugenommen ist die Sprache völlig Wurscht: ein MCU, egal ob von Atmel 
oder Microchip versteht eine dürftige Untermenge dessen, was selbst der 
dürftigste schon an die Schmerzgrenze treiben könnte.

C wird als portabel angepriesen, was aber nicht stimmt.
Pascal soll es wohl geben
Basic war schon nie das Gelbe vom Ei.

Verzweigungen gibt es - mehr üder weniger dürftig,
Fallentscheidungen: sucht man vergeblich
Dafür wird man als Atmel Kunde gearscht, den HEX-Code so in den Chip zu 
kriegen, daß er nachträglich noch korrigiert werden kann.

Nur mal janz dumm gefragt:
ist das wirklich alles, was angeboten wird, ohne TQFP 100 auf die 
Leiterplatte zu kleben, oder lese ich nur im falschen Forum, weil der 
Luxus paar Türen weiter wohnt?

Selbst bei nem lächerlichen Sprungbefehl stellt sich Microchip mehr 
Beine als der Käfer welche hat.
Fragen nach Python kann aich mir wahrscheinlich in die Haare schmieren.

OOP in C++ bei den paar Bytes Flasch + keine Möglichkeit, Code im RAM 
auszuführen, halte ich für nen Kindergartenwitz.

In welcher Idiotenanstalt wohnen diese "Entwickler" eigentlich?

von Wegstaben V. (wegstabenverbuchsler)


Lesenswert?

michael "meikel" D. schrieb:
> Kann möglich sein, daß ich mich irre.

Ja.

von Ein (Gast)


Lesenswert?

michael "meikel" D. schrieb:
> Kann möglich sein, daß ich mich irre.
> ...

Was ist dir denn passiert?

Niemand wird zu einem µC gezwungen, außer vielleicht ein paar Besuchern 
von Lehranstalten.

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.