PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Port auslesen



SebiTNT
10.07.2006, 13:50
Hallo!

Ich versuche mich seit sage und schreibe zwei Stunden daran, den Wert von PortB ins Arbeitsregister zu schreiben. Habe schon die wildesten Sachen ausprobiert. Kein Erfolg. Ich hatte vor längerer Zeit schon einmal mit PICs zu tun, und wollte jetzt wieder anfangen und nun verzweifle ich an dieser simplen Aufgabe! Ich hoffe Ihr seht meinen Fehler! Ich sage auf alle Fälle schon einmal herzlichen Dank im Vorraus! Im folgenden ist mein Quelltext:
list p=16f871
#include <P16f871.INC>
goto main
main
bsf STATUS, RP0 ; Bank 1
movlw B'11111111' ;
movwf TRISB ;
bcf STATUS, RP0 ; Bank 0
loop
movf PORTB,0
goto loop
end

Ich hoffe, Ihr könnt mir helfen, bin echt am verzweifeln. Auch spurt brachte mich nicht weiter.
greetz,

Sebi

PicNick
10.07.2006, 14:41
Dein Loop ist ja eigentlich recht übersichtlich. So blöd es klingt: woher weißt du, daß es nicht klappt ? Schreib doch das w-register wohin.

Sollte "Loop" nicht einen Dopelpunkt haben ?

SebiTNT
10.07.2006, 14:59
Hi!

Danke für die Antwort!
Ich nutze den PIC Simulator IDE und der zeigt mit den Inhalt des w-registers an. ´Beim initialisieren des Ports klappt die Anzeige und auch beim testen mit Beispielen von der Sprut-Homepage klappt das problemlos. Habe leider keine Ahnung, warum es bei diesem Programm nicht klappt. Auch wenn ich den Inhalt von W z.B. an PortC ausgeben will, klappt das mit vordefinierten Werten, nur halt nicht das Einlesen. Loop muss keinen Doppelpunkt haben, klappt auch so.
greetz,

Sebi

PicNick
10.07.2006, 15:14
Tja, ich hab meinen PIC-Betrieb weitgehend eingestellt, dadurch weiß ich nicht mehr, wie ich den Simulator dazu bringe, die Pins von PORTB irgendwie zu simulieren. Ohne dem liegt natürlich immer NULL dran.

Werd' ich nicht viel helfen können, tut leid

Mobius
11.07.2006, 00:46
Also das, was du brauchst ist der Stimulus Controll von MPlab um digitale Signale an den Eingängen des Microcontroller zu simulieren. Also, wenn dir ein (relativ) einfach geschriebener englischer Text keine Probleme bereitet, würde ich dir als erste Anlaufstelle diese (http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=2123¶m=en022520) Seite von Microchip empfehlen. Ungefähr bei der Hälfte wird sehr gut auf die Nutzung des Stimulus Controlls (erreichbar unter Debugger -> Stimulus Controler -> New Scenario) eingegangen.
Naja, so viel zur Theorie, der Rest ist eigentlich nur noch trial and error, bis man sich in die Nutzung dieses Moduls eingearbeitet hat.

Naja, viel kann ich leider auch nicht sagen, denn ich benutze es fast nie (hab mir vor kurzen nen ICD2-Clon aufgebaut und man gewöhnt sich schnell an den neuen Luxus von so nem Ding :) ).
MfG
Mobius

JayCool
17.07.2006, 06:41
(hab mir vor kurzen nen ICD2-Clon aufgebaut und man gewöhnt sich schnell an den neuen Luxus von so nem Ding).
MfG
Mobius


Hi Mobius,

kannst Du mir verraten, wo man eine Bauanleitung von so' nem ICD2-Clon herbekommen kann??? Sollte möglichst ohne SMD-Bauteile sein!!!

Greetz, Jan

Mobius
17.07.2006, 12:20
Also, ich hab einfach diesen (http://www.stolz.de.be/) da aufgebaut (okay, ich hab da noch die drei LEDs von da (http://www.nebadje.org/doku.php?id=neblab:icd2clone) mit reingenommen und einen Teil des Interfaces, damit der ICD2 die Versorgungsspannung des Targets abschalten kann), alles schön auf eine Streifenplatine. War nicht einmal sooo schwierig gewesen, einzig das Problem mit dem Bootloader, wenn man einen PIC16F877A benutzt war ein wenig nervig aber dieser (http://www.mikrocontroller.net/forum/read-1-139417.html) und dieser (http://www.edaboard.com/viewtopic.php?t=97955&postdays=0&postorder=asc&start=0&sid=174b4d7b2700145eddb9740fd2ef7f0b) Thread (diese Seite hat auch einige weitere Threads zu dem Thema) helfen weiter.

Alles in allem ist das eine sehr minimalistische Herangehensweise (die Schaltpläne für den echten ICD2 sind von Microchip kostenlos erhältlich), aber sie funktioniert und nachdem man sich angewöhnt hat, dass man z.B.: die Programmierspannung zuerst manuell einstellen muss, geht das auch gut von statten.
MfG
Mobius