- 12V Akku mit 280 Ah bauen         
Seite 3 von 5 ErsteErste 12345 LetzteLetzte
Ergebnis 21 bis 30 von 42

Thema: PIC...... und viele Fragen.

  1. #21
    Benutzer Stammmitglied
    Registriert seit
    01.01.2005
    Beiträge
    79
    Anzeige

    Powerstation Test
    Übrigens..

    Die "Config Geschichte" gibts sehr wohl "zum Anklicken in MPLAB"..

    Ich benutze die Version 7.6
    Dort gehst Du im geöffneten Projekt auf Configure (Oben in der Leiste) und dann auf Configuration Bits.
    Nun machst Du das Häckchen weg bei: Configuration Bits set in code.

  2. #22
    Benutzer Stammmitglied
    Registriert seit
    01.01.2005
    Beiträge
    79
    Achso.. Nochwas:
    Es ist sehr hilfreich eine LED zum debuggen zu benutzen.
    Das bedeutet, dass man eine LED an irgendein freien I/O hängt und diese an bestimmten Stellen im Programm blinken lässt.
    So kannst Du Dich davon überzeugen wie weit das Programm abgearbeitet worden ist oder wo es hängt.
    In C kann man zum Beispiel eine Funktion definieren debug_led(); , die man je nach Anforderung irgendwo im Code plaziert.


    Zu Deinem Hauptproblem:
    Kannst Du bitte einen Schaltplan posten wie Du was an den PIC gehängt hast?
    So kann man sich besser drüber unterhalten und es schleichen sich keine Missverständnisse rein.

  3. #23
    Neuer Benutzer Öfters hier
    Registriert seit
    25.07.2007
    Beiträge
    16
    Zitat Zitat von stowoda
    Die "Config Geschichte" gibts sehr wohl "zum Anklicken in MPLAB"..
    Das hat er ja gesagt.
    Ihm gings darum, die IO-Port-Geschichte irgendwo zum anklicken zu haben

    Im übrigen würd ich sagen, sollte er ne Endlosschleife machen und einfach immer PortA auf PortB schreiben, so z.b.

    Code:
    LOOP      MOVFW        PORTA
                    MOVWF       PORTB
                  GOTO         LOOP
    Wie hast du eigentlich PortA beschaltet? Wenn du nämlich die Pins per Button auf Low ziehst, musst du PortB nachher invertieren, würd ich sagen

    Achja, die Config zusammenklick geschichte hat bei mir noch nie wirklich funktioniert...
    Bzw. wenn ich die CONFIG im code setze, dann hab ich sie danach im hex file, wenn ich sie mit diesem zusammenklickassistenten benutz, dann nicht

  4. #24
    Benutzer Stammmitglied
    Registriert seit
    01.01.2005
    Beiträge
    79
    Da verlangt er ein wenig zu viel

    Ich wette, er schaltet jetzt die Komparatoren an PORTA ab und beseitigt das Problem mit dem MCLR Pin und siehe da, es geht ein Licht auf.

  5. #25
    Benutzer Stammmitglied Avatar von Driona
    Registriert seit
    01.08.2007
    Ort
    Meckenheim
    Alter
    48
    Beiträge
    45
    Also hier grad der "Schaltplan", sofern man dieses einfache Gedöns so nennen kann...
    Bild hier  

    Und dank Stowoda´s Hilfe das Listing, das fast komplett läuft:
    Code:
    ; Auswahl PIC-Typ
    		LIST P= 16F628A
    		INCLUDE "P16F628A.INC"
    
    		RADIX DEC
    		ORG  0X5
    
    ; Variablen
    AUX1_L 	EQU  0X20
    AUX1_H 	EQU  0X21
    AUX2_L 	EQU  0X22
    AUX2_H 	EQU  0X23
    AUX 	EQU  0X24
    S0 		EQU  0X25
    VAR01 	EQU  0X26
    
    ; Init-Einstellungen
    Init    clrf 	PORTA 			;Initialize PORTA by setting output data latches
    		movlw 	0x07			;Turn comparators off and
    		movwf 	CMCON 			;enable pins for I/O functions
    		bsf		STATUS, RP0		;In Block 1 springen
    		movlw	B'00000000'		;PortB alle Output
    		movwf	TRISB
    		bcf		STATUS, RP0		;In Block 0 zurückspringen
     
    ; Hauptprogramm
    		MOVF   	PORTA, W
    		MOVWF  	VAR01
    		MOVF   	VAR01, W
    		MOVWF  	PORTB
    	END
    Nur RB4 will noch nicht.... RB0 bis RB3 und RB5 bis RB7 machen jetzt, was sie sollen !

  6. #26
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    72
    Beiträge
    11.077
    Hallo!

    Ich hoffe, dass der Artikel im Wiki nicht schaden kann:

    https://www.roboternetz.de/wissen/in.../PIC_Assembler

    MfG

  7. #27
    Benutzer Stammmitglied
    Registriert seit
    06.06.2007
    Beiträge
    30
    Hallo Driona,

    leider kann ich mich dir nur anschließen, daß ASM etwas kompliziert ist die einzelnen Schritte zu verstehen. Es werden immer wieder Einzelschritte mit den selben bzw. ähnliche Befehlen ausgeführt und dabei kann man schnell die Kontrolle verlieren.
    Nach langem hin und her habe ich mich für PIC Basic entschieden und bin sehr zufrieden damit. Für mich ist Basic einfach verständlicher und übersichtlicher. Ich benutze das MicroCodeStudio und bin seit etwa 2 Monaten dabei und schon ein paar Projekte entworfen.
    z.B.
    Anstatt
    AUX1_L EQU 0X20
    AUX1_H EQU 0X21
    AUX2_L EQU 0X22
    AUX2_H EQU 0X23
    AUX EQU 0X24
    S0 EQU 0X25
    VAR01 EQU 0X26

    Init MOVLW 0xff ; Port A auf Input
    MOVWF TRISA
    clrf TRISB ; Port B OutputOutput

    MOVF PORTA, W
    MOVWF VAR01
    MOVF VAR01, W
    MOVWF PORTB
    END

    gibst du unter PICBASIC nur
    TRISA = %00111000 ' Kommentar : RA0-2 OUTPUT, RA3-5 INPUT, RA6+7 OUTPUT
    TRISB = %11000000 ' Kommentar : RB0-5 OUTPUT, RB 6+7 INPUT
    ein. Die 1er stehen für Inputs und die 0en für Outputs. Demnach ist von rechts nach links die PinPORT Nr am PIC.
    Schau mal im Netz ob du irgendwelche Handbücher über MicroCodeStudio findest. Ist echt total easy und fast alles realisierbar, und Einbußen hast du fast keine, da die Files sowieso in Hex umgewandelt werden.

    Für dein obiges Beispiel würde das dann so aussehen:

    DEFINE OSC 4 ' 4MHz
    CMCON = %111 ' oder einfach 7 ; Komparatoren und A/D abschalten wenn vorhanden
    TRISA = %11111111 ' oder einfach 255
    TRISB = %00000000 ' oder einfach 0

    main:
    PORTB = PORTA
    GOTO main

    Anstatt 100k würde ich 10k nehmen oder die Eingänge mit Schaltern versehen mit Pullup oder Pulldown Widerständen.

  8. #28
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    07.12.2005
    Ort
    Euskirchen-Großbüllesheim
    Alter
    74
    Beiträge
    2.063
    Hallo Driona, hallo Robbersoft,
    Assembler ist nach der Maschinensprache (das sind diese 0x3F, 0xC9, 0x45, 0x.....) eine sehr maschinen-nahe Programmiersprache, mit der jedes einzelne Bit in jedem Register in der Maschine, in diesem Fall der PIC, angesprochen werden kann.
    Die Frage für euch beide, was möchtet ihr ?
    Eine Programmiersprache erlernen, um Anwendungen zu programmieren,
    oder wissen, was der PIC macht bzw. reagiert.
    Letzteres ist das Schwierigste, weil es voraussetzt, daß einem Struktur und Funktionen des PIC, bekannt sind.
    Dann muß das 'Innenleben' des PIC in Verbindung mit Assembler (und nur damit geht es) erforscht und erlernt werden.
    Wer nur programmieren möchte, der muß die Funktionen des PIC nicht wissen, sondern die Befehle kennen, mit denen ein Taster abgefragt und eine LED ein- / ausgeschaltet wird. Den Rest übernimmt der Compiler.

    Driona hat ja schon ganz gut angefangen, aber vermutlich nicht die nötige Ruhe.
    Du solltest etwas im Datenblatt (PDF-Datei) blättern und die interne Struktur des PIC mal überschlägig anschauen. Die Blockbilder helfen da am besten weiter. Nicht alles auswendig lernen, aber vieleicht ein wenig merken, wo in dem Datenblatt was beschrieben ist.
    Dann zur Abwechslung mal am Ende des Datenblattes die Assembler-Befehle anschauen, wie die heißen und was die machen. Nicht auswendig lernen, nur wissen, wo was steht. Nachschauen wirst Du nämlich noch häufiger müssen. Auch bei mir liegt heute noch das PIC-Buch beim Programmieren neben mir.
    Vergiß nicht, daß die I/Os sehr flexibel sind; sie können Eingang sein (Reset-Zustand), Ausgang oder als Sonderfunktion initialisiert werden (serieller Pin, Zähler-Eingang, PWM-Ausgang, ....).
    Dann mußt Du nur noch die Stolperfallen kennen, daß nämlich die Funktions-Register (F) auf bis zu 4 Register-Bänken untergebracht sind und auf diese Bänke auch umgeschaltet werden muß; und wieder zurück auf Bank 0, weil da die gebräuchlisten Register sind. Einige Register sind auf allen 4 Bänken erreichbar. Das findest Du alles im Datenblatt auf den ersten Seiten.
    Damit es mit Deinem Programm erst einmal weiter geht, da gibt es nämlich noch eine Stolperfalle: Analogeingänge bzw. bei einigen PICs Komperator-Eingänge. Die sind ausgerechnet am Port A. Diese Analog-Funktion muß erst einmal auf Digital-I/O umgeschaltet werden, dann noch auf Eingang (ist nach Reset so) und dann sind es auch Eingänge.
    Dann sollte das auch funktionieren.
    Schau Dir mal im Datenblatt das Blockbild für I/Os vom Port A an, da wird das beschrieben sein.
    Viel Spaß .... bis zur nächsten Stolperfalle
    MfG Karl-Heinz
    HobbyElektronik hier klicken ....

  9. #29
    Benutzer Stammmitglied Avatar von Driona
    Registriert seit
    01.08.2007
    Ort
    Meckenheim
    Alter
    48
    Beiträge
    45
    Ich bin ja mal angetan über diesen Beitrag..... so langsam bewegen wir uns in die richtige Richtung.

    Ich setze einfach mal den Text voran und reagiere einfach darauf *GGGG*

    ..... in jedem Register in der Maschine, in diesem Fall der PIC, angesprochen werden kann.
    Die Frage für euch beide, was möchtet ihr ?

    Nun, ich dachte eigentlich, daß ich das oben ganz zu Anfang schon erwähnt hatte. Ich kenne das von der C-Control (bitte nicht auslachen) und von Industrie-SPS her... Lade Eingang X... rechne irgendwas... mache am Ausgang Y dies und das...
    Und dazu ist es eigentlich total egal, wie die Bits von einem Register ins andere geschoben werden... Hauptsache an den Ports passiert das, was ich haben will.

    Eine Programmiersprache erlernen, um Anwendungen zu programmieren,
    oder wissen, was der PIC macht bzw. reagiert.

    Also für mich: Das erste davon !!! Keine Ahnung, ob Robbersoft das anders sieht.

    Wer nur programmieren möchte, der muß die Funktionen des PIC nicht wissen, sondern die Befehle kennen, mit denen ein Taster abgefragt und eine LED ein- / ausgeschaltet wird. Den Rest übernimmt der Compiler.
    Genau darum gehts, mehr wollte ich eigentlich gar nicht...

    Driona hat ja schon ganz gut angefangen, aber vermutlich nicht die nötige Ruhe. Du solltest etwas im Datenblatt (PDF-Datei) blättern und die interne Struktur des PIC mal überschlägig anschauen. Die Blockbilder helfen da am besten weiter. Nicht alles auswendig lernen, aber vieleicht ein wenig merken, wo in dem Datenblatt was beschrieben ist.
    Das Datenblatt hat (in ausgedruckter Form) 178 Seiten.... und wenn man gar nicht weis, WAS darin "wichtig" ist und was nicht, ist das doch ganz schön happig...


    Vergiß nicht, daß die I/Os sehr flexibel sind; sie können Eingang sein (Reset-Zustand), Ausgang oder als Sonderfunktion initialisiert werden (serieller Pin, Zähler-Eingang, PWM-Ausgang, ....).
    Kann das die (oben als Beispiel genommene) C-Control nicht teilweise auch ?

    Damit es mit Deinem Programm erst einmal weiter geht, da gibt es nämlich noch eine Stolperfalle: Analogeingänge bzw. bei einigen PICs Komperator-Eingänge. Die sind ausgerechnet am Port A. Diese Analog-Funktion muß erst einmal auf Digital-I/O umgeschaltet werden, dann noch auf Eingang (ist nach Reset so) und dann sind es auch Eingänge.
    Dann sollte das auch funktionieren.
    Schau Dir mal im Datenblatt das Blockbild für I/Os vom Port A an, da wird das beschrieben sein.
    Viel Spaß .... bis zur nächsten Stolperfalle

    Hmm, so langsam hab ich das Gefühl, ich hätte mir damals besser ne EasyStep von Frenzel&Berg (Software ähnlich der Step5 SPS) , ne neuere C-Control oder nen anderen Prozessor geholt....
    Wie gesagt, ich wollte nur einen Baustein, dem ich z.B. sage "Wenn an Pin A und Pin B (z.B. CNY70 Reflexkoppler zur Linienerkennung) kein Signal kommt, Pin C und D eingeschaltet (rechter und linker Motor).... wenn A kommt, fahr nen rechtsbogen.... wenn B kommt, nen Linksbogen....
    fertig aus...
    Gut, das ganze halt etwas schöner geschrieben, aber ich finde dazu muss und will ich überhaupt nicht wissen, in welchen Bänken was wo warum steht....

  10. #30
    Benutzer Stammmitglied
    Registriert seit
    06.06.2007
    Beiträge
    30
    @Kalledom

    genau so sieht es aus. Man sollte zunächst wissen, was man wissen möchte =D>
    Entweder wie ein PIC funktioniert oder wie ich ihn programmiere. Das wird wahrscheinlich das größte Problem bei Neueinsteigern sein, die eigentlich nicht wissen, was sie wollen. Für mich persönlich ist nur das Ergebnis wichtig. Klar ist man im Vorteil, wenn man beides weiß. Aber auch ich habe komplexe Aufgaben wenn vielleicht über "Umwege" das erreicht, was ich mir vorgestellt habe. Ich bin momentan darauf fixiert, meine Codes noch zu optimieren. Denn ich habe festgestellt, daß jedes BIT zählt.
    Das sehe ich an meinem aktuellen Projekt in dem ich Lenkradinterfaces scanne und die Remotesignale emuliere. Ganz schön heftig, was man da an wertvollen Bits sparen kann, wenn man wiederholte Sequenzen als Sprungroutinen nutzt.

    Gruß RobberS

Seite 3 von 5 ErsteErste 12345 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Solar Speicher und Akkus Tests