www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik pic page problem


Autor: dreg (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Master Snowman (snowman)
Datum:

Bewertung
0 lesenswert
nicht 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?!?

Autor: chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: C.T. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: dreg (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Severino R. (severino)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Master Snowman (snowman)
Datum:

Bewertung
0 lesenswert
nicht 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."

Autor: C.T. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.