Forum: Mikrocontroller und Digitale Elektronik Array mit C Compiler und MPLAP


von Uwe K. (uwe_k60)


Lesenswert?

Hallo ich nochmal...

nur damit wir uns nicht verrennen, frageich lieber nochmal nach:

Also... wir haben folgende situation

Wir möchten vom PC aus an den PIC 4Bytes schicken( immer 4 stck bei 
jeder änderung die passiert alles was nicht gebraucht wird wird genullt)

So ABER....

Wie können wir ein Array bilden was die 4 Werte aufnimmt und dann in 
BYTE1,BYTE2;BYTE3,BYTE4 speichert und nutzt, bis wieder 4byte kommen 
dannn werden die ja automatisch überschrieben...

hat da zufällig jemand eine idee.... nicht für assembler oder pragma...


danke...
von Karl H. (kbuchegg)


Lesenswert?

unsigned char Bytes[4];
unsigned char nextByte;


....

   du kriegst das Byte von der UART

   Bytes[nextByte] = empfangenes Byte;
   nextByte++;
   if( nextByte == 4 )
     nextByte = 0;
von Uwe K. (uwe_k60)


Lesenswert?

Das heisst also, ich erstelle ein Array Names:Bytes
dort kann ich von der UART mein HEX Signal Einbringen und jedes weitere 
HEXKombi wird dann in das nächtse Bytes geschrieben,also:

Bytes(1)
Bytes(2)
Bytes(3)
Bytes(4)

und das nächste das kommt überschreibt automatisch dann Bytes(1)???

Hoffe ich habe das richtig verstanden...smile... muss mich da erst genau 
durchkämpfen... aber das ist ein supergrosse Hilfe, ich bin super 
dankbar...

Hängen mit dem Kopf im Sand...

Danke Gruss Uwe
von Uwe K. (uwe_k60)


Lesenswert?

Hier habe ich unter anderem einen Tread und unser Programm:

Beitrag "Hilfe PORT D kann nicht 2x in einem Programm mit LCD genutzt werden."
von Karl H. (kbuchegg)


Lesenswert?

Uwe K. schrieb:
> Das heisst also, ich erstelle ein Array Names:Bytes
> dort kann ich von der UART mein HEX Signal Einbringen und jedes weitere
> HEXKombi wird dann in das nächtse Bytes geschrieben,also:
>
> Bytes(1)
> Bytes(2)
> Bytes(3)
> Bytes(4)
>

KAUF DIR EIN C BUCH!

In C wird bei 0 zu zählen angefangen. Ein Array mit 4 Elementen hat die 
Elemente Bytes[0], Bytes[1], Bytes[2], Bytes[3].
Zähl nach, sind 4 Stück!
Ein Bytes[4] existiert nicht.

> und das nächste das kommt überschreibt automatisch dann Bytes(1)???

was glaubst du, was

   nextByte++;
   if( nextByte == 4 )
     nextByte = 0;

macht und welchen Bezug das zum Ablegen der Bytes durch

   Bytes[nextByte] = empfangenes Byte;

hat.

> Hängen mit dem Kopf im Sand...

Du brauchst ein C-Buch!
Das Problem, mit dem du gerade 'kämpfst' ist mit dem Wissen der ersten 
50 Seiten C-Buch problemlos lösbar. Da fehlen dann noch 250 Seiten was 
du sonst noch wissen solltest.
von Uwe K. (uwe_k60)


Lesenswert?

Sorry...ok... hast recht... geb ja zu das einiges fehlt... darum frage 
ich ja hier denn das Problem ist, das ich es in 2 OWchen fertig haben 
muss...und na ja irgendwann geht nichts mehr... und da bleibt mir nur 
ehrlich zu sein und zu fragen... halt jemanden der sich damit 
auskennt... und ja ich weiss von 0 aus zählen, aber tut mir leid...mir 
raucht der kopf...

Sorry
von Karl H. (kbuchegg)


Lesenswert?

Uwe K. schrieb:
> Sorry...ok... hast recht... geb ja zu das einiges fehlt... darum frage
> ich ja hier

Das ist der falsche Weg!
Wir können dir hier nicht C von Grund auf beibringen. Das kann ein Buch 
wesentlich besser, weil es logisch aufgebaut ist und vom Einfachen zum 
Schwierigen in geordneter Folge vorgeht.

Mit anlassbezogenem Zusammenfragen von Halbwissen wirst du nie die 
Geheimnisse der Sprache ergründen. Da fehlt dir einfach viel zu viel.

(Sieht man auch im anderen Thread. Da sind Fehler drinnen, die dürfen 
einem Neuling nach der 5. Stunde Programmieren nicht mehr passieren. 
D.h. sie dürfen schon passieren, aber das darf für ihn dann kein 
Kopfzerbrechen mehr sein)
von xXx (Gast)


Lesenswert?

Uwe K. schrieb:

> Sorry...ok... hast recht... geb ja zu das einiges fehlt... darum frage
> ich ja hier denn das Problem ist, das ich es in 2 OWchen fertig haben
> muss...

Nein, das Problem ist, dass du zu spaet angefangen hast. Wohl lieber 
Parties gemacht, was?
von Uwe K. (uwe_k60)


Lesenswert?

Mh, also ich bin schon 33 Jahre alt und ich habe eine Familie, also mit 
Party hab ich nichts am Kopf...
Wir haben ein Projekt so und unser Programmierer ist schwer krank, somit 
müssen wir das jetzt fertig machen...

Und das bis max. 23.12.2011...

So und daher suchen wir uns in jede Richtung Hilfe... Das heisst wir 
durchkämmen alle Foren und versuchen mit dem bischen wissen was wir 
haben es zu schaffen...so und da ist uns jeder tip herzlich 
willkommen...

Die Idee mit dem Array bin ich gerade am einbinden, der rest weiss ich 
nicht ob das klappt mit dem Empfangen aber es muss... daher ist es für 
mich mehr als schwer, aber ich fummel mich dadurch und teste und 
probiere, nur dafür brauche ich ggf. hilfe, soetwas was du zu anfang 
gemacht hast,.. das ich nicht viel kann das weiss ich selber aber ich 
will nein ich muss es schaffen, nur wenn jeder mich nur darauf hinweisst 
das ich so nicht weiterkomme, dann ist das scheisse, ich weiss selber 
das es schwer wird, und auch das ich mit "halbwissen " nicht weit komme, 
aber ich komme immer schneller ans ziel, mit kleinen ideen...
danke
von Erich (Gast)


Lesenswert?

Ähhh, sorry,
aber mit diesem (deinem) nur sehr rudimentären Grundwissen über 
SW-Erstellung und uC (PIC) ... "mit kleinen ideen" ... "bis max. 
23.12.2011".
Hmmm.

Haste schonmal daran gedacht, professionelle Hilfe zu holen,
also jemanden mit Ahnung von der Sache gegen Bezahlung zu beacuftragen ?
von Uwe K. (uwe_k60)


Lesenswert?

Mh ja aber ich weiss nicht was das kostet, und wir haben kaum mittel 
dafür...aber glaube mir den gedanken hatten wir schon, die Platinen sind 
nächste woche da...so und dann muss es ran gehen... was kostet soetwas 
denn???Ganz ehrlich...
von Daniel V. (danvet)


Lesenswert?

Uwe K. schrieb:
> die Platinen sind
> nächste woche da...so und dann muss es ran gehen... was kostet soetwas
> denn???Ganz ehrlich...

Seid ihr sicher, dass die Platine wirklich funktioniert? Wenn noch nicht 
mal die Software steht, dann seid ihr (selbst wenn Euer Programmierer 
noch da wäre) ziemlich knapp dran.

2 Wochen Projektarbeit für eure Programmierung würde ich jetzt mal mit 
ca. 5000 Euro ansetzen. Ein Hobbyprogrammierer macht das sicher für 
weniger.
von Uwe K. (uwe_k60)


Lesenswert?

Gut die Hardware war mein Part und die sollte mit der Portbelegung 
passen... aber 5000 Euro, ne ich glaube das geht nicht so wirklich...


Hammer... dann muss es so klappen....
von Andreas (Gast)


Lesenswert?

Uwe K. schrieb:
> Wir möchten vom PC aus an den PIC 4Bytes schicken( immer 4 stck bei
> jeder änderung die passiert alles was nicht gebraucht wird wird genullt)

Hallo Uwe

Nur weil das so ein "ultrabeliebter" Anfängerfehler ist:

Das sind dann für den PIC auch wirklich VIER UNABHÄNGIGE BYTE. Also 
NICHT zwei 16 Bit Integer oder ein 32 Bit Integer, die ihr nur byteweise 
schickt ?

Ansonsten hast Du nämlich während der Übertragung plötzlich unsinnige 
Integers, während die "andere Hälfte" noch übertragen wird.

Das gleiche Problem entsteht, wenn die vier Byte nur als Packet 
verarbeitet werden dürfen (z.B. wenn eine Checksum dabei ist).

Wenn Du die SIO pollst entsteht das Problem nicht wenn Du erst 
weiterprocessed nachdem alles da ist. Ansonsten, oder wenn das in einer 
Interruptroutine passiert, dann kriegt ihr richtig Spass beim debuggen 
:/

Ich drück Euch die Daumen

Grüße
Andreas
von Uwe K. (uwe_k60)


Lesenswert?

Ne Ne wir wollen 4 Byte senden mit je 8 Bit...smile... und diese werden 
eingelesen ins array und von da aus starten wir dann ins jeweilige 
programm
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.