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.