Hallo, seit einiger Zeit muss ich mich kommerziell mit PIC's beschäftigen. Vorher habe ich mich ausschliesslich Controllern der 8031er Serie (8051, DS80C320, XC164) beschäftigt. Nun setzen wir den 16F887 ein, das ASM-Programm hat schon eine ansehnliche Länge erreicht. Mir ist folgendes passiert: Innerhalb eines Unterprogramms Sprung mit falscher Page. Zufällig auf ein return-Befehl, der dann wieder in der main-schleife endete. Somit ist es nicht zu einer Fehlfunktion gekommen, jedoch Teile des Unterprogramms wurden nicht durchlaufen. Allmählich bin ich der Meinung, dass man PIC's bei Umfangreichen Programmen gar nicht kommerziell einsetzen darf, weil man nicht feststellen kann, ob page-Fehler vorliegen. Wie stellt ihr in vergleichbarer Situation (kommerzieller Einsatz) SICHER, dass KEIN Page-Fehler im Programm vorliegt? Gruss dreg
kurze antwort: ich schreibe die programme in C. sollte der controller dadurch zu sehr an geschwindigkeit leiden, wird halt ein 50cts teurer der 18er reihe genommen ;-) ps bezüglich "kommerziell": ich stelle mir die frage, ob es wirtschaftlich überhaupt möglich ist, einen so alten und überholten uC noch in ASM programmieren zu lassen - OK, ich kenne die umstände nicht, die es erforderlich machen. aber C verkürzt wesentlich die entwicklungszeit, die höheren uC von Microchip sind grösser und schneller, für C-optimiert und fast nicht teurer; warum also immer noch bei den 16er PICs bleiben?!?
Ich setze sie gerne für Projekte ein, wegen ihres geringen Preises, jedoch sind es 20 Pin oder weniger, darüber eigentlich nicht, da es sich nicht mehr auszahlt, oder nur in Ausnahmen. Für dein Problem, da gibt es den Pseudobefehl Pageselec. Natürlich muß man bei den 16f die Unterprogramme usw Planen, ev. auch mit einem gosub xxx und dort ein goto xxx_ , oder man verwendet ein Pageselec.
> Wie stellt ihr in vergleichbarer Situation (kommerzieller Einsatz) > SICHER, dass KEIN Page-Fehler im Programm vorliegt? Strukturiert programmieren oder einen PIC18Fxxxx benutzen! Gelegentlich programmiere ich auch noch einen PIC16, wobei die Programme meist auch nicht gerade klein sind (50 Seiten Assembler-Listing und mehr). Gerade die Page-Fehler sind dabei sehr leicht zu finden.
Hallo, @ Master Snowman > ich schreibe die programme in C. Ich war jung und brauchte das Geld.... Die Alternative war, ein ASM-Programm von einem nicht mehr anwesenden Kolegen zu übernehmen. Da habe ich lieber neu angefangen. C ist aber auf jeden Fall die bessere Wahl. > wirtschaftlich überhaupt möglich ist, einen so alten und überholten uC noch in ASM programmieren zu lassen Sparen, koste es was es wolle.... Mit der Anschaffung des Compilers sind ja auch investionen verbunden.... @ C.T. >> Wie stellt ihr in vergleichbarer Situation (kommerzieller Einsatz) >> SICHER, dass KEIN Page-Fehler im Programm vorliegt? > Strukturiert programmieren oder einen PIC18Fxxxx benutzen! Hm, ich denke schon, dass ich strukturiert programmiere. Das Problem ist, dass niemend von flüchtigkeitsfehlern frei ist. Meinst du PIC18Fxxxx UND C oder gibt es dort die pagetierung nicht? > Gerade die Page-Fehler sind dabei sehr leicht zu finden. Das das nicht der Fall ist habe ich ja gerade erlebt. Das Programm lief. Das Teile des Unterprogramms nicht durchlaufen wurden, fiel nicht auf, weil die Bedingungen (momentan) nicht relevant waren. Bei JEDEM Sprung und call sicher zu sein die richtige bank oder page eingeschaltet zu haben, halte ich für unmöglich. Das das Programm läuft (Funktionstest) zeigt eben nicht alle Fehler an. Solange es kein Tool zum überprüfen von Pagefehlern in ASM gibt, denke ich, wird es Pagefehler geben. Wie macht es eigendlich ein Compiler? Wird dort die Page vor JEDEM call und sprung explizit eingestellt? Grus dreg
dreg wrote:
> Das das Programm läuft (Funktionstest) zeigt eben nicht alle Fehler an.
Auch ein Test muss sorgfältig geplant werden und nicht nur den
häufigsten Programmablauf, sondern auch Extremfälle berücksichtigen.
Denn unabhängig davon, ob ein Unterprogramm wegen Paging-Fehlern
aufgerufen oder eben nicht aufgerufen wird, können sich ja ganz andere
Fehler im Unterprogramm befinden.
> Mit der Anschaffung des Compilers sind ja auch investionen verbunden
MPLAB und C18 von Microchip sind kostenlos ;-) wenn du die
lizenzbedingungen durchliest, wirst du sehen, dass die
student/evaluation-verision geschäftlich genutzt werden darf - allerding
steht nach 60 nur noch eine code-optimierungsmethode zur verfügung.
"Notwithstanding the foregoing, if You downloaded the "Student Edition"
of the Software from the web, You may install and use such version of
the Software on an unlimited number of computers for commercial or
educational use."
> ... oder gibt es dort die pagetierung nicht? Bei den PIC18Fxxxx muß das Programm nicht mehr auf mehrere Pages aufgeteilt werden. Es gibt nur noch eine Page! Auch lassen sich die PIC18F deutlich einfacher debuggen als die auf einer älteren Architektur basierenden PIC16. Vielleicht solltest Du mal über einen Umstieg auf die moderneren PICs nachdenken. Zu fast allen PIC16-Typen findest Du übrigens einen pinkompatieblen PIC18F.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.