Forum: Mikrocontroller und Digitale Elektronik PIC Programmiereinstieg


von Clément K. (versuchx)


Lesenswert?

Hallo zusammen,

ich bin neu hier im Forum und suche anfangs Hilfe und Tipps.

Später hoffe ich, anderen neuen Forumsmitgliedern helfen zu können.

Wie ich zu den Microchips gekommen bin?

Neulich kam mir die Idee eine Binäruhr für meinen Schreibtisch zu bauen.
Gesagt getan, die Uhr wurde gebaut und an die Versorgungsspannung 
angeschlossen.
Wie von mir erwartet funktionierte sie nicht.
Also ging ich nochmals auf die Homepage, auf der ich den Schaltplan 
gefunden hatte und fand den Hinweis, dass man den verwendeten 
Microcontroller programmieren musste.
Da ich in nicht all zu ferner Zukunft vor hatte, weitere Schaltungen mit 
Microprozessoren zu bauen, entschied ich mich einen Chip-Brenner zu 
kaufen.

Nun funktioniert die Uhr einigermaßen, ich muss noch mal den Schaltplan 
durchschauen, da zwei LEDs immer gleichzeitig aufleuchten.

Nun brauche ich ein Bisschen Hilfe beim Start zur Programmierung von 
Microchips.

Ich habe mir ein paar Videos auf Youtube angesehen, und mir die neuste 
Version von MPLAB IDE runtergeladen.

Nun wollte ich ein programm schreiben, bei dem eine LED blinkt und ....
Der von mir verwendete Chip is der PIC 16F628A.

Ich habe eine Liste der Steuerbefehle, nur habe ich das richtig 
verstanden, man muss zu aller erst eine Initialisierung schreiben?

Das war ein wenig viel Text für euch??
Ich bitte um Verständnis.
Danke im Voraus!!

Gruß
Clément

von hagi (Gast)


Lesenswert?

Schau einmal bei www.sprut.de vorbei, dort sind sehr viele und 
ausführliche Informationen zu der PIC-Prozessoren vorhanden.

von Stampede (Gast)


Lesenswert?

Wenn du gerade erst loslegt, nimm lieber die PIC18, zB den 18F4520. Die 
sind etwas angenehmer. Wenn es PIC16 sein soll, dann nicht den 628. Der 
ist so was von uralt und teuer. Dann eher PIC16F88 oder 16F887 oder 
sowas in der Richtung.

von Michael S. (rbs_phoenix)


Lesenswert?

Stampede schrieb:
> Dann eher PIC16F88 oder 16F887 oder
> sowas in der Richtung.

Die sind doch schon fast genauso alt;)

PIC16F1xxx, doch auch ich Rate zu den PIC18F.

Was für einen Brenner hast du dir denn gekauft?

Die genannte sprut-Seite ist sehr gut für den Einstieg geeignet aus 
meiner Sicht.

von Erich (Gast)


Lesenswert?

>Schau einmal bei www.sprut.de vorbei, dort sind sehr viele und
>ausführliche Informationen zu der PIC-Prozessoren vorhanden.

Diese Antwort kommt immer hier.
ABER: Das Zeugs von sprut.de ist total veraltet!
So als ab man zu einem Käfer raten würde bei der Frage nach VW.

Bessere Seiten für  PIC  sind  (fast alle englisch)
http://embedded-lab.com/blog/?page_id=28
http://embedded-lab.com/blog/?page_id=26

Modernere Typen der PIC sind  PIC16F1827  oder  PIC18F4550


Morgen mehr, wenn ich Zeit hab'.

von W.S. (Gast)


Lesenswert?

Clément Kammler schrieb:
> Nun wollte ich ein programm schreiben, bei dem eine LED blinkt und ....
> Der von mir verwendete Chip is der PIC 16F628A.

Dieser PIC ist OK. Er ist überschaubar, hat genug Speicher für recht 
viele Projekte und er ist ein klassischer PIC16, für die es massenweise 
Beispiele, Tipps und Bastelideen gibt.

Das, was hier einige andere geschrieben haben ("nimm was anderes weil 
neuer und größer und dicker und deshalb ja soooo viel besser..") halte 
ich für überzogen und einen schlechten Rat. Immer diese Schreihälse, die 
sich selbst für so großartig halten, daß sie mit Verachtung auf alles 
spucken, was älter als 3 Monate ist.

W.S.

von Kein Name (Gast)


Lesenswert?

Moderneren Pics kann man mit dem Pickit3 In-Circut-Debugger auf die 
Finger schauen. Manche Leute sagen, als Einsteiger sollte man Fehler 
durch nachdenken suchen. Andere meinen, mit dem Debugger kommt man 
schneller voran.

von Clément K. (versuchx)


Lesenswert?

Hallo,

danke für eure schnellen Antworten.
Ich wollte keine gegeneinander aufhätzen!

Ich habe den PIC gewählt, da er in der Schaltung meines nächsten 
Testprojektes verwendet wird.
http://picprojects.org.uk/projects/433chaser/index.htm

Was die Preise der Chips betrifft, ich bin noch Anfänger und lasse mich 
daher auch noch ausnahmsweise übers Ohr hauen.

Ein Dank an Erich, für das Interesse an meinem Problem.

Sprut kenne ich schon und habe mir auch 30 Seiten Lesestoff ausgedruckt.

hier der Link zum Brenner
http://www.ebay.de/itm/Enhanced-PICkit-2-PIC-Programmer-Programmiergerat-/310400438569?pt=Wissenschaftliche_Ger%C3%A4te&hash=item48454ed129#ht_7989wt_1139

ich habe mich für diesen entschieden (wenn ich das richtig verstanden 
habe) weil er wie ein PICkit 2 Brenner funktioniert.

Gruß
Clément

von Michael S. (rbs_phoenix)


Lesenswert?

Klar ist der PIC ok. Er hat ihn ja auch schon, da wäre es ja blöd ihn 
liegen zu lassen und einen neuen zu kaufen.
Beispiele, Tipps und Bastelideen kann man quasi übernehmen und die 
Software, wenn man denn eine Fertige haben will, ist schnell an einen 
anderen PIC angepasst.

Mein Rat bezog sich eher auf die neuen Projekte, die er machen will. Und 
da ist eine Alternative zum 628A eben z.B. der 16F1827. Zugegeben machen 
es die 5 cent billiger (Reichelt) nicht wirklich, doch dafür hat man 
einen neueren, schnelleren und größeren µC für quasi das gleiche Geld.
Dazu verbraucht er weniger Strom, hat mehr Peripherie usw. Abgesehen 
davon war es ein Rat, wobei ich ehrlich gesagt nicht verstehe, wieso der 
Rat schlecht sein soll. Ich zumindest sehe dadurch keinen Nachteil, 
sondern eher Vorteile. Ein Schreihals bin ich dadurch auch noch nicht.


Erich schrieb:
> ABER: Das Zeugs von sprut.de ist total veraltet!

Veraltet vielleicht, jedoch ist das was da steht auch noch bei neuen 
PICs gültig. Die Timer funktionieren gleich, die IO-Konfiguration usw 
ist gleich.. Für den Einstieg reicht es aufjedenfall. Zumindest besser 
als fast das gleiche auf English zu lesen.


> Modernere Typen der PIC sind PIC16F1827 oder PIC18F4550

Der PIC18F4550 ist auch schon älter als 6 Jahre. Jedoch ist er halt 
durch die vielen Pins, DIL und USB attraktiv und den 18F45K50 bietet 
Reichelt nicht an. >5€ ist aber schon was. Den würde ich nur nehmen, 
wenn ich wirklich USB brauche. Ansonsten sowas wie 18F45K20, der weniger 
als die Hälfte kostet und neuer ist.

von Bruddler (Gast)


Lesenswert?

Hallo zusammen,
Der PIC 16F628 ist zum Einstieg AUCH (nicht nur dieser) gut geeignet. 
Die neueren 16F182x bieten zwar mehr Funktionen, sind aber für den 
Einsteiger unübersichtlicher zu programmieren. Die sprut-Seite ist 
wirklich sehr gut - von wegen veraltet -.
Einen besseren Begleiter zum Erlernen der Assembler-Programmierung und 
zum Kennenlernen der PICs konnte ich wohl kaum haben. Mit sprut.de habe 
ich die Progrmamierung gelernt, z.B. DF-77 Uhr, LC-Meter, 3x3-Würfel mit 
PWM, Frequenzzähler usw. Dazu musste ich keine Fragen im Forum stellen 
und mir - so wie hier teils gelesen - Besserwissereien (..nicht modern, 
..veraltet usw) anhören.
mfG
Bruddler

von Erich (Gast)


Lesenswert?

>Erich schrieb:
>> ABER: Das Zeugs von sprut.de ist total veraltet!

Ja, und bei dieser Meinung bleibe ich auch.

Hier mein versprochener Fortsetzungstext zu gestern Datum: 12.09.2012 
16:33

Hmm, mit dem Brenner von ebay, naja, jetzt haste ihn gekauft.
Hättest mal vorher gefragt, da hätte ich dringend zum Original PicKit3 
geraten.
Das gibt es als "DV 164131" (= PICkit 3 Debug Express) zusammen mit 
einer Platine mit dem PIC18F45K20 drauf, sowie weitere 2 Stück 
Leerplatinen davon. Kann man kaufen u.a. bei Reichelt (Suche "DV 
164131").
Dazu eine CD mit "lessons", die man auch als  41370C.pdf findet 
(Microchip oder GOOGLE fragen).
Die .zip Datei der lessons findet man bei GOOGLE über Suche:
  "Software code for PICkit 3 Debug Express Lesson Files"

Aber warum was Originales kaufen, wenn es bei Ebay einen fraglichen Klon 
der veralteten vorherigen Variante für mehr Geld gibt!
Schade.

Weitere Info siehe auch Beitrag "Pic 16f876 Unterschied"
Mein Beitrag  Datum: 25.01.2012 15:36

Gestern (Datum: 12.09.2012 16:33) hatte ich u.a. zum PIC16F1827 geraten.
Der grössere Bruder des 1827 ist der 1847 (mehr Speicher, sonst alles 
gleich).
Hier ist eine Platine dazu die man auch auf Lochraster nachbauen kann:
http://embedded-lab.com/blog/?p=5625
Dort kann man auch den 1827 draufstecken.

Der 1827 ist auch drauf auf der Platine  DM164120-4
Bei Reichelt ist der Text noch falsch; siehe bei www.microchipdirect.com

Eine weitere "Schulungsseite" für PIC ist hier...
http://www.gooligum.com.au/tutorials.html

Nochwas, auch wenn da jetzt GANZ VIELE gegenteilige Antworten anderer 
Forumsteilsnehmer kommen werden:
Es ist Stand der Technik und industrieüblich, nur noch in C zu 
programmieren. Es gibt für besagte uC keine Notwendigkeit und keinen 
Grund noch Assembler einzusetzen. Im Umfeld "automotive" (Auto, KFZ) ist 
es nach Norm (automotive) SPICE quasi verboten noch Assembler 
einzusetzen (jeder Einzelfall einer Abweichung muß begründet werden -- 
nicht jedes Projekt, sondern jede einzelne Codezeile!).
http://de.wikipedia.org/wiki/Automotive_SPICE
Will sagen: Lerne gleich in C zu programmieren -- ist sinnvoller. Mit 
den kleinen Pic16 ist asm ein Bankswitching und "retlw" Kauderwelch ohne 
Ende. Sinnlos.

Gruss

von Peter D. (peda)


Lesenswert?

Erich schrieb:
> Es ist Stand der Technik und industrieüblich, nur noch in C zu
> programmieren.

Benutze zwar AVRs, aber volle Zustimmung.
Sogar C++ (kann ich leider nicht) ist bei MC-Anwendungen unaufhaltsam im 
kommen.

Erich schrieb:
> Mit
> den kleinen Pic16 ist asm ein Bankswitching und "retlw" Kauderwelch ohne
> Ende.

Das hat mich sogar so sehr abgeschreckt, daß ich keine PICs verwende. 
Wenn man schon Z80, 8051 oder AVR kennt, ist einem der PIC-Assembler 
einfach viel zu kompliziert.


Peter

von Tastendrücker (Gast)


Lesenswert?

Erich schrieb:
>Es ist Stand der Technik und industrieüblich, nur noch in C zu
>programmieren [...] Im Umfeld "automotive" (Auto, KFZ) ist
>es nach Norm (automotive) SPICE quasi verboten noch Assembler
>einzusetzen (jeder Einzelfall einer Abweichung muß begründet werden --
>nicht jedes Projekt, sondern jede einzelne Codezeile!).
>http://de.wikipedia.org/wiki/Automotive_SPICE

Der TO fängt aber gerade erst (hobbymäßig) an mit uC Programmierung.

Erich schrieb:
>Es gibt für besagte uC keine Notwendigkeit und keinen
>Grund noch Assembler einzusetzen.

Es ist immer gut, sein Werkzeug möglichst genau zu kennen. Und wenn ein 
ach-so-tolles-modernes-C-Programm nicht das macht, was es soll, dann ist 
ein Blick in den erzeugten ASM-Code oft sehr hilfreich. Dazu sollte man 
ihn aber auch verstehen.

Erich schrieb:
>Will sagen: Lerne gleich in C zu programmieren -- ist sinnvoller. Mit
>den kleinen Pic16 ist asm ein Bankswitching und "retlw" Kauderwelch ohne
>Ende. Sinnlos.

Kaum geht's nicht "straight" kriegen die einige schon Probleme...

Tastendrücker

von usuru (Gast)


Lesenswert?

> Es ist Stand der Technik und industrieüblich, nur noch in C zu
> programmieren.

> Mit
> den kleinen Pic16 ist asm ein Bankswitching und "retlw" Kauderwelch ohne
> Ende.

> Das hat mich sogar so sehr abgeschreckt, daß ich keine PICs verwende.

Das macht in C doch der Compiler! Juckt also nur die ASM-Freaks und die 
können das (hört sich nur schlimmer an als es ist).

von Wilhelm F. (Gast)


Lesenswert?

Zum Einstieg ist ein PIC12F675 bestens geeignet, keine Frage. Mir flog 
mal zufällig gratis ein PICkit1 zu, und dann beschäftigte ich mich ein 
wenig damit.

Praktisch ist, daß ich mit diesem PICkit beliebig viele 12F675 nach 
kaufen und auf dem Board flashen kann. Für kleine Spielereien reicht es 
oft, so ein Winzling mit 8 Pins. Notfalls verwende ich den, wenn ich mal 
kein UND-Gatter mit 3 Eingängen habe. ;-)

Mit den echten Oldtimern 8048 und 8085 spiele ich gelegentlich auch noch 
herum. Ist doch bloß Hobby.

von Erich (Gast)


Lesenswert?

>Der TO fängt aber gerade erst (hobbymäßig) an mit uC Programmierung.

Ja, eben!

Daher sollte man als erste Fremdsprache was gängiges lernen, nichts 
exotisches.

Also Englisch anstatt Kimbundu.


Gruss

von temp (Gast)


Lesenswert?

Ohne Frage hat Microchip eine Reihe guter MCs. Allerdings muss man sich 
auch um die Entwicklungsumgebungen Gedanken machen. Beim Einstieg ist 
alles frei und wenn man mit dem Optimierungslevel 1 leben kann auch. 
Geht sicher mit XC16 bzw. XC32 ehr als bei XC8. Ich rede jetzt auch nur 
von den aktuellen Compilern, da die alten irgendwann überholt sind. Wenn 
jetzt aber das ganze Wissen zum produktiven Einsatz kommen soll, dann 
macht Microchip jetzt den selben Schwachsinn wie viele andere auch: Sie 
bundeln die (ca. 1000€) License an den Rechner. Ich frage mich ob die 
nicht auf die Idee kommen, dass jemand in der Firma, zu Hause und auf 2 
verschiedenen Notebooks abwechselnd arbeitet. Dafür wären dann 
3*4=12000€ für alle XC Compiler fällig. Das ist irgendwie indiskutabel. 
Da lobe ich mir aber WinAvr. Bei den Cortexen gibt es auch genügend 
freie und kommerzielle Alternativen. Da ist dann der Komfort das 
Unterscheidungsmerkmal. Solange Microchip diese Lizensierungspolitik 
betreibt, ist man mit anderen Controllern besser aufgehoben.

von Wilhelm F. (Gast)


Lesenswert?

temp schrieb:

> Solange Microchip diese Lizensierungspolitik
> betreibt, ist man mit anderen Controllern besser aufgehoben.

Na ja, manchmal gibt es auch noch Freeware-Alternativen wie den SDCC für 
8051-er-Derivate. Das kostet natürlich viel Eigenarbeit und 
Eigeninitiative beim Tools-Setup.

Ich weiß auch gar nicht, ob man diese Tools für kommerzielle Anwendungen 
verwenden darf, und müßte mal nach schauen. Von selbst ist mir in den 
SDCC-Manuals noch kein entsprechender Hinweis begegnet, oder ich habe 
ihn überlesen.

OpenOffice darf man sicher auch in der Firma einsetzen, wenn man kein 
MS-Office mag.

Wenn nicht, korrigier mich mal jemand. Ich nutze die genannten Dinge nur 
privat, hatte keinen richtigen Anlaß, nach den Bedingungen zu suchen.

von Andreas H. (ahz)


Lesenswert?

Erich schrieb:
> Im Umfeld "automotive" (Auto, KFZ) ist
> es nach Norm (automotive) SPICE quasi verboten noch Assembler
> einzusetzen (jeder Einzelfall einer Abweichung muß begründet werden --
> nicht jedes Projekt, sondern jede einzelne Codezeile!).

Hallo Erich

Kannst Du bitte eine detailierte Quelle dazu angeben ?

Ich hab das schon öfter von Leuten gehört aber irgendwie konnte dann 
keiner genau sagen, woher er seine "Erkenntnisse" hatte.

Automotive SPICE, bzw. auch ISO/IEC 15504, beschreiben afaik nur die 
Standards zur BEWERTUNG der PROZESSE, nicht den (SW-)Prozess selbst.
Aber vielleicht habe ich da ja auch was übersehen. Dann wäre es nett, 
wenn Du das mal korrekt referenzieren könntest.

Grüße
Andreas

von MCUA (Gast)


Lesenswert?

> Mit den kleinen Pic16 ist asm ein Bankswitching und "retlw" Kauderwelch
> ohne  Ende.
Dafür ist PIC24/33 umso besser und viel leistungsfähiger.

von Wilhelm F. (Gast)


Lesenswert?

Erich schrieb:

> Es ist Stand der Technik und industrieüblich, nur noch in C zu
> programmieren. Es gibt für besagte uC keine Notwendigkeit und keinen
> Grund noch Assembler einzusetzen.

Im Jahr 2002 kam eine Exkursion von Bosch zurück, ich war nicht mit.

Aber sie kamen direkt auf mich zu, und sagten, das wäre was für mich: 
8051 Assembler. Die machten damals noch die Steuergeräte in 
8051-Assembler. Daran ist ja auch nichts schlecht, und man kann mit dem 
Makroassembler effizient programmieren.

EPROMs hatten sie auch mit Eigenbezeichnungen gut getarnt, aber es waren 
Intel 27C128 beispielsweise.

Und ich verstehe es auch, nach dem ich Bosch-Motorsteuerungen Motronic 
und L-Jetronic was weiß der Geier vom Schrott schlachtete: Meistens 
sowas wie Siemens SAB80515 drinne, mit 12MHz Quarz. Zumindest bis vor 10 
Jahren.

C ist schön, keine Frage. Bei einem SAB80515 mit nur 4kB ROM mußte ich 
mich indessen gegen C, und für Assembler, entscheiden.

von Clément K. (versuchx)


Lesenswert?

Hallo zusammen,

danke nochmals für euren vielen Antworten.
Ich werde jetzt anfangen selber zu programmieren und wenn ein Fehler im 
Quellcode ist, könntet ihr mich ja aufklären.

MfG
Clément

von Peter D. (peda)


Lesenswert?

Wilhelm Ferkes schrieb:
> Für kleine Spielereien reicht es
> oft, so ein Winzling mit 8 Pins. Notfalls verwende ich den, wenn ich mal
> kein UND-Gatter mit 3 Eingängen habe. ;-)

Geht mir auch so.
Wenn man erstmal den Hammer halten (programmieren) kann, besteht die 
Welt aus lauter Nägeln (Programmieraufgaben).

Ich staune manchmal selber, welche komplexen C-Programme man in nur 8 
Pins + 2kB Flash (ATtiny25) unterbringt. Und damit seine Transistoren 
sich nicht zu sehr langweilen, lasse ich ihn auch manchmal float 
rechnen.

C lieben gelernt habe ich auf dem 8051 (Keil C51). Ich mußte ein 10k 
Zeilen Programm übernehmen und erweitern. In Assembler undenkbar.


Peter

von Clément K. (versuchx)


Lesenswert?

Hallo,

ich habe mal versucht, zwei Ausgänge bei dem PIC zu öffnen.
Dann habe ich auf F10 gedrückt, und er hat angefangen zu rechnen.
und am Ende stand ERROR

list p=16f628a
    include "p16f628.inc"

    org    0x00
    goto   main

    org    0x04


main

  bsf portb,0,1

  end

Was habe ich falsch gemacht??????

Gruß
Clément

von Wilhelm F. (Gast)


Lesenswert?

Peter Dannegger schrieb:
> Wilhelm Ferkes schrieb:
>> Für kleine Spielereien reicht es
>> oft, so ein Winzling mit 8 Pins. Notfalls verwende ich den, wenn ich mal
>> kein UND-Gatter mit 3 Eingängen habe. ;-)
>
> Geht mir auch so.
> Wenn man erstmal den Hammer halten (programmieren) kann, besteht die
> Welt aus lauter Nägeln (Programmieraufgaben).
>
> Ich staune manchmal selber, welche komplexen C-Programme man in nur 8
> Pins + 2kB Flash (ATtiny25) unterbringt. Und damit seine Transistoren
> sich nicht zu sehr langweilen, lasse ich ihn auch manchmal float
> rechnen.
>
> C lieben gelernt habe ich auf dem 8051 (Keil C51). Ich mußte ein 10k
> Zeilen Programm übernehmen und erweitern. In Assembler undenkbar.
>
>
> Peter

Peter, ich habe hier leider noch ein olles Board herum liegen, was ich 
endlich mal los werden (verschenken) muß. Ein 80515 mit LCD-Display und 
Tastaturcontroller 8279. Eigentlich ein tolles Teil, wenn es leider 
nicht nur 4k EPROM und ein einzeiliges LCD mit 16 Zeichen hätte. Den 
8279 gibt es heute nicht mehr, aber er ist sehr komfortabel. Es sind 
noch 30 Tasten auf dem Board, das war mal ein 
Stand-Alone-Programmiersystem, wo ich aber keine Unterlagen habe.

Jedenfalls genügte es mir als Testboard für 2k Code. Das 2k RAM neben 
dem 4k EPROM ist glücklicherweise in "von Neumann" geschaltet.

Den Reaktionszeittester führte ich mal jemandem vor, und da kommt jetzt 
noch ein Würfelspiel mit 5 Zufalls-Würfelzahlen für Kniffle drauf, 
sortiert, das wars. Dann geht das Ding weg, als 
Frühstückspausenamusement für ein paar Nichttechniker. Der 
Reaktionstester mit 1ms Auflösung alleine erzeugte schon gigantisches 
Interesse. Fast kaum zu glauben, wie so eine 22 Jahre alte Kiste mit 
einem kleinen Progrämmchen Interesse weckt. Der hängt auch direkt an 
einer Interrupttaste, nicht am Keyboard-Display-Interface 8279.

Alles Assembler.

Ich freue mich aber, mich danach wieder meinen 80C517A-Boards mit C 
zuzuwenden, die auch in Code und Daten je 64k Speichervollausbau haben. 
Das reicht noch für so einiges. C ist wesentlich eleganter, wenn man 
etwas Speicher hat.

10k Zeilen in Assembler, klingt schon heftig. Aber kommt es da nicht 
auch auf gute Doku an?

Ich mußte mal ein 50k Zeilen C-Code mit Define-Grab versehen, für eine 
bestimmte Geräteauswahl. Auch ohne weitere Doku. Daran bin ich aber fast 
gestorben, da ich im Gegensatz der Ur-Programmierer den Code gar nicht 
tiefer kannte. Das vergällte mir fast den Spaß am Beruf.

von ML (Gast)


Lesenswert?

>   bsf portb,0,1


http://sprut.de/electronic/pic/assemble/befehle.html#bsf

sollte erstmal reichen

von Peter D. (peda)


Lesenswert?

Wilhelm Ferkes schrieb:
> 10k Zeilen in Assembler, klingt schon heftig.

Da hast Du wohl etwas mißverstandem, die 10k Zeilen waren natürlich C.
Deswegen schrieb ich auch "In Assembler undenkbar.".


Peter

von W.S. (Gast)


Lesenswert?

Clément Kammler schrieb:
> Was habe ich falsch gemacht??????

Also erstmal eines: ab Adresse 4 geht beim PIC für gewöhnlich die 
Interrupt-begandlung los. Wenn du ohne Interrupts arbeitest, dann ist 
das egal, sonst nicht.

Zweitens: ab Reset sind erstmal alle Pins auf Eingang geschaltet. Um ein 
Pin als Ausgang benutzen zu können, muß man es erstmal im zugehörigen 
TRIS-Register entsprechend einrichten. Bei manchen Pins muß man 
obendrein auch noch die Steuerregister des ADC einrichten (sindab Reset 
als Analogeingänge geschaltet).

also sinngemäß

    seg   code
    org   0
    clrf  status
    clrf  pclath
    goto  kaltstart

    org   4
    blablabla....
    blablabla....
    retfie

kaltstart:
    bsf   rp0
    movlw b'xxxxxxx'
    movwf trisxxx
    bcf   rp0

    und ab hier kannst du dein portxxx benutzen


W.S.

von K. J. (Gast)


Lesenswert?

Peter Dannegger schrieb:
> Wilhelm Ferkes schrieb:
>> 10k Zeilen in Assembler, klingt schon heftig.
>
> Da hast Du wohl etwas mißverstandem, die 10k Zeilen waren natürlich C.
> Deswegen schrieb ich auch "In Assembler undenkbar.".
>
>
> Peter

Naja das wirst kaum in nen PIC quetschen können selbst 10k Zeilen ASM 
passen nur in einige Exoten mit externen Flash.

von Michael S. (rbs_phoenix)


Lesenswert?

Wilhelm Ferkes schrieb:
> Für kleine Spielereien reicht es
> oft, so ein Winzling mit 8 Pins.

Ja das stimmt. Ich hab einen 12F1840 genommen, einen Mosfet und ein, 
zwei Widerstände und es ist quasi ein Mini-"I²C/SPI/UART to 
PWM"-Converter (inkl. 1xADC), da er all das als Modul an Board hat. Das 
heißt, man kann ihn auch in den Sleep-Modus schicken, wird bei einem 
Interrupt geweckt, ändert die PWM und legt sich dann wieder schlafen.


Clément Kammler schrieb:
> und am Ende stand ERROR

Da hat er doch bestimmt auch gesagt, (wo)was falsch ist. Wenn du dann 
rausgefunden hast, dass es an der Zeile "bsf portb,0,1" lag, musst du 
gucken, wie bsf verwendet werden kann/muss. Die Info zu den ASM-Befehlen 
findest du nicht nur bei Sprut, sondern auch im Datenblatt, das sowieso 
immer dein Begleiter ist.


K. J. schrieb:
> Naja das wirst kaum in nen PIC quetschen können selbst 10k Zeilen ASM
> passen nur in einige Exoten mit externen Flash.

Aber sowas von mal nicht...

von Erich (Gast)


Lesenswert?

>Clément Kammler schrieb:
>> und am Ende stand ERROR

>>Was habe ich falsch gemacht??????


Du hast meinen dringenden Rat vom   Datum: 13.09.2012 11:40
letzter Absatz überlesen oder ignoriert.

von Michael S. (rbs_phoenix)


Lesenswert?

Erich schrieb:
> Du hast meinen dringenden Rat vom   Datum: 13.09.2012 11:40
> letzter Absatz überlesen oder ignoriert.

Hätte er es in C programmiert, müsste er trotzdem das TRIS-Register 
beschreiben, auch wenn er sich die (wohl von einigen unerträglichen) 2 
Zeilen fürs Bank wechseln gespart hätte.

Ich denke, ob ASM oder C ist für einen Anfänger erstmal egal. Hat beides 
Vor- und Nachteile. Ich bin froh PIC-ASM grob zu beherrschen, auch wenn 
ich nur noch in C programiere. Wenn er jedoch ASM gewählt hat, sollte 
man das respektieren. (Mit Sicherheit nicht nur) Ich hab das auch 
geschafft.
C ist angenehmer, jedoch ein bisschen Wissen braucht man bei ASM und C. 
Bei C kommt noch z.B. lokale Variablen, Datentypen, Anweisungen usw usf. 
Wenn man es kann ist es von Vorteil, dennoch find ich 35 Befehle 
leichter zu lernen als C.

von Erich (Gast)


Lesenswert?

@Autor: Andreas H. (ahz)
>Automotive SPICE

Es wird für das Projekt festgelegt, innerhalb der Fa. von der SW-QS oder 
vom OEM.

Es ist "Stand der Technik".

Lt. dieser Info , fast am Textende dort, zwischen den letzten beiden 
Grafiken ...
http://www.gulp.de/kb/mk/chanpos/automotive-software-engineering-2.html
... da steht  Zitat:
"In 41,2 Prozent der Projektanfragen aus der Automotive-Industrie, in 
denen freiberufliche Spezialisten mit Programmierkenntnissen gesucht 
werden, wird C nachgefragt. UML folgt mit einem Anteil von 29,7 Prozent, 
C++ kommt auf 23,1 Prozent. OSGi, Assembler und CAPL kommen über die 
Drei-Prozent-Marke dagegen nicht hinaus."

Übrigends ist "Stand der Technik" immer ein sehr wichtige 
Begrifflichkeit mit Rechtsfolgen.
http://de.wikipedia.org/wiki/Stand_der_Technik

Wenn man SW-Erstellung mit Konstruktionsaufgaben vergleicht, so ist dort 
der Stand der Technik, CAD-Systeme einzusetzen.
Kein OEM wird einem Zulieferer mehr einen Auftrag erteilen wenn er bei 
einem Besuch (Audit) sieht daß dort die Konstrukteure am Reißbrett mit 
Tuschestift und Rasierklinge arbeiten.

Gruss

von Andreas H. (ahz)


Lesenswert?

Erich schrieb:
> "In 41,2 Prozent der Projektanfragen aus der Automotive-Industrie, in
> denen freiberufliche Spezialisten mit Programmierkenntnissen gesucht
> werden, wird C nachgefragt. UML folgt mit einem Anteil von 29,7 Prozent,
> C++ kommt auf 23,1 Prozent. OSGi, Assembler und CAPL kommen über die
> Drei-Prozent-Marke dagegen nicht hinaus."

Und wenn Du Dir mal die Quelle anschaust aus der Du das ausgebuddelt 
hast, dann frage Dich mal, wieviele der "Keypositionen" wirklich über 
Stellenausschreibungen gehen.
Ich kenn das eher so, dass da Leute direkt angesprochen werden. Man 
kennt sich ja .... Ausserdem gibt dafür Headhunter (ja, die gibts 
wirklich^^)

Hälst Du Deinen Link wirklich für eine qualifizierte Quelle ?

Meine Bitte war doch eigentlich ganz einfach:

In welcher Norm wird das Programmieren in ASM so wie von Dir beschrieben 
eingeschränkt ? Insbesondere

Erich schrieb:
> jeder Einzelfall einer Abweichung muß begründet werden --
> nicht jedes Projekt, sondern jede einzelne Codezeile!
"jede einzelne Codezeile" ???

Thanks in advance
Andreas

von Erich (Gast)


Lesenswert?

Hallo Andreas,

ich schrieb das doch schon:

>Es wird für das Projekt festgelegt, innerhalb der Fa. von der SW-QS
>oder vom OEM.

>Es ist "Stand der Technik".


Es gibt keine qualifizierbaren, vom TÜV anerkannten Prozesse und 
Methoden für eine Neuentwicklung nach dem Stand der Technik für 
Assemblersprachen.


Gruss

von Clément K. (versuchx)


Lesenswert?

Ich habe den Besitzer der Sprut  Seite mal per Mail angeschrieben und er 
meinte, dass MPLAB meinen Code gar nicht erkennt.

Ich werde noch mal alles durchgehen.

Gruß´
Clément

von Wilhelm F. (Gast)


Lesenswert?

Michael Skropski schrieb:

> Wilhelm Ferkes schrieb:
>
>> Für kleine Spielereien reicht es
>> oft, so ein Winzling mit 8 Pins.
>
> Ja das stimmt. Ich hab einen 12F1840 genommen, einen Mosfet und ein,
> zwei Widerstände und es ist quasi ein Mini-"I²C/SPI/UART to
> PWM"-Converter (inkl. 1xADC), da er all das als Modul an Board hat. Das
> heißt, man kann ihn auch in den Sleep-Modus schicken, wird bei einem
> Interrupt geweckt, ändert die PWM und legt sich dann wieder schlafen.

Ja, das sind echt gute Überlegungen. Sogar als PID-Regler kann ich ihn 
benutzen, wenn an den Pins noch Spule, Diode, Ladekondensator und 
Transistor angeschlossen sind. Beim PICkit1 sind die Sourcen des 
Hauptcontrollers auf der CD, auch der PID-Regler. Den kann am ja eben 
mal auch in den Zielcontroller einwerfen.

Der PID-Regler des Hauptcontrollers regelt aus den 5V von USB die 
Programmierspannung 13V des Zielcontrollers.

Also er wäre auch als Spannungsregler gut.

von GroberKlotz (Gast)


Lesenswert?

Hallo Clement,
für jeden PIC gibt es im Verzeichnis \MPLAB\MPASM Suite\Template\Code 
eine Beispiel-AMS-File. Darin findest Du die absolut notwendigen 
Mindestanforderungen für ein gültiges Assmbler-Programm für die 
MPLAB-IDE.

Weiterhin solltes Du stets das Datenblatt zum verwendeten µC wenigstens 
offline zur Hand haben. Für die meisten Probleme gibt es auch bereits 
eine Lösung. Diese kannst Du, allerdings in englischer Sprache, im 
microchip-forum [http://www.microchip.com/forums/default.aspx] finden.

Ich wieß jetzt nicht ob Du den in MPLAB integrierten Simulator schon 
verwendet hast. Damit kannst Du jedenfalls Schrit für Schritt Dein 
Programm durchgehen. Dazu gibt es noch ein Fenster "Watch" in welchem 
der Inhalt aller Register, also WREG, Variable, angezeigt werden kann.

Wenn Du dann noch die Funktion von Tastern und anderen Eingaben 
verwenden willst, kannst Du den "Stimulus" verwenden.

Es ist immer schwierig in diesem Forum einfache Fragen zu stellen, weil 
die hier aktiven Teilnehmer meist Experten sind, welche von der Basis 
schon einige Kilometer entfernt sind und daher die Anworten rasch in die 
ewigen (AVR-) Jagdgründe abschweifen.

Mein Rat:
Nimme Dir ein einfaches Programm aus den Lernbeispielen 
[http://www.sprut.de/electronic/pic/programm/index.htm]von sprut z.B. 
das Lauflicht und arbeite den Code zumindest im Simulator, besser noch 
mit realer Hardware ab.

Am Anfang ist alles recht verwirrend, aber mit zunehmender Übung 
entwirrt sich das Geflecht.. :-)

mfG Grober Klotz

von Wilhelm F. (Gast)


Lesenswert?

GroberKlotz schrieb:

> Es ist immer schwierig in diesem Forum einfache Fragen zu stellen, weil
> die hier aktiven Teilnehmer meist Experten sind, welche von der Basis
> schon einige Kilometer entfernt sind und daher die Anworten rasch in die
> ewigen (AVR-) Jagdgründe abschweifen.

Literatur aus den vergangenen 20 Jahren sagt mir immer wieder, daß man 
besser mit sowas wie einem 8085 beginnt. Das sei ein guter 
Lernprozessor. Ich fing mit dem 8051 an. Der 8085 kam in der Hochschule 
indessen noch, auch FORTRAN als erste Lernhochsprache.

von Erich (Gast)


Angehängte Dateien:

Lesenswert?

Erstes Posting (Ausschnitte)   12.09.2012 16:07

>Nun brauche ich ein Bisschen Hilfe beim Start
>zur Programmierung von Microchips.

>Nun wollte ich ein programm schreiben,
>bei dem eine LED blinkt und ....


Mein 2. Beitrag hier  (Ausschnitte)  13.09.2012 11:40
>  "Software code for PICkit 3 Debug Express Lesson Files"


Zufällig nennt sich das 2. Beispiel der empfohlenen Lern-CD bzw. 
-Software
"02 Blink LED.c"
und macht wohl was?
   JA, eine LED blinken !
(Das 1. Beispiel schaltet die LED nur an).

Da mein Ratschlag bisher ignoriert wurde, die Orginial-SW ein Copyright 
enthält, füge ich diese jetzt hier nicht als .c Datei sonder als Bild 
dazu.

Da sieht man dann auch gleich, wie kompliziert die Aufgabe mit der 
Programmiersprache "C" ist ; denn dieser Punkt wird ja auch ignoriert 
(wie erwartet).

Gruss

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.