- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 4 von 4

Thema: Pic führtprogramm nicht korrekt aus

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    29.03.2006
    Beiträge
    10

    Pic führtprogramm nicht korrekt aus

    Anzeige

    E-Bike
    Hallo,

    In meinem Programm steht etwa folgendes:
    buffer[0]=portD
    buffer[1]=portD
    buffer[2]=portD
    ...
    buffer[749]=portD


    in assambler sieht das dann so aus:

    $00F4 $5083 MOVF PORTD, W, 0
    $00F6 $6F61 MOVWF main_global_buffer_2, 1
    $00F8 $5083 MOVF PORTD, W, 0
    $00FA $6F62 MOVWF main_global_buffer_3, 1


    Das funktioniert soweit auch ganz gut.

    wenn ich aber das nicht bis 749 programmiere sondern z.b. bis 1024 dann macht der pic nur noch irgendetwas chaotisches, was genau kann ich nicht sagen. auch wenn ich dann in ein 2. array speichere macht der pic nicht das was ich programmiert habe.

    Woran kann das liegen?

    MfG Cavorca

    P.S. Ist das richtig: wenn der PIC mir 40 MHz läuft wird 5 mio mal/sec der wert an portD abgespeichert? Oder braucht der PIC für einen der Befehle länger?

  2. #2
    Erfahrener Benutzer Roboter Genie Avatar von BMS
    Registriert seit
    21.06.2006
    Ort
    TT,KA
    Alter
    33
    Beiträge
    1.192
    Hi

    ...wäre vielleicht ganz nützlich, wenn du deinen PIC-Typ angeben würdest ^^

    ansonsten:
    wenn ich das richtig verstanden habe, hast du ein eindimensionales array mit 749 bzw. 1024 Einträgen.
    In jeden eintrag wird "portd" hineingeschrieben , soweit richtig?
    ich gehe mal davon aus, das jeder eintrag deines arrays ein byte verbraucht (wie man da wörter reinschreiben soll ist mir unklar-wenn dann nur *einen* buchstaben im ascii-code)
    ...Und wahrscheinlich hat dein PIC nicht genug RAM, um dein ganzes array zu speichern (das wären ja 749/1024 bytes ram! zum vergleich: mein pic 16f74 hat nur 192 Bytes RAM)

    Edit: Für ein 2. array hat der pic auch keinen platz, da ja *jeder* Eintrag 1 Byte verschlingt, egal in welchem array!!

    Gruss
    BMS

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    29.03.2006
    Beiträge
    10
    klar, pic ist:18F4680 (wollte ich eben eigentlich auch engeben habs aber vergessen)

    und ja 749 mal bzw 1024 mal ein byte.
    Der pic hat 3328 bytes ram, da liegt also nicht das problem, laut compiler ist auch noch sehr viel frei.

    das kann auch aus einem anderen grund nicht das problem sein:

    wenn ich es in einer schleife mache funktioniert es ohne probleme bis 3000
    also 3000 mal nacheinander daten von portd in das array schreiben.
    das problem an der schleife ist nur das sie wirklich extrem viel langsamer ist als wenn man alle befehle seperat nacheinander schreibt. deshalb mache ich es so und nicht mit schleife.
    ich bin ratlos.
    Watchdog Timer ist in der konfiguration eigentlich deaktiviert. kann der vielleicht doch irgendwie aktiviert sein? also per software?

    MfG Cavorca

    Edit: Das problem ist halt auch, dass der pic nicht nur falsche Daten speichert sondern total unkontrolloiert irgend einen blödsinn macht.

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    26.03.2006
    Ort
    WOB
    Beiträge
    630
    Gruß Thomas \/

    Alles über AVR, PIC und CAN
    blog.cc-robotics.de

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiFePO4 Speicher Test