Forum: Mikrocontroller und Digitale Elektronik pic page problem


von dreg (Gast)


Lesenswert?

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

von Master S. (snowman)


Lesenswert?

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?!?

von chris (Gast)


Lesenswert?

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.

von C.T. (Gast)


Lesenswert?

> 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.

von dreg (Gast)


Lesenswert?

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

von Severino R. (severino)


Lesenswert?

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.

von Master S. (snowman)


Lesenswert?

> 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."

von C.T. (Gast)


Lesenswert?

> ... 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
Noch kein Account? Hier anmelden.