- Labornetzteil AliExpress         
Seite 1 von 5 123 ... LetzteLetzte
Ergebnis 1 bis 10 von 42

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

  1. #1
    Benutzer Stammmitglied Avatar von Driona
    Registriert seit
    02.08.2007
    Ort
    Meckenheim
    Alter
    49
    Beiträge
    45

    PIC...... und viele Fragen.

    Anzeige

    Praxistest und DIY Projekte
    Guten Tag zusammen,

    Ich hab da in Bezug auf PIC und Software ein paar kleine Fragen, die ihr mir sicher recht schnell beantworten könnt, und dann kann dieser Thread auch sicher schnell "nach unten durchgeschoben" werden....

    Also, ich hab den Picstart-Plus damals in so ner "ich will Prozessor programmieren"-Phase gekauft.... lange her.

    Inzwischen ist mir die Schachtel mit dem Programmiergerät wieder in die Hände gefallen und nach etwas Suchen, bin ich auch auf dieses Forum gestossen.

    Wenn ich mir Assembler so ansehe, bekomme ich Bauchweh und würde das Programmiergerät am liebsten wieder weglegen. Genau das soll aber nicht passieren *GGGG*

    Basic ? C ? C++?
    Mit welcher Programmiersoftware programmiert ihr so rum ?
    Ist C oder C++ schwer zu lernen ?

    Könnt ihr mir verständliche Bücher empfehlen, die den "Einstieg" einigermassen erträglich machen ?

    Falls weitere Fragen auftauchen, werd ich die bei Gelegenheit noch beifügen.

    Gruß
    Alex

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    30.09.2006
    Ort
    Hamburg
    Alter
    42
    Beiträge
    1.013
    Also ich persönlich benutze ASM infos dazu findest du auf sprut.de

    Andere alternativen wehren für C: css, hitec-c, cxx5 und noch einige andere.
    Grafisch gibt es: ktechlab(flowchat), Parsic
    und dann hatte ich irgentwo noch basic und pascal gesehen.
    Legastheniker on Bord !

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    01.01.2005
    Beiträge
    79
    Ich finde, dass Du asm lernen solltest bevor Du anfängst einen PIC in einer Hochsprache zu programmieren.
    Natürlich musst Du kein Profi werden in Assembler, um jedoch den Microcontroller zu verstehen wäre es von Vorteil einige Programme in asm zu schreiben.
    Danach fällt es Dir leichter zum Beispiel in C zu programmieren.

    Enige Routinen müssen sogar in asm geschrieben werden, vor allem bei zeitkritischen Vorgängen.
    Eine Hochsprache erzeugt einen Code der oft viel zu lahm ist für eine gegebene Anwendung.

  4. #4
    Benutzer Stammmitglied Avatar von Driona
    Registriert seit
    02.08.2007
    Ort
    Meckenheim
    Alter
    49
    Beiträge
    45
    Also heisst es, Assembler (ASM ?) lernen ??

    MP-LAB ist ja schliesslich dabei gewesen...

    Naja, dann muss ich da wohl durch.

    Gibts es denn da ein paar Tips für leicht verständliche Bücher oder so ?

    Hab da eben auf der Sprut-Seite noch was gesehen.......
    interner Oszillator (z.B. 16F62x 16F62xA 12F6xx und andere) (INTRC bzw. INTOSC)

    Im INTRC-Mode wird ein interner 4-MHz-Oszillator verwendet, der leider nicht sehr stabil ist (3,65 ... 4,28 MHz). Dafür benötigt er keinerlei externe Bauelemente, und die OSC-Pins können als I/O-Pins verwendet werden.
    Da ich grad nächste Woche ein paar 16F628A bekomme.... heisst das, daß ich im Grunde gar keinen externen Oszillator anschliessen muss und das Ding läuft trotzdem ??
    Wär ja cool.

    Ich sag ja, bin kleiner Anfänger, aber mit Eurer Hilfe werd ich das noch ändern.

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    01.01.2005
    Beiträge
    79
    www.sprut.de

    Ist besset als alle mir bekannten Bücher in deutscher Sprache.

    Tipp:
    Fang am besten an Dich mit der Konfiguration (Anfangseinstellung) des PIC anzufreunden.
    Da wären: PWRTE, WDT, OSC, CODEPROTECT

    Dann solltest Du versuchen eine LED einzuschalten, blinken zu lassen, ein Lauflicht programmieren.


    Unter Lernbeispiele bei sprut findest Du einen leichten einstieg.
    Natürlich wäre ein Klick auf Grundlagen ebenso ratsam.

  6. #6
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    07.12.2005
    Ort
    Euskirchen-Großbüllesheim
    Alter
    74
    Beiträge
    2.063
    Hallo,
    vielleicht hilft Dir auch dieser oder dieser Link.
    MfG Karl-Heinz
    HobbyElektronik hier klicken ....

  7. #7
    Benutzer Stammmitglied Avatar von Driona
    Registriert seit
    02.08.2007
    Ort
    Meckenheim
    Alter
    49
    Beiträge
    45
    Jetzt seh ich mir einen Programmcode nach dem anderen an und bin immer noch kein Stück weiter.....

    Entweder denke ich zu "logisch" oder ich bin einfach nur zu blöd dazu.

    Ich habe beruflich SPS programmiert, hab schon ein bisschen was mit C-Control gemacht und versuche in den Programmen immer noch sowas wie logik zu sehen...

    Load I 0.1 (Lade Eingang 0.1)

    If....then
    goto
    xor.....

    Alles Dinge, die ich "übersetzen" kann und darin Sinn sehe...

    Bei Assembler find ich nicht mal ansatzweise sowas...

    Ich sehe bei Sprut zum Beispiel gar nix von Include...
    irgendwo hab ich dann noch "include irgendwas.H" gesehen, woanders sehe ich "include irgendwas.INC"

    Ich blicks nicht mehr...

    Und ich hab immer noch nix gefunden, wie ich beim 16F628A den internen Oszillator aktiviere, bzw nutze...

    Muss ich dann da schreiben
    Code:
    list P=16f628a, E=1, R=DEC	; Prozessortyp, Errorlevel und Zahlenformat
    include "P16F628A.INC"	; Registerdefinitionen einbinden
    errorlevel	1		; Meldungen ignorieren
    __CONFIG INTRC_OSC
    ???

  8. #8
    Benutzer Stammmitglied
    Registriert seit
    01.01.2005
    Beiträge
    79
    Moin moin.

    Hier mal ein Beispiel für deinen PIC:

    __config b'10000100011000'

    So müsste er den Internen Oszillator benutzen.
    (bit 0 ist das erste von rechts)


    bit 13 bit 0
    bit 13: CP: Flash Program Memory Code Protection bit(2)
    (PIC16F648A)
    1 = Code protection off
    0 = 0000h to 0FFFh code-protected
    (PIC16F628A)
    1 = Code protection off
    0 = 0000h to 07FFh code-protected
    (PIC16F627A)
    1 = Code protection off
    0 = 0000h to 03FFh code-protected
    bit 12-9: Unimplemented: Read as ‘0’
    bit 8: CPD: Data Code Protection bit(3)
    1 = Data memory code protection off
    0 = Data memory code-protected
    bit 7: LVP: Low-Voltage Programming Enable bit
    1 = RB4/PGM pin has PGM function, low-voltage programming enabled
    0 = RB4/PGM is digital I/O, HV on MCLR must be used for programming
    bit 6: BOREN: Brown-out Reset Enable bit (1)
    1 = BOR Reset enabled
    0 = BOR Reset disabled
    bit 5: MCLRE: RA5/MCLR/VPP Pin Function Select bit
    1 = RA5/MCLR/VPP pin function is MCLR
    0 = RA5/MCLR/VPP pin function is digital Input, MCLR internally tied to VDD
    bit 3: PWRTE: Power-up Timer Enable bit (1)
    1 = PWRT disabled
    0 = PWRT enabled
    bit 2: WDTE: Watchdog Timer Enable bit
    1 = WDT enabled
    0 = WDT disabled
    bit 4, 1-0: FOSC<2:0>: Oscillator Selection bits(4)
    111 = RC oscillator: CLKOUT function on RA6/OSC2/CLKOUT pin, Resistor and Capacitor on RA7/OSC1/CLKIN
    110 = RC oscillator: I/O function on RA6/OSC2/CLKOUT pin, Resistor and Capacitor on RA7/OSC1/CLKIN
    101 = INTOSC oscillator: CLKOUT function on RA6/OSC2/CLKOUT pin, I/O function on RA7/OSC1/CLKIN
    100 = INTOSC oscillator: I/O function on RA6/OSC2/CLKOUT pin, I/O function on RA7/OSC1/CLKIN
    011 = EC: I/O function on RA6/OSC2/CLKOUT pin, CLKIN on RA7/OSC1/CLKIN
    010 = HS oscillator: High-speed crystal/resonator on RA6/OSC2/CLKOUT and RA7/OSC1/CLKIN
    001 = XT oscillator: Crystal/resonator on RA6/OSC2/CLKOUT and RA7/OSC1/CLKIN
    000 = LP oscillator: Low-power crystal on RA6/OSC2/CLKOUT and RA7/OSC1/CLKIN
    In diesem Register kannst Du zwischen zwei Frequenzen des internen Oszillators wählen.

    PCON – POWER CONTROL REGISTER (ADDRESS: 8Eh)

    bit 3 OSCF: INTOSC Oscillator Frequency bit
    1 = 4 MHz typical
    0 = 48 kHz typical

  9. #9
    Benutzer Stammmitglied Avatar von Driona
    Registriert seit
    02.08.2007
    Ort
    Meckenheim
    Alter
    49
    Beiträge
    45

    Erste Schritte

    Sooo....
    Hab eben mal mit CH-Basic etwas rumgespielt...
    Ich hoffe, falls fehler auftauchen, werden mir die ASM-Spezies die Richtung weisen, und insgesamt wirds den ASM-Neulingen etwas helfen das alles zu verstehen.

    CH-Basic-Code:
    Code:
    PIC 16F628
    StartAddress 0x5
    BYTE vartest1
    WORD 
    SBYTE 
    SWORD 
         PortRd A , VARTEST1
         SetPort B , VARTEST1
    Zu Deutsch:
    Lade den kompletten Port A in die Variable VARTEST1
    Schiebe die komplette Variable VARTEST1 in Port B

    Also alles was an Port A reinkommt, gebe ich 1 zu 1 an Port B weiter....

    Als ASM-Code macht mir das Prog das hier:

    Code:
    LIST P= 16F628
         INCLUDE "P16F628.INC"
         RADIX DEC
         ORG  0X5
    AUX1_L EQU  0X20
    AUX1_H EQU  0X21
    AUX2_L EQU  0X22
    AUX2_H EQU  0X23
    AUX EQU  0X24
    S0 EQU  0X25
    VARTEST1 EQU  0X26
         MOVF   PORTA, W
         MOVWF  VARTEST1
         MOVF   VARTEST1, W
         MOVWF  TRISB
    END
    Ich versuche jetzt mal geschriebenerweise, mir das ganze irgendwie zu "übersetzen"...

    LIST P= 16F628
    INCLUDE "P16F628.INC

    Hier sag ich dem Programm, welchen Controller ich überhaupt verwende....

    MOVF PORTA, W
    Packe (mov = move ?) den Port A in den Arbeitsspeicher (W ?)

    MOVWF VARTEST1
    Packe den Arbeitsspeicher W in die Variable VARTEST1

    MOVF VARTEST1, W
    Packe die Variable VARTEST1 in den Arbeitsspeicher W

    MOVWF TRISB
    Packe den Arbeitsspeicher W in den Port B

    ---------

    Warum das aber erst PORTA und hinterher TRISB heisst, bin ich überfragt....

  10. #10
    Benutzer Stammmitglied
    Registriert seit
    17.09.2006
    Ort
    Essen
    Alter
    63
    Beiträge
    83
    W steht für working Register, also Arbeitsregister. Bei den PIC's laufen alle
    Aktionen über dieses Register, ist manchmal etwas lästig aber man gewöhnt sich daran. Also dein punkt 1 stimmt so. Bei 2 heist dann bewege den Inhalt von PORT A in das W-Register.
    3. Move W-Register in die Variable VARTEST (F steht für File-Register)
    4. Das Ganze wieder zurück
    5. Schreibe den inhalt von W in das Datenrichtungsregister TRIS B
    Damit wird dein Programm schonmal nicht das machen was du woltest sondern PORT A einlesen und je nach eingelesenen Wert Teile von PORT B als Ausgang konfigurieren. Ich vermute mal das du nicht SetPort B sondern Port Write nehmen mußt (ich kenne den syntax deines Basics nicht)
    Schau dir doch mal die seite von Sprut http://www.sprut.de/ an da kann man viele Grundlagen zum PIC nachlesen und wenn du die Beispiele dort Verstanden hat hast du ein gutes Grundgerüst zum Programieren mit den PIC's
    .
    MFG
    ralf

Seite 1 von 5 123 ... LetzteLetzte

Berechtigungen

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

12V Akku bauen