Forum: Mikrocontroller und Digitale Elektronik Anfänger Microcontroller - bräuchte mal einen rat


von ruNN0r (Gast)


Lesenswert?

Hi,
ich arbeite nun schon länger (hobby) Elektrische schaltungen aus. Habe 
einige ganz nette Projekte fertiggestellt. Schaltungen entworfen, 
Platinen entworfen, gelötet usw. Bisher nichts all zu großes oder 
Atemberaubendes aber ganz nett und nützlich ;)
Nun merke ich so langsam dass ich für neuere Projekte ohne einen 
Programmierbaren Microcontroller einfach nicht oder schwer weiter 
komme...

Meine Eigentliche Frage ist nun, wie kann ich am besten beginnen... habe 
nun schon extrem viel gelesen und mir auch hier das Tutorial angesehen 
(was mir nicht so zusagt) aber ich komm auf keinen grünen Zweig.

Mein nächstes Projekt ist z.B. ein Wecker. Aber was nehme ich da, wo 
sind die Unterschiede? Ich habe nun seeehr viel über PICs gelesen. 
PIC16F*** PIC18F*** fand ich so schon mal nicht so schlecht! Wie ist 
eure meinung? Ist dies gut für anfänger? Ich bin Informatikstudent... 
zwar im ersten Semester aber ein wenig Erfahrung von Digitaltechnik und 
I/O bringe ich mit ^^

Ich habe mich teilweise schon für PIC** entschieden. Jedoch bereitet mir 
der Brenner sorgen. Ich möchte nicht zu eingeschränkt sein. Einen PIC 
Brenner selber bauen ist ganz nett, dazu muss ich aber einen PIC 
programmieren um einen Brennen zu können (laut tutorial)...


Ich habe etwas über das PicKit3 gefunden... jedoch scheint der nicht 
sehr viele Familien und Bausteine zu unterstützen... Einen Link kann ich 
leider nicht anfügen... Der wird als hier als Spam erkannt ;)

Jedoch besitze ich derzeit auch nur einen Laptop und brauche somit einen 
Brenner der per USB arbeitet! Aber zu teuer darf der auch wieder nicht 
sein ^^ Wie schon gesagt, bin Student.

Naja dann noch ... Wo ist der Unterschied zu den AMTEL Controllern? Hier 
wird viel von denen gesprochen und auch von den STK200,500,600 jedoch 
teilweise liegen die weit über meinem Budget!

Ich weiß, viele Fragen, aber ich hoffe ihr könnt mir helfen... Danke 
euch!

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

ruNN0r schrieb:
> Ich habe mich teilweise schon für PIC** entschieden.
Dann sind wir ja schon fertig. Aber dieses MP-Lab ist echt ein Krampf! 
Musste mich kürzlich mal wieder damit rumärgern...

> Aber zu teuer
> ...
> weit über meinem Budget!
Hast du da mal belastbare Zahlen?


ruNN0r schrieb:
> (laut tutorial)
Quellenangaben fehlen!

von Karl H. (kbuchegg)


Lesenswert?

Ob PIC oder Atmel ist weitgehend Geschmackssache. Für einen Einsteiger 
sind die Unterschiede nicht so wichtig.

Hier im Forum ist man auf Atmels AVR zentriert. Von daher wirst du über 
PIC nicht viel finden. Wohl aber gibt es Forenteilnehmer die sich mit 
PIC auskennen.

Einen Brenner: kauf dir einen fertigen oder kauf dir gleich einen 
Arduino (dann brauchst du erst mal keinen Brenner, die werden über 
Bootloader programmiert).

Aber ansonsten: Du kannst lesen soviel du willst. Irgendwann musst du 
ins kalte Wasser springen und einfach mal anfangen.

Der Einstieg kostet ein bischen Geld, schon richtig. Speziell dann, wenn 
es darum geht, selber Hardware an den µC drann zu bauen. Aber da führt 
kaum ein Weg drann vorbei. Höchstens ein Entwicklungsboard, welches 
schon einige Komponenten mitbringt (zb das Pollin Board).

Aber abgesehen davon: Wecker ist schon zu komplex. Ein guter Einstieg 
ist erst mal - tata: ein paar LED an den µC hängen und mit denen 
spielen. Einzeln ein-/ausschalten, Muster programmieren, Lauflichter, 
etc. Das ist das kleine Einmaleins der µC-Programmierung.

von Oliver J. (skriptkiddy)


Lesenswert?

ruNN0r schrieb:
> Ich habe etwas über das PicKit3 gefunden... jedoch scheint der nicht
> sehr viele Familien und Bausteine zu unterstützen
Mit dem PICKIT3 sollte man eigentlich alles, was PIC im Namen hat und 
Flash besitzt, brennen können.
Das PICKIT3 gibts auch als Clone in der Bucht für knapp über 20€. Ich 
hab so eins und bin damit zufrieden.

Gruß Oliver

von Ottmar K. (wil1)


Lesenswert?

Hallo ruNN0r,
leider bist Du hier bei den AVR-Atmel-Freaks gelandet. Über PIC findest 
Du hier nicht besonders viel.

Ich bin mit den PIC's voll zufrieden. Meine ersten Gehversuche habe ich 
erfolgreich mit Hilfe der Seiten von "sprut" 
[http://www.sprut.de/index.htm] gemacht. Dort findest Du alle für den 
Anfang erforderlichen Grundlagen und Infos.
Preislich ist die Tendenz eher zu Gunsten der Pics. Schau doch einfach 
mal bei Reichelt nach den Preisen und vergleiche selbst!

@Lothar Miller
Was Du daüber das Microchip-Entwicklungsssytem MPLAB schreibt ist 
einfach falsch! Ich hatte NOCH NIE damit ein Problem!

Gruss Ottmar

von ruNN0r (Gast)


Lesenswert?

Hey,
erst mal vielen Dank! Das ging ja schnell bei euch ;)

@Lothar Miller:
Zu Teuer: Naja ich habe Teilweise Boards gesehen die als StarterKit 
galten und über 100 oder 200€ kosteten. War da sehr erschrocken! Ich 
dachte da an MAX. 80€ für das Programmier-equipment!
Quelle: Wie von Ottmar erwähnt. Sprut (Link nicht möglich)
Aber bei dem Brenner 8 ist mir aufgefallen dass ich erst mal den 
PIC18F*** Programmieren muss um diesen Brenner nutzen zu können! Sonst 
fand ich alles klasse da... unübersichtlich, aber sehr gut beschrieben 
und Detailreich!

@Karl Heinz Buchegger:
Ja, nur kann ich mich nicht entscheiden da ich irgendwie diese AVR Sache 
nicht verstehe... bei den PICs habe ich die arbeitsweise nun verstanden 
(denke ich) und einige Beispiele gesehen. Aber die AVR sachen... ich bin 
diesesn Tutorial hier noch mehrmals durchgegangen und irgendwie bleibe 
ich immer wieder stecken... bei einigen sachen... jedoch würd ich es 
gern verstehen um mich entgültig entscheiden zu können... daher war 
meine Frage wo die unterschiede sind.

Der Wecker soll auch nur mein nächstes Projekt sein. Eine Uhr mit 
Countern habe ich bereits gebaut... nur für die 1Hz Taktung habe ich 
eine Schaltung... ich nenne es mal "Adaptiert" ^^ geklaut klingt so böse 
^^

@Oliver J.:
Irgendwo habe ich eine Liste gefunden wo die Unterstützten PICs drin 
standen... Finde es leider nicht wieder... Kann natürlich auch von der 
Software abhängig gewesen sein... denn laut einer Anleitung soll der das 
PICKit3 nur mit deren Software laufen!

@Ottmar K.:
Wie erwähnt, die Seite ist mir bekannt aber trotzdem Danke ;)

---------------------------------------

Also ich werde noch mal versuchen mich in die AVR geschichte reinzulesen 
und mich entscheiden. Eure Infos waren schon mal sehr hilfreich und 
haben mir Denkanstöße gegeben. Ich werde mich mal weiter informieren. 
Wenn Ihr noch Ideen, Tipps, Tutorials usw. habt: Immer her damit! Egal 
was! ;)

von Frank K. (fchk)


Lesenswert?

ruNN0r schrieb:

> Mein nächstes Projekt ist z.B. ein Wecker. Aber was nehme ich da, wo
> sind die Unterschiede? Ich habe nun seeehr viel über PICs gelesen.
> PIC16F*** PIC18F*** fand ich so schon mal nicht so schlecht! Wie ist
> eure meinung? Ist dies gut für anfänger? Ich bin Informatikstudent...
> zwar im ersten Semester aber ein wenig Erfahrung von Digitaltechnik und
> I/O bringe ich mit ^^

Schau Dich auch bei den PIC24/dsPIC und PIC32 um. Die sind angenehmer zu 
programmieren.

> Ich habe mich teilweise schon für PIC** entschieden.

Gut!

> Jedoch bereitet mir
> der Brenner sorgen. Ich möchte nicht zu eingeschränkt sein. Einen PIC
> Brenner selber bauen ist ganz nett, dazu muss ich aber einen PIC
> programmieren um einen Brennen zu können (laut tutorial)...

Einen Brenner willst Du nicht. Damit kannst Du nur brennen, aber nicht 
debuggen. Die Brenner sind noch aus der Zeit, als die PICs nur einmal 
programmierbar oder UV-löschbar waren. Das war Anfang der 90'er und ist 
heute nicht mehr relevant.

> Ich habe etwas über das PicKit3 gefunden... jedoch scheint der nicht
> sehr viele Familien und Bausteine zu unterstützen... Einen Link kann ich
> leider nicht anfügen... Der wird als hier als Spam erkannt ;)

Das PicKIT3 kann so gut wie alle aktuellen PICs programmieren und 
debuggen, und zwar PIC16, PIC18, PIC24, dsPIC und PIC32.

> Jedoch besitze ich derzeit auch nur einen Laptop und brauche somit einen
> Brenner der per USB arbeitet! Aber zu teuer darf der auch wieder nicht
> sein ^^ Wie schon gesagt, bin Student.

Kaufst Du hier für 42,59€:
http://hbe-shop.de/Entwicklungskits-und-BoardsHalbleiter-ToolsHalbleiter-Zubehoer177-1323

Den Rest holst Du Dir bei microchip.com: MPLAB IDE, den passenden 
Compiler für Deine Architektur, Application Libraries. Beim Compiler 
nimmst Du die Lite-Versionen, die sind kostenlos und reichen für Dich.

> Naja dann noch ... Wo ist der Unterschied zu den AMTEL Controllern?

Atmel AVR meinst Du.
Vorteile AVR:
- verbreitet
- GCC verfügbar (wie bei PIC24/dsPIC/PIC32)
- angenehm in Assembler zu programmieren

Nachteile AVR:
- AVR Default-Programmierschnittstelle ISP: nur programmieren, nicht 
debuggen; PIC: ICSP kann mit nur zwei Pins plus Reset programmieren UND 
debuggen
- JTAG zum Debuggen nur bei größeren Bausteinen verfügbar, braucht viele 
Pins, JTAGICE sehr teuer
- nicht so große Auswahl an Typen und Peripherie, kein AVR mit 
eingebauten Ethernet (PIC: ja, PIC18F67J90 Familie, PIC32), kein kleiner 
AVR mit CAN erhältlich
- Peripherie ist bei Microchip leistungsfähiger

Vorteile PIC:
- Herstellersupport von Microchip sehr gut
- viele Peripheriebibliotheken von Microchip verfügbar (TCP/IP, USB, 
Bluetooth, WLAN, Grafik)
- Alles passt nahtlos zusammen (IDE, Compiler, Debugger, Bibliotheken), 
Inbetriebnahme einfacher

Nachteile PIC:
- PIC16/PIC18: sehr alte Architektur, max 3968 Bytes RAM möglich (PIC24: 
Architektur ähnlich AVR aber 16-bittig, PIC32: MIPS-Kern (vgl alte 
SGI-Workstations, sehr leistungsfähig)

fchk

von dunno.. (Gast)


Lesenswert?

in meiner FH werden mitlerweile MSP (430 glaube ich) benutzt.

ich find, so zum µC ausprobieren, erfahrungen in C sammeln, und mal 
erste I/Os machen, ist das launchpad doch bestechend..?

von ruNN0r (Gast)


Lesenswert?

@Frank K.
Alter schwede!!! VIELEN DANK!!!
Deine Infos waren/sind echt klasse. Du hast mich überzeugt. Es wird der 
PIC ^^ Trotzdem werde ich zunächst ältere Chips verwenden PIC16 oder 18. 
Dafür gibt es einige nette Tutorials oder Schaltungen die ich zum 
probieren nachbauen kann. Für eigene Projekte werde ich mich dann an die 
von dir genannten wenden ;) Hab noch ein wenig gelesen und was alles 
möglich ist... wow. Freu mich jetzt schon rumzubastelln und meine erste 
Errungenschaft fertigzustellen ;)

Achja und danke für den günstigen Link ;)

von Frank K. (fchk)


Lesenswert?

ok, dann brauchst Du jetzt ein paar Downloads:

1. MPLAB IDE. Nimm die ältere MPLAB8. Die neuere MPLABX ist noch ganz 
neu, das kann an der einen oder anderen Stelle noch haken. Die 8'er 
funktioniert einwandfrei und ist bugarm, sieht aber nicht so schön aus.

http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en019469&part=SW007002

2. Compiler - die Lite-Versionen sind für Dich:

http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en534868&page=wwwCompilers

3. Application Libraries für TCP/IP, USB etc

http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=2680&dDocName=en547784

Zur Chipauswahl: PIC16 und PIC18 haben eine ähnliche Architektur. Bei 
PIC18 wurden allerdings einige Erweiterungen vorgenommen, damit es die 
C-Compiler einfacher haben brauchbaren Code zu erzeugen. Wenns geht, 
nimm also keine PIC16, es sei denn, Du willst für große Stückzahlen noch 
ein paar Cent sparen. Nimm von einer Familie immer den mit dem größten 
Speicher (Flash/RAM), das Knausern lohnt sich für Dich nicht.

Hier hast Du eine gute Auswahlhilfe. Da kannst Du anklicken, was Du 
brauchst, und bekommst dann die passenden Typen angezeigt.

http://www.microchip.com/productselector/MCUProductSelector.html

Und dann mal viel Spaß.

fchk

von Anja (Gast)


Lesenswert?

ruNN0r schrieb:
> Trotzdem werde ich zunächst ältere Chips verwenden PIC16 oder 18.

Noch ein paar Infos:

Im 28-poligen Gehäuse (falls Dir das ausreicht)
ist der PIC18F2520 quasi das upgrade zum beliebten PIC16F876.

Wobei ich inzwischen auch den PIC24FV32KA302 verwende
(gibts bei DigiKey)

Gruß Anja

von W.S. (Gast)


Lesenswert?

Der Spruch von der  "sehr alten" Architektur ärgert mich ziemlich. Man 
bedenke, daß die Architektur vom ARM noch viel älter ist und die von 
MIPS (PIC32) ebenfalls und (eigentlich) die vom "Intel inside" PC und 
neuerdings auch MAC ist ebenfalls sehr alt.

Es kommt nicht auf das angebliche Alter von Architekturen an. Die 
Architektur der Atmel-AVR ist eher als "klassisch" zu bezeichnen, wo man 
eine CPU mit Registern hat und dazu dann einen RAM und (wenn mich meine 
Erinnerung nicht trügt) einen extra I/O-Bereich. Die Architektur der 
PIC's ist hingegen sehr viel anders, etwa so wie beim Z8, wo die meisten 
Operationen nicht in CPU-Registern, sondern direkt im RAM stattfinden. 
Ich find's genial, aber manche Leute mögen es eben eher klassisch, die 
greifen dann zu Atmel. Die kleineren PIC's (16Fxxx) sind aus ihrer 
Historie heraus auch eher für kleinere Aufgaben in Assembler gedacht, 
aber sie sind sehr vielseitig, wenn man sich die Mühe macht, das Manual 
zu lesen.

Du merkst schon, daß ich eher zur PIC-Fraktion gehöre. Meine 
AVR-erfahrungen basieren hauptsächlich auf dem Mega169, weil der ein gut 
benutzbares LCD-Interface hat (4 Backplanes+25 Segmente). Aber 
mittlerweile gibt's sowas auch bei den PIC's.

Aber - bei allem Streit zwischen PIC und AVR - solltest du nicht 
vergessen, daß es auch noch mehr uC gibt und daß es gerade bei den 
Cortexen einiges an wirklich billigen Programmier-Bastel-Kits gibt. Und 
nochwas: Überschätze diese ganze Debuggerei nicht. Programmieren muß man 
so einen Chip immer, aber einen Debugger braucht man eigentlich nicht, 
wenn man lesen, verstehen und denken kann. Deswegen tun es all 
diejenigen Chips auch, die einen fest eingebauten Bootlader haben, den 
man per V24 benutzen kann (z.B. die Arms/Cortexe von NXP und ST). Ich 
hab mit denen schon einiges gebastelt und dabei nie nen Debugger 
gebraucht. Ja, ich habe einen von Segger, aber der liegt faul in seiner 
Schachtel und wartet darauf, daß ich ihn wirklich mal benötige.

Besorg dir mal per Internet ne Freikarte für die Embedded in Nürnberg 
und fahre hin (wenn nicht gerade Prüfungen anstehen..). Mit etwas Glück 
drückt dir dort jemand ein Kit mit nem einfachen Bastel-Board inclusive 
Programmieradapter und ner Software-CD einfach so in die Hand. Für 
Studenten haben die Leute dort meist was übrig.

W.S.

von Frank K. (fchk)


Lesenswert?

W.S. schrieb:
> Der Spruch von der  "sehr alten" Architektur ärgert mich ziemlich. Man
> bedenke, daß die Architektur vom ARM noch viel älter ist

Das stimmt nicht. Die klassische PIC-Architektur entstand Mitte der 
1970'er Jahre bei General Instruments, aus deren Halbleitersparte Ende 
der 1980'er Microchip hervorging. ARM und MIPS sind Kinder der 80'er.

Dem Rest stimme ich zu, bis auf ...

> nochwas: Überschätze diese ganze Debuggerei nicht. Programmieren muß man
> so einen Chip immer, aber einen Debugger braucht man eigentlich nicht,
> wenn man lesen, verstehen und denken kann. Deswegen tun es all
> diejenigen Chips auch, die einen fest eingebauten Bootlader haben, den
> man per V24 benutzen kann (z.B. die Arms/Cortexe von NXP und ST). Ich
> hab mit denen schon einiges gebastelt und dabei nie nen Debugger
> gebraucht. Ja, ich habe einen von Segger, aber der liegt faul in seiner
> Schachtel und wartet darauf, daß ich ihn wirklich mal benötige.

Natürlich geht es auch ohne. Früher haben wir EPROMs gebrannt, in das 
Zielsystem gesteckt und geschaut, ob's geht. Und wenn nicht, eine 
Änderung gemacht, ein neues EPROM gebrannt und wieder probiert. Und wir 
wurden auch fertig.

Ein Debugger macht allerdings viele Sachen einfacher, und wenn ich mir 
das Leben einfacher machen kann, dann mache ich es auch. Zumal das bei 
mir inzwischen mehr als nur Zeitvertreib ist und Zeit inzwischen für 
mich bares Geld ist.

fchk

von -schumi- (Gast)


Lesenswert?

Frank k. schrieb:
> Nachteile PIC: ...

Ich bin mir nicht ganz sicher ob das immer noch alles aktuell ist, oder 
ob die PICs nun aufgeholt haben und würde dich bitten diese Aussagen zu 
bestätigen/wiederlegen:

#1 Es gibt nur ein einziges (!) working Register, durch das man 
praktisch alles durchschieben muss was man machen möchte -> viel 
langsamer/ineffektiver als beim AVR
#2 Die Teilung des Taktes durch 4
#3 Kann nicht per Hardware Multiplizieren sondern das muss mit 
umständlicher und langsamer Software realisiert werden
#4 Das aufsplitten des RAMs in Bänke - zu was das gut sein soll hat sich 
mir nie erschlossen...^^

Falls das immer noch so ist sind die AVRs den PICs leistungstechnisch um 
längen überlegen... (Erschwerend kommt dazu, dass die meisten AVRs 
schneller getaktet werden können als PICs)


(Mir persönlich sind AVRs deutlich lieber, ich finds doof dass in den 
Prüfungen der IHK PICs dran sind und freu mich dass ich die Controller 
beim betrieblichen Auftrag selbst aussuchen darf :-D )

von Anja (Gast)


Lesenswert?

-schumi- schrieb:
> #1 Es gibt nur ein einziges (!) working Register, durch das man
> praktisch alles durchschieben muss was man machen möchte -> viel
> langsamer/ineffektiver als beim AVR
> #2 Die Teilung des Taktes durch 4
> #3 Kann nicht per Hardware Multiplizieren sondern das muss mit
> umständlicher und langsamer Software realisiert werden
> #4 Das aufsplitten des RAMs in Bänke - zu was das gut sein soll hat sich
> mir nie erschlossen...^^

Zu #1 jein: Du hast die Architektur nicht verstanden. Im Gegenteil. Der 
AVR hat nur 32 Working Register. Beim PIC ist jeder Befehl auf jede 
RAM-Zelle und jedes I/O-Register anwendbar. Im Schnitt braucht ein PIC18 
nur 2 Befehle da wo der AVR 3 braucht.

Zu #2 stimmt für PIC16 und PIC18. Bei PIC24 wird nur noch durch 2 
geteilt. (und zwar nachdem erst mal der Quarz mittels PLL vervielfacht 
wurde).

Zu #3 ab PIC18 gibt es den Hardware-Multiplier. Die ersten AT90Sxxxx 
hatten übrigens auch keinen Hardware Multiplier.
Außerdem erschließt sich mir nicht wofür man bei einer Uhr einen 
Hardware-Multiplier braucht.

zu #4 hängt wohl an der großen Anzahl Working Register.

Das mit der Effizienz muß man wohl näher beleuchten:
Die AVRs sind bei gleichem Quarz natürlich schneller als ein PIC16 oder 
PIC18, brauchen aber dafür auch entsprechend mehr Strom was bei 
Batterieanwendungen eher ärgerlich ist.
Wenn man die Mips/mA in konkreten Anwendungen vergleicht, habe ich 
festgestellt daß beide etwa gleich leistungsfähig sind, also den 
gleichen Strom verbrauchen.
Ansonsten: bei normalen Anwendungen (Uhr) wirst Du nie an die Grenze 
kommen wo es einen Unterschied macht ob du einen PIC oder AVR 
verwendest.

-schumi- schrieb:
> und freu mich dass ich die Controller
> beim betrieblichen Auftrag selbst aussuchen darf :-D )

Das wird Dir dann der Einkauf schon noch sagen welchen Kontroller du bei 
größeren Stückzahlen zu verwenden hast. (z.B. einen aus der ST6-Serie)

Gruß Anja

von -schumi- (Gast)


Lesenswert?

Anja schrieb:
>-schumi- schrieb:
>> und freu mich dass ich die Controller
>> beim betrieblichen Auftrag selbst aussuchen darf :-D )
>
>Das wird Dir dann der Einkauf schon noch sagen welchen Kontroller du bei
>größeren Stückzahlen zu verwenden hast. (z.B. einen aus der ST6-Serie)

Ich dachte jetzt eher an die Abschlussprüfung der Ausbildung EGS..^^

>Ansonsten: bei normalen Anwendungen (Uhr) wirst Du nie an die Grenze
>kommen wo es einen Unterschied macht ob du einen PIC oder AVR
>verwendest.
Das ist mir natürlich klar - war jetzt eher allgemein gedacht.

Vielen Dank
-schumi-

von Frank K. (fchk)


Lesenswert?

-schumi- schrieb:

> Ich bin mir nicht ganz sicher ob das immer noch alles aktuell ist, oder
> ob die PICs nun aufgeholt haben und würde dich bitten diese Aussagen zu
> bestätigen/wiederlegen:

DIE PICs ist erstmal schon falsch. In den Köpfen der meisten Leute gibts 
nur die alten PIC16/PIC18. Schau Dir mal PIC24 dsPIC und PIC32 an. Das 
sind ganz andere Architekturen, deutlich leistungsfähiger als PIC18 und 
AVR, aber mit den gleichen Tools wie PIC18 zu programmieren.

> #4 Das aufsplitten des RAMs in Bänke - zu was das gut sein soll hat sich
> mir nie erschlossen...^^

Das hat mit der Äquivalenz RAM=Register zu tun, hat sich aber bei PIC18 
auch erledigt. Der braucht das nicht mehr.

> Falls das immer noch so ist sind die AVRs den PICs leistungstechnisch um
> längen überlegen... (Erschwerend kommt dazu, dass die meisten AVRs
> schneller getaktet werden können als PICs)

Wie gesagt ... schau Dir mal die größeren Architekturen an. Fürs gleiche 
Geld bekommst Du dort deutlich mehr Leistung.

fchk

von Simon H. (simi)


Lesenswert?

Anja schrieb:
> -schumi- schrieb:
>> #1 Es gibt nur ein einziges (!) working Register, durch das man
>> praktisch alles durchschieben muss was man machen möchte -> viel
>> langsamer/ineffektiver als beim AVR

Anja schrieb:
> Zu #1 jein: Du hast die Architektur nicht verstanden. Im Gegenteil. Der
> AVR hat nur 32 Working Register. Beim PIC ist jeder Befehl auf jede
> RAM-Zelle und jedes I/O-Register anwendbar. Im Schnitt braucht ein PIC18
> nur 2 Befehle da wo der AVR 3 braucht.

Zu Schumi's "Ehrrettung":
Ich glaube nicht, dass es daran liegt. Ich kenne den aktuellen Stand 
(auch) nicht, aber es gab Zeiten, wo Schumi's Aussage stimmte. Die guten 
alten 8-Bit-PICs (PIC16 waren das glaub ich) waren definitv sog. 
Akkumulator-Maschinen. Nur, dass der Akkumulator eben "W-Register" 
hiess.
Aber eben, wie Schumi selber schon sagte, er (und ich auch) weiss nicht, 
inwieweit das bei modernen PICs noch so ist.

von Meister E. (edson)


Lesenswert?

Simon Huwyler schrieb:
> Ich glaube nicht, dass es daran liegt. Ich kenne den aktuellen Stand
> (auch) nicht, aber es gab Zeiten, wo Schumi's Aussage stimmte. Die guten
> alten 8-Bit-PICs (PIC16 waren das glaub ich) waren definitv sog.
> Akkumulator-Maschinen. Nur, dass der Akkumulator eben "W-Register"
> hiess.

Ist auch nicht ganz richtig. Aufklärung gibt ein Blick auf die Interna: 
Die ALU hat sinnvollerweise zwei Eingangsworte. Eins davon ist immer der 
Akkumulator (WREG), das andere hat einen Multiplexer vorgeschalten, der 
entweder ein File-Register (RAM) oder einen Teil des Opcode durchlässt 
(immediate value). Am Ausgang der ALU kann man für manche Befehle 
vorgeben, ob das Ergebnis in den Akkumulator oder ein File-Register 
geschrieben wird. Es ist also an jeder Operation der Akkumulator 
beteiligt, das heisst aber nicht dass in jedem Fall ein separates 
"umspeichern" vom Akkumulator ins RAM erfolgen muss, da dies innerhalb 
eines Befehls per Hardware erfolgen kann.

Gruß,
Edson

von Peter D. (peda)


Lesenswert?

Ob nun der AVR oder PIC sparsamer mit Flash umgeht, ist sowas von egal, 
da sie genügend haben. Außerdem ist der 8051 deutlich sparsamer als 
beide, zumindest bei kleinen Programmen bis ~16kB.

Und ob einer etwas schneller ist, spielt in der Praxis auch keine Rolle. 
Ich hab lange standard 8051 verwendet (12MHz/12 = 1MIPS) und hatte nie 
das Gefühl, daß mir CPU-Zeit fehlt.

Unschön am PIC ist aber, daß man im Interrupthandler erstmal die Quellen 
auseinander klamüsern muß. Andere Architekturen haben je Quelle einen 
eigenen Vektor.

Ich setze hauptsächlich AVRs ein und habe sehr gute Erfahrungen damit. 
Sie sind sehr robust und zuverlässig. Das ist für mich sehr wichtig, da 
ich in den Geräten bis zu 30kV steuern muß.
Der AVR-GCC macht die Programmierung auch sehr einfach. Allerdings hat 
der GCC manchmal merkwürdige Ansichten bezüglich Optimierung.


Peter

von ruNN0r (Gast)


Lesenswert?

Wow... nun geht ihr aber ab ^^ von einigen Sachen habe noch nichts 
gehört und mich damit noch nicht beschäftigt :D
Learning by Doing...

Ich hab mir nun überlegt:
das PICKit3 kaufen.
Eine Platine (oder Steckboard) fertig machen mit Tastern und LEDs.
Einfach mal rumprobieren... Dazu würd ich gern einen großen IC nehmen... 
da ich später auch größere dinge Testen will... Meine Kenntnisse in 
"Sparsamer" Programmierung halten sich logischer weise noch in grenzen 
^^ Dies werde ich dann in der Praxis ausarbeiten...

Was haltet ihr von diesem CHIP:
PIC 18F46K20-IP     <- Reichelt Art.Nr.
Wenn ich das Datenblatt richtig verstehe besitzt dieser auch einen 
Internen Takt und ich muss keinen Quarz ansetzten!?

Mit 36 I/O Pins sollte ich auch erst mal auskommen :D

Wie ist eure Meinung? Gute Idee oder voll daneben?

Eine Frage kam mir noch auf...
der 8-Bit Timer und 16-Bit Timer...
Ich weiß nicht ob ich den richtig verstanden habe...
So habe ich es verstanden:
der Timer zählt jedes mal bis 2^8 bzw 2^16.
Der 18F46 hat 64MHz (hey, mein alter 486 auch ^^) also gibt es pro 
Sekunde 250.000 Overflows bei dem 8Bit Timer und 976,5625 bei dem 16Bit 
Timer.

Auf diese art und weise könnte ich also meiner Uhr näher kommen oder? 
also wenn 250.000 Overflows voll sind, habe ich eine Sekunde erreicht...
Sprich mit diesem Timer im innern kann ich Wartezeiten Programmieren 
oder auch LEDs Blinken lassen.

Ist dies so halbwegs richtig?

von MagIO (Gast)


Lesenswert?

Also ich hab schon so einige uC programmiert (PIC/AVR/Renesas/8051..) 
und bin beim Propeller hängen geblieben. Für Einsteiger bietet sich das 
QuickStart-board an. Einfach per USB an den Lappi anhängen und überall 
loslegen ;o)
Für Anfänger ist es außerdem sehr bequem, dass der Propeller keine 
Interrupts hat und man keinerlei Configurations-Register braucht, um die 
Hardware-Interfaces zum Laufen zu bringen. Aber das nur so am Rande.

Da du ja Informatiker bist kann ich hier auch mal ein wenig kleinlich 
sein ;o) Natürlich zählt der 8-bit Timer nicht bis 2^8, sondern NUR bis 
2^8-1 ... dito für den 16-bit Timer.
Aber ich glaube in deiner Rechnung hast du nicht berücksichtigt, dass 
der timer nicht mit dem system-takt läuft, sondern mit Fosc/4 (zumindest 
in dem PIC16-datasheet und ich hoffe mal bei deinem PIC ist es auch so 
;o)
Auf jeden Fall bietet es sich an den timer noch so aufzusetzen, dass ein 
prescaler eingesetzt wird. Ansonsten frisst dir die Interrupt-Routine 
mehr CPU-Zeit, als nötig. Vermutlich würde der Rest an CPU für die 
simple Tätigkeit eine Uhr durchaus reichen, aber lieber gleich 
verstehen, was da passiert und richtig machen!

Auf Dauer wirst du allerdings mit einer rein internen Zeitbasis nicht 
sonderlich glücklich. Ich würde auch wegen des Lern-Effektes einen 
Funkempfänger empfehlen (DCF77-modul). Die gibt es z.B. bei Pollin für 
um die 6Euro glaube ich. Der liefert nicht nur die Uhrzeit, sondern auch 
einen genauen Sekunden-Takt. Dann braucht man den internen Timer nur 
noch als backup (für die 60. sekunde und falls das signal mal ausfällt).

von ich (Gast)


Lesenswert?

ruNN0r schrieb:
> Wenn ich das Datenblatt richtig verstehe besitzt dieser auch einen
> Internen Takt und ich muss keinen Quarz ansetzten!?
>
> Mit 36 I/O Pins sollte ich auch erst mal auskommen :D
>
> Wie ist eure Meinung? Gute Idee oder voll daneben?

Für den Einstieg reicht ansich jeder µC aus. Mit diesem wirst du erstmal 
nicht an Grenzen stoßen. Ja, er hat einen Internen Oscillator. Den 
kannst du soweit auch erstmal benutzen, doch er ist ansich nie so genau, 
wie von außen beschaltete Quarze oder allg. Taktgeber. Wann ein genauer 
Takt nicht benötigt wird, ist der interne ausreichend (ob eine LED nun 2 
Sekunden anbleibt oder 2,00001 Sekunden, ist ja wohl egal, wenns für die 
Optik ist). Doch bei Zeitgenauen Sachen, wie z.B. USB, RS232 oder auch 
eine Uhr ;) ist ein Externer Quarz (es gibt auch Uhrenquarze) quasi 
Pflicht damit alles gut hinhaut. Teuer sind die auch nicht und 2 IOs 
weniger macht bei 36 auch nicht viel.


ruNN0r schrieb:
> Ist dies so halbwegs richtig?

Du hast eine Taktquelle mit 64MHz. Das macht für den SystemClock 64MHz 
durch 4 = 16MHz oder anders, 62,5ns. Mit einem Takt wird über einen 
Zähler der Timer um eins erhöht. Also bei 8 bit sind das 256 Takte bis 
zum Overflow (also 16µs) und bei 16bit 65536 Takte -> 4096µs. Du kannst 
dem Timer aber auch einen Startwert geben und auch einen Vorteiler 
einstellen. Wenn du also einen Vorteiler von 32 einstellst, hat dein 
8bit Timer den Overflow nach 512µs (pro Takt 2µs). Wenn du jetzt weißt, 
dass der Timer nach 2µs um 1 erhöht ist, kannst du den Startwert auf 6 
legen und er is 6 Takte -> 12µs früher am overflow'en ;) Also genau nach 
500µs. Wenn du einen 2. Zähler bei jedem Overflow um 1 erhöhst, dann 
kannst du sagen, dass du beim Wert 200 eine Zeit von 100ms, also 1/10 
Sekunde gewartet hast.

Dein "Problem" ist (als Anfänger und mit ASM statt Hochsprache), dass du 
nur 8bit bzw 1Byte Speicherzellen hast, das heißt du hast deine 
Speicherzelle nach 255 (127,5ms) ausgeschöpft. Das hieße, dass du dort 
auch den Overflow (Carrybit) prüfen musst und eine 2 Zelle um eins 
erhöhen musst. In beispielsweise C kannst du einen 16bittigen Integer 
nehmen und einfach bis 2000 hochzählen.

Nur.. eine Uhr ist für den µC sehr langweilig (im Sinne von: der µC hat 
nichts zutun). Und da nützt es auch nichts den schnellstmöglichen Takt 
zu haben, eher im Gegenteil, da je höher der Takt, desto höher der 
verbrauchte Strom, was grade bei Batteriebetriebenen Sachen (wie z.B. 
eine Uhr) wichtig ist. Das gilt im übrigen auch für LED/Schalter 
Anwendungen. Und: Im vom mir genannten Rechenbeispiel ist es auch so, 
dass der µC sowieso zu 99% den Timer hochzählt und zu den anderen % dann 
Ausgänge setzt oder Eingänge liest. Also wenn man nur einen 4MHz Takt 
nimmt -> geteilt durch 4 -> einen 1MHz Systemclock hat, dazu den 
Vorteiler 32, dann ist der Takt, der den Timer hochzählt ~32kHz und ein 
Takt ist 32µs lang. Man sieht hier auch: Man hat den Takt durch 16 
geteilt, also multipliziert sich die Zeit pro Takt mit 16. Einen 
Overflow gibts also nach 8,192ms. Auch hier wieder mit einem Startwert 
so eingestellt, dass es nach 8ms einen Overflow gibt und somit wären 
eine Sekunde 125 mal 8ms. Und siehe da: 125 passt in eine 
8bit-Speicherzelle. Und wenn die Anwendung die ist, dass eine Taste 
gedrückt wird und direkt eine LED für 1s angeht, dann ist 1MHz mehr als 
ausreichend und erleichtert auch noch die Programmierung.

Du siehst, nicht immer ist der/das schnellst der/das beste.

Zu deiner Uhr. Es gibt wie genannt auch ein DCF-Signal, womit du eine 
recht gute und genaue Uhr machen kannst, die du nichtmal groß Stellen 
musst, außer evtl Zeitzonentechnisch. Alternativ, ich seh es immer so 
als Mittelding zwischen Uhrenquarz am µC und DCF, ist ein RCT-Modul mit 
ggf internem Temperaturkompensierten genauen Oscillator. Den Spricht man 
über eine Schnittstelle an und dort ist die Zeit und das Datum 
gespeichert und wird automatisch durch den internen Takt geändert. Viele 
RCTs bieten auch einen oder mehrere Alarme an. Das heißt, du schreibst 
eine Zeit in gewisse Speicherzellen und wenn diese erreicht wird, wird 
ein spezieller Ausgang gesetzt und du kannst beispielsweise einen Pieper 
(oder über ein Relais eine Wasserpumpe) einschalten ;)


MagIO schrieb:
> Natürlich zählt der 8-bit Timer nicht bis 2^8, sondern NUR bis
> 2^8-1 ... dito für den 16-bit Timer.

Das tut er, doch er fängt auch bei 0 an, d.h. er hat nach 256 Takten 
einen Overflow, obwohl von der Zahl her nur 255 "darstellen" kann

von ich (Gast)


Lesenswert?

Du kannst dir ja mal hier auf der Seite den Artikel über PIC angucken, 
das fällt mir bei der (oft bemängelten) Vierteilung ein, zumindest der 
eine Abschnitt:
http://www.mikrocontroller.net/articles/PIC#Missverst.C3.A4ndnisse_und_Eigenheiten

Auch die Anderen Abschnitte zum Brennen oder Compilern z.b.


Wer englisch versteht, dem kann ich das genannte Video nur empfehlen. 
Gerade für die Leute, die immer den eigenen µC beschützen und als einzig 
Wahres verkaufen wollen.

von ruNN0r (Gast)


Lesenswert?

hi,
zu den 2^8-1: Ja, ich habe mich da falsch ausgedrückt. Er zählt bis 
2^8-1 aber nimmt 2^8 zählungen vor bzw. hat 2^8 Takte... ;)

ich schrieb:
> Du hast eine Taktquelle mit 64MHz. Das macht für den SystemClock 64MHz
> durch 4 = 16MHz [...]

Du teilst durch 4 weil, ... der PIC 4 Timer hat?!
Bei dem Rest lag ich ja gar nicht mal so verkehrt... Den Vorteiler 
kannte ich, hatte ich aber einfach erst mal außer acht gelassen ;)

Den PIC18F46 habe ich ja nur als TestPIC gewählt zum rumprobieren... 
Sollte also nicht unbedingt (wenn nicht erforderlich) für ein Späteres 
Projekt genutzt werden ^^

Das DCF-Modul kannte ich bereits jedoch das RTC noch nicht. Bechäftige 
ich mich aber erst mit, wenn ich mich dann wirklich an meine Uhr mache 
^^

Zunächst war geplant eine 8x9 LED Matrix aufbauen und diese dann von dem 
PIC aus anzusteuern... Da kann ich dann erst mal einzelne LEDs Blinken 
lassen. Objekte oder so erzeugen... wie es mir beliebt... und wenn ich 
dann Komplexere Sachen anzeigen lassen will, brauch ja eine 
Bildwiederholung und da kann ich mich dann ja auch gleich an den Timer 
gewöhnen ;)

von ich (Gast)


Lesenswert?

ruNN0r schrieb:
> Du teilst durch 4 weil, ... der PIC 4 Timer hat?!

Nein, mit den Timern hat es nichts zutun. Das ist eine (bei vielen 
komischerweise sehr nachteilige) Eigenschaft der 8bit PICs. Der Takt 
wird intern durch 4 geteilt. Aber nicht einfach nur so, um zu bremsen, 
sondern so können manche Dinge in nur einem Systemtakt durchgeführt 
werden. Als Beispiel muss ein µC aus dem Speicher einen Wert holen (1. 
Schritt), dann muss er ihn mit einer anderen Addieren (2. Schritt) und 
dann muss er ihn wieder ins Register zurückschaffen (3. Schritt). Das 
heißt, man braucht für eine Addition 3 Schritte und somit auch 3 Takte. 
Und durch die Vierteilung laufen quasi die vier Takte/Schritte im 
Hintergrund und machen das alles und deswegen ist die Addition in einem 
Systemtakt abgearbeitet (auch wenn er aus mehreren Schritten besteht). 
Da darfst du nicht durcheinander kommen. Es gibt Fosc und Fcyc. Fosc ist 
der Takt, der reinkkommt und Fcyc ist der durch 4 geteilte System- oder 
Cycletakt.

In dem Datenblatt 
(http://ww1.microchip.com/downloads/en/DeviceDoc/41391D.pdf) steht auch 
ab Seite 327, wieviele Cycles ein Befehl braucht. Und du siehst es ist 
meistens nur einer. Wenn dir jemand also sagt, sein µC wär schneller, 
weil er kein 4 Teiler drin hat, dann stimmt das erstmal nicht, da er pro 
Befehl mehr Cycles braucht. Der Unterschied ist nur bei den Befehlen, 
die z.B. 3 oder nur 2 Schritte haben und somit der PIC 1 oder 2 Takte 
nichts tut.

von ruNN0r (Gast)


Lesenswert?

Ah, ok... das mit den Timern war also nur Zufall ^^
Naja, etwas fehlerhafte Logik :D

Hab diesen Absatz nun gefunden:
External Resistor/Capacitor with
FOSC/4 output on RA6

Dies bedeutet also er gibt am RA6 den Fcyc Takt aus?!

So, ich mache gerade meinen Warenkorb fertig für meinen Start ^^
Jetzt habe ich noch mal eine super doofe Frage :D
Sprut greift gern auf Keramikresonator zurück. Ich werde jedoch Quarze 
nehmen. Aber welchen Quarz für Welchen µC ^^ also mein schon erwähnter 
PIC18F* hat ja 64MHz um diese zu nutzen doch auch einen 64MHz Quarz. 
ganz logisch eigentlich... Ich habe nun auch noch einen PIC 16F73 
eingepackt für später... dieser hat 20MHz also auch den Quarz... nun 
habe ich aber bei einigen Schaltungen schon gesehen dass einige einen µC 
nehmen mit 20MHz jedoch den nur mit einem 4MHz Quarz Tackten... bzw. mit 
einem 4,194304 MHz Quarz... Geht das? Kann man den µC "runtertakten". 
Sorry vielleicht ist die Frage echt doof aber ich denke mir, vielleicht 
gäbe es da Technische Probleme oder es gibt da einen tieferen Sinn...

Die Kondensatoren am Quarz... muss ich die irgendwie berechnen? die 
einen haben dort 18pF ein anderer 22pF. Oder ist das so ein pi mal 
daumen wert?

von Meister E. (edson)


Lesenswert?

ruNN0r schrieb:
> Aber welchen Quarz für Welchen µC ^^ also mein schon erwähnter
> PIC18F* hat ja 64MHz um diese zu nutzen doch auch einen 64MHz Quarz.
> ganz logisch eigentlich...

Vorsicht. Die maximalen 64MHz, bei der dein PIC noch innerhalb der Specs 
betrieben werden kann, müssen intern mit dem 4-fach PLL-Schaltkreis aus 
einer langsameren Grundfrequenz erzeugt werden. In deinem Fall also 
maximal einen 16MHz-Quarz verwenden.

ruNN0r schrieb:
> habe ich aber bei einigen Schaltungen schon gesehen dass einige einen µC
> nehmen mit 20MHz jedoch den nur mit einem 4MHz Quarz Tackten... bzw. mit
> einem 4,194304 MHz Quarz... Geht das?

Das geht auf jeden Fall. Bei PICs geht die System-Clock von DC bis Fmax 
(Device-abhängig).

Gruß,

Edson

von ruNN0r (Gast)


Lesenswert?

Der PIC18 hat ja einen Internen Takt... diesen werde ich verwenden... 
also brauche ich dort keinen Takt.

der PIC 16F73 jedoch ist ein 20MHz... diesen muss ich mit einem Quarz 
"austatten", also darf ich da max einen 5MHz Quarz nehmen?

von ich (Gast)


Lesenswert?

ruNN0r schrieb:
> Hab diesen Absatz nun gefunden:
> External Resistor/Capacitor with
> FOSC/4 output on RA6
>
> Dies bedeutet also er gibt am RA6 den Fcyc Takt aus?!

Das bedeutet, dass du den Takt (Fosc/4 -> also Fcyc) als Rechteck 
ausgeben KANNST. Du hast ein Config-Word, das ist eine Anzahl von Bits, 
die beim Programmieren mit geschrieben werden. Darüber kann man einiges 
einstellen, beispielsweise ob der PLL benutzt werden soll, aussuchen, ob 
man an dem einen PIN den Reset haben will ODER ein IO. Oder eben welche 
Taktquelle man haben will. Einen Langsamen Quarz, einen Schnellen Quarz, 
ein RC-Glied oder den Internen. Und wenn du z.B. den internen Oscillator 
nimmst, dann kannst du entscheiden, ob du den Pin mit RA6 (also dem 
vorletzten Bit vom PORTA) ODER ob du den Takt ausgeben willst um 
Beispielsweise andere Bauteile genau gleich laufen zu lassen wie den 
PIC.


ruNN0r schrieb:
> Ich habe nun auch noch einen PIC 16F73
> eingepackt für später...

Dir ist aber bewusst, dass der PIC18 mehr kann und auch schneller usw 
ist!? Für später klingt so... als wenn du mit nem einfachen schlechteren 
anfängst und dann später auf den besseren zurückgreifst^^


ruNN0r schrieb:
> Geht das? Kann man den µC "runtertakten".

Es ist ansich kein runtertakten. Die Frequenzen, die angegeben sind, 
sind Maximalwerte. Also da, wo er vom Hersteller garantiert läuft. Wie 
schon gesagt geht die Frequenz von DC (also Gleichspannung 0Hz) bis zur 
Maximalfrequenz. Also wenn du wolltest, könntest du auch einen Taster 
nehmen und den Takt selbst klicken. Dann dauert es natürlich etwas 
länger und du bekommst kaputte Finger ;) Aber rein praktisch 
funktioniert es.


ruNN0r schrieb:
> Die Kondensatoren am Quarz... muss ich die irgendwie berechnen? die
> einen haben dort 18pF ein anderer 22pF. Oder ist das so ein pi mal
> daumen wert?

Die werden im Datenblatt auch erwähnt. Ich hab meist 18pF genommen. Sehr 
kritisch ist der nicht, er darf nich zu groß und nich zu klein sein.

von ich (Gast)


Lesenswert?

ruNN0r schrieb:
> Der PIC18 hat ja einen Internen Takt... diesen werde ich verwenden...
> also brauche ich dort keinen Takt.
>
> der PIC 16F73 jedoch ist ein 20MHz... diesen muss ich mit einem Quarz
> "austatten", also darf ich da max einen 5MHz Quarz nehmen?

Also was du dir aufjedenfall, egal ob und welcher µC, angewöhnen 
solltest, ist das Datenblatt zu lesen. Dort steht für den PIC18 z.B. auf 
Seite 385, welche maximalen Frequenzen du bei den verschiedenen Modes 
haben darfst. Da steht z.B. auch drin, dass es ein 3,3V µC ist. Das 
heißt, du haust den mit 5V als Versorgung kaputt. Also nur das du es 
weißt. Es gibt aber auch viele (grad neue) PIC, die können alles von 
1,8V-5,5V ab. Die find ich persönlich besser, da die die 5V TTL 
abkönnen, notfalls aber auch mit 3,3V laufen können.

Im Datenblatt vom PIC16F73 steht, dass im HS (Highspeed) Mode die 
Maximalfrequenz 20MHz ist, also kannst du da auch direkt mit 20MHz rein. 
Dort steht z.B. auch auf Seite 92, welche Typischen, getesteten Werte es 
für verschiedene Quarze gibt. Ein weiteres Zeichen ist noch, dass der 
PIC16F73 deutlich älter ist (also auch kein Low-Power-Controller, also 
kein Stromsparender) und keinen PLL intern hat. Wenn er für 20MHz 
gemacht ist, du intern nicht die Möglichkeit hast den Takt zu 
"verschnellern", kann man ansich immer mit der maximalfrequenz auch da 
rein.

von ruNN0r (Gast)


Lesenswert?

ich schrieb:
> Wenn er für 20MHz
> gemacht ist, du intern nicht die Möglichkeit hast den Takt zu
> "verschnellern", kann man ansich immer mit der maximalfrequenz auch da
> rein.

Achso, ok. Dann hab ich das vorher falsch verstanden... sorry

ich schrieb:
> also auch kein Low-Power-Controller

Ahhh, ich glaub ich habe das Low-Power-Controller mit dem LVP (Low 
Voltage Programming) verwechselt... hmmm ok ich werde wohl meine Wahl 
der PICs noch mal überdenken müssen... Danke

ich schrieb:
> Dir ist aber bewusst, dass der PIC18 mehr kann und auch schneller usw
> ist!? Für später klingt so... als wenn du mit nem einfachen schlechteren
> anfängst und dann später auf den besseren zurückgreifst^^

Nein, so meint ich das nicht ;) Ich wollte den PIC18 wirklich nur so zum 
rumprobieren haben... einfach um zu basteln. wenn ich dann wirklich eine 
nützliche Schaltung habe und diese umsetzen möchte, möchte ich aber auch 
einen PIC da haben den ich evtl. dann dafür einsetzen kann. Oder halt 
nur um an dem rumzuprobieren und mir evtl. Unterschiede klar zu machen 
und das ganze besser zu verstehen... daher wollte ich gern 2 PICs aus 
zwei Familien haben... mehr steckt da nicht hinter... meine 
Gedankengänge sind da ein wenig verworren ^^

von ich (Gast)


Lesenswert?

ruNN0r schrieb:
> Ahhh, ich glaub ich habe das Low-Power-Controller mit dem LVP (Low
> Voltage Programming) verwechselt... hmmm ok ich werde wohl meine Wahl
> der PICs noch mal überdenken müssen... Danke

Bei LVP musst du "aufpassen". Es ist bei mir so gewesen, dass ich 
vergessen habe, es zu deaktivieren und dann kam der PIC durcheinander, 
wenn man mal die Pins angepackt hat. Allgemein bei den PICs ist es so, 
dass es von den Voreinstellungen "Prioritäten" gibt. D.h. Wenn du nur 
sagst, du setzt TRISA und meinst, deine Pins sind Eingänge, stimmt das 
ansich, doch bei den Pins, wo u.a. ein AD-Wandler hinter ist, ist dieser 
erstmal beschaltet. Also.. Wenn du digitale Eingänge haben willst, musst 
du den AD-Wandler für die Ports deaktivieren.

Die Wahl ist schon nicht schlecht, wenn du denn mit 3,3V hinkommst. 5V 
Alternativen gibts aber genug. Und zum 16F73: Er ist für vieles 
sicherlich ausreichend, aber oftmals sind neue und bessere PICs 
günstiger. Zum einen weil man den so schneller im Markt 
hochziehen/bekannt machen kann und weil die PICs billiger herzustellen 
sind.


ruNN0r schrieb:
> Unterschiede klar zu machen
> und das ganze besser zu verstehen... daher wollte ich gern 2 PICs aus
> zwei Familien haben... mehr steckt da nicht hinter...

Kannst du ja auch alles machen und wie gesagt reicht so ein PIC auch für 
viele Projekte. Doch wenn du dich in den PIC18 eingearbeitet hast, dann 
wirst du merken, dass der PIC16 ziemlich genauso ist, nur halt weniger 
und/oder schlechtere (8bit statt 10bit PWM als Beispiel) Peripherie hat. 
Aber die Module und deren Register sind ziemlich gleich aufgebaut. Aber 
das wirst du ja sehen ;)

von Erich (Gast)


Lesenswert?

Eine kleine Übersicht zu einfachen Pic16 / Pic18 und dem Pickit3 Tool 
mit erhältlichen EV-Boards habe ich gestern reingeschrieben in den 
Artikel

Beitrag "Pic 16f876 Unterschied"
Autor: Erich (Gast)
Datum: 25.01.2012 15:36

Die Pic16F1xxx sind die neuen Bauteile, welche z.B. auch die 10-Bit-PWM 
erzeugen können,
Pic16F1827 (18-Pin) und Pic16F1937 (40-/44-Pin), auch in DIP, das sind 
schöne Teile, günstig, auch bei Reichelt erhältlich.

Gruss

von Eideard D. (runn0r)


Lesenswert?

Ah, ok ich danke euch.
Was haltet ihr von dem:
PIC 18F442-I/P
der hat kein 64MHz sondern 40MHz...
Läuft mit 5V...

wenn ich mir das Datenblatt so anschaue und eure genannten "Regeln" und 
Hinweise anwende habe ich herrausgefunden:
Er hat PLL (habe ich der Schematik entnommen) und somit darf ich dort 
keinen 40MHz Quarz ansetzen... Auf Seite 18 habe ich die Tabelle der 
Quarze entdeckt... die Frage ist halt nur was ich nutzen soll... viele 
Projekte die ich gesehen habe wurden schon mit einem 4 MHz gemacht und 
da ich mich erst mal auf LED und evtl. eine LED Matrix beziehen will die 
ein bissel rumblinkt sollte es wohl reichen ^^ Somit wäre die Frage des 
Kondensators geklärt nämlich 15pF...

Also was haltet ihr davon? 3,3V sind mir definitiv zu komplex... dann 
muss ich wieder rumwerkeln und 5V kann ich meinem Netzteil so entnehmen.

von Peter D. (peda)


Lesenswert?

Eideard Dogan schrieb:
> Er hat PLL (habe ich der Schematik entnommen) und somit darf ich dort
> keinen 40MHz Quarz ansetzen.

Das Problem ist ein anderes, Du wirst schwer einen 40MHz 
Grundwellenquarz bekommen. Ab 20MHz muß man aufpassen, daß man kein 
Oberwellenquarz angedreht kriegt. Die PLL ist also dazu da, daß Du 
leicht beschaffbare Quarze verwenden kannst.

Du kannst die PLL aber auch erstmal abschalten. Man darf die CPU ruhig 
niedriger takten. Wenn schon bei Einsteigerprojekten die CPU auf dem 
letzten Loch pfeift, dann mußt Du Deinen Programmierstil gründlich 
überdenken.

Beim AVR findet man viele Projekte, die mit 1MHz laufen, obwohl der AVR 
bis 16MHz kann.


Peter

von Markus W. (Firma: guloshop.de) (m-w)


Lesenswert?

Peter Dannegger schrieb:
> Beim AVR findet man viele Projekte, die mit 1MHz laufen, obwohl der AVR
> bis 16MHz kann.

Manche sogar mit 128 kHz. Sehr positiv für den Stromverbrauch.

von usr (Gast)


Lesenswert?

Google nach Arduino (möchte jezt nicht für einen Shop werben).
Bietet einen leichten Einstieg und kostet um die 20€

mfg usr

von MCUA (Gast)


Lesenswert?

>Zu #1 jein: Du hast die Architektur nicht verstanden. Im Gegenteil. Der
>AVR hat nur 32 Working Register. Beim PIC ist jeder Befehl auf jede
>RAM-Zelle und jedes I/O-Register anwendbar.
...nur sofern die richtige Bank gewählt ist!
(Auch bei den neueren (24.., 33..) kann man nur einen eingeschränkten 
Adressbereich ansprechen, auch von Adressierungsart abhängig.
Von orthogonalem Befehlssatz ist das weit entfernt)

von W.S. (Gast)


Lesenswert?

MCUA schrieb:
> Von orthogonalem Befehlssatz ist das weit entfernt

Wie kommst du bloß auf so eine Aussage?

Man kann tatsächlich alle auf Register anwendbaren Befehle auf alle 
Register der aktuellen Seite anwenden (sic...) - und das sind im 
Idealfall (je nach Typ) 128 Register inclusive Hardware. Und indirekt 
geht es über 256 Register (sofern vorhanden). Reicht dir das immer noch 
nicht?

Ne andere Sache, die ich hier mal erwähnen möchte, ist der bei den PIC16 
eingebaute Hardware-Stack. Man kann dort zwar keine Parameter 
"draufpushen", aber dafür ist dieses Konstrukt so ziemlich das 
schnellste beim Unterprogramm-Aufrufen - viel schneller als alle anderen 
uC, wo der Stack im RAM angeordnet ist.

W.S.

von ich (Gast)


Lesenswert?

>Was haltet ihr von dem:
>PIC 18F442-I/P
>der hat kein 64MHz sondern 40MHz...
>Läuft mit 5V...

Der ist auch n bisschen älter. Das ist ansich auch nicht soooo schlimm, 
aber abgesehen vom alter kostet er im dip bei reichelt über 8€. Was 
hälst du denn vom PIC 18F45K22-I/P?
http://www.reichelt.de/PIC-Controller-nanoWatt-XLP/PIC-18F45K22-IP/index.html?;ACTION=3;LA=2;ARTICLE=109921;GROUPID=4508;artnr=PIC+18F45K22-IP;SID=13Ttgg9H8AAAIAABTFiGg3a902953ef849ef3989f5edc32d992a6

Der ist bedeutend billiger und kann mehr und läuft auch mit 5 Volt. Und 
wie gesagt, wenn du beispielsweise die ADCs beherrschst, kannst du 
ansich von allen PICs deren ADCs umgehen, da die Module gleich oder 
zumindest sehr ähnlich sind.

von Hans M. (hansilein)


Lesenswert?

Nimm das Launchpad kostet nur 5 euro, man kann debuggen und es gibt 
guten support.
Wenn du dann mehr kannst kauf den passenden controller für dein Projekt.

Vor der ersten Zeile Code schon zum Fanboy eines Herstellers zu werden 
ist töricht.

von ich (Gast)


Lesenswert?

Hans Mayer schrieb:
> Nimm das Launchpad kostet nur 5 euro, man kann debuggen und es gibt
> guten support.
> Wenn du dann mehr kannst kauf den passenden controller für dein Projekt.

Das Board was manchmal beim PICKIT3 dabei ist, ist schon nicht schlecht, 
wobei man ohne löten nur LEDs blinken lassen kann, einen Taster 
auswerten kann und einen Poti über ADC lesen kann. Wenn es Steckbar sein 
soll, dann ist ein DIP und ein Breadboard nicht schlecht, sonst müsste 
man erst noch Kabel an die Platine löten und aufs Board stecken, da ist 
ein DIP doch schon besser geeignet meiner Meinung nach. Aber wenn man 
das PICKIT mit der Platine kauft, dann hat man sie ja sowieso schon, für 
die aller ersten kleinen Schritte reicht das ja auch, sprich LEDs an und 
aus, Lauflicht usw..


Hans Mayer schrieb:
> Vor der ersten Zeile Code schon zum Fanboy eines Herstellers zu werden
> ist töricht.

Er ist ja kein Fanboy. Er hat sich verschiedene angeguckt und für den 
PIC entschieden. Wo ist das Problem? Für einen muss man sich halt 
entscheiden.

von Eideard D. (runn0r)


Lesenswert?

@ich:
Den habe ich auch in schon in betracht gezogen... jedoch bevor ich den 
hier geposteten PIC18F46 gewählt habe. Warum habe ich dann den 46 
genommen? Ganz einfach... weil er eine 46 statt einer 45 hatte :D Nein, 
stimmt nicht ganz aber fast... Dachte einfach der ist besser wegen mehr 
RAM usw. Nun gut...
Ich danke dir, jedoch ich denke, wenn nichts anders als der 
Energieverbrauch und das alter gegen den 18F442 spricht werde ich dabei 
bleiben... habe mich schon schwer durch das Datenblatt gearbeitet und 
Notizen gemacht usw. möchte jetzt ungern noch mal Wechseln ^^ Hab den 
zwar noch nicht, aber Vorbereitung ist alles ^^

@Hans Meyer:
Nein, genau das möchte ich nicht! Ich möchte gerne wirklich lernen 
Effektiv auf Hardwareebene zu arbeiten. Ich denke, dass ich es mit 
meinem Vorwissen schaffen kann mich da reinzuarbeiten. Ich werde Fehler 
machen, dumme Fragen in Foren stellen und hier und da wird mir auch mal 
ein IC oder sonst was um die Ohren fliegen ^^ Naja, einen 220µF Tantal 
verpolen wird mir wohl nicht so schnell wieder passieren :D aber 
trotzdem.

@ich (die 2te) komme mit den ganzen ICHs durcheinander ^^
Das Board fand ich zunächst auch nicht schlecht... aber ich fühle mich 
da ein wenig zu eingeschränkt, da es sich ja auch nicht um einen DIL 
handelt.
vorher habe ich immer alles auf eine Platine gelötet um es zu testen... 
jetzt gönn ich mir auch ein Steckboard ;)

Ich habe nun also:
http://www.reichelt.de/PIC-18F-Controller/PIC-18F442-I-P/index.html?;ACTION=3;LA=5;GROUP=A3668;GROUPID=2968;ARTICLE=45010;START=0;SORT=user;OFFSET=100;SID=12Tx1KXn8AAAIAAE9FsRgb2e4f869f686dc2de53f5202d8eca285
http://www.reichelt.de/Quarze/4-0000-HC49U-S/index.html?;ACTION=3;LA=5;GROUP=B41;GROUPID=3173;ARTICLE=32837;START=0;SORT=user;OFFSET=100;SID=12Tx1KXn8AAAIAAE9FsRgb2e4f869f686dc2de53f5202d8eca285
http://www.reichelt.de/Scheiben/KERKO-15P/index.html?;ACTION=3;LA=5;GROUP=B353;GROUPID=3169;ARTICLE=9272;START=0;SORT=user;OFFSET=100;SID=12Tx1KXn8AAAIAAE9FsRgb2e4f869f686dc2de53f5202d8eca285
Dazu noch einiges an Krimskram... vieles an LEDs Widerständen besitze 
ich bereits...
Irgendwann(wenn ich mich soweit fühle) möchte ich dann ein Matrix 
Display ansteuern... selber Bauen wollt ich nicht... daher dies hier:
http://www.reichelt.de/Siebensegment-Anzeigen/TA-20-11-RT/index.html?;ACTION=3;LA=5;GROUP=A51;GROUPID=3002;ARTICLE=31587;START=0;SORT=user;OFFSET=100;SID=12Tx1KXn8AAAIAAE9FsRgb2e4f869f686dc2de53f5202d8eca285
Hab mich da auch schon ein wenig reingelesen, auch zum Thema 
Multiplexing... aber ganz bin ich da noch nicht fertig... weiß noch 
nicht welche Transistoren und Vorwiderstände ich genau nehmen 
muss/sollte...

von Michael S. (rbs_phoenix)


Lesenswert?

Ich bin "ich". Nur auf der Arbeit wird das nie gespeichert und ich hab 
keine lust mich immer anzumelden;)

Es ist ansich egal welcher von den beiden. Nur eben preislich 
unterschiedlich (bekommst 4 von dem von mir erwähnten PIC zum Preis von 
einem von deinem). Zum einarbeiten sind aber beide gut geeignet. Wenn du 
dir das PICKIT3 kaufen willst und das mit dem Board nur n paar euro mehr 
kostet, würde ich das aufjedenfall bestellen (also dass du die Platine 
zusätzlich zum Breadboard hast). Manchmal ist zum Testen (z.B. LED 
dimmen mit PWM) so ne kleine Platine ganz nett. Es sind auch 
Beispielprogramme dafür verfügbar, die halt auf den PIC und die 
Beschaltung angepasst sind.

Wenn du Fragen hast kannst du ja hier jederzeit fragen. Wie "dumm" die 
frage ist, ist eigentlich egal. Entscheident ist, wie du sie stellst. 
Also nach dem Muster: was geht nicht, was hab ich probiert, Sourcecode 
und Schaltung. Dann ist alles ok und keiner kann meckern.

von Eideard D. (runn0r)


Lesenswert?

Ich danke dir, . Ich habe im Laufe dieses Threads echt gemerkt... dass 
wenn ich 80€ für alles veranschlage, wird es knapp... ich bin nur kein 
guter besteller und habe keine Lust in einer Woche wieder zu bestellen 
(wohne am arsch der Welt und bekomme hier nicht einen Widerstand, außer 
ich kauf mir nen Wecker und löte den aus ^^) Daher Plane ich gern 
vorraus! Somit diese sache mit dem Matrix!

Komme da aber leider nicht weiter...
Ich habe mir dies
http://www.mikrocontroller.net/articles/LED-Matrix
mehrfach durchgelesen und komme noch nicht so ganz dahinter.
Beim Multiplexing schalte ich in dem Fall z.B. Spalte1 ein und die 
Zeilen derden LEDs leuchten sollen. Dann Spalte1 aus und Spalte2 ein 
usw.
Der ganzen Rechnung zum ersten Beispiel konnte ich soweit auch folgen.
http://www.mikrocontroller.net/wikifiles/6/64/LED_Matrix_8x5.png
Jedoch! Wie komme ich auf die 430 Ohm Basiswiderstand der Q9-Q13?
Das habe ich noch nicht verstanden... Sie Ströme Addieren sich doch in 
der Spalte... duch jede LED schicke ich 20mA somit 160mA pro Spalte und 
somit Ic = 160mA für die Lowside Transistoren. Dann kann ich Rv mit 
Sättigung berechnen... aber ich komme nicht auf den wert!

Für das von mir ausgewählte Matrix display
http://www.reichelt.de/Siebensegment-Anzeigen/TA-20-11-RT/index.html?;ACTION=3;LA=5;GROUP=A51;GROUPID=3002;ARTICLE=31587;START=0;SORT=user;OFFSET=100;SID=12Tx1KXn8AAAIAAE9FsRgb2e4f869f686dc2de53f5202d8eca285
passt diese Schaltung ja auch oder? Nur dass ich 7 Reihen habe...
Jetzt muss ich nur die spezifischen Werte eintragen und durchrechnen.
Wahrscheinlich den Low-side-Transistor anpassen da ich >500mA kommen 
werde und natürlich nach den Daten rechnen muss...

Das war dann auch erst mal das letzte wo ich hilfe brauche ;) dann habe 
ich wirklich alles zusammen, werde bestellen und anfangen.

von Michael S. (Gast)


Lesenswert?

Eideard Dogan schrieb:
> Jedoch! Wie komme ich auf die 430 Ohm Basiswiderstand der Q9-Q13?
> Das habe ich noch nicht verstanden...

Es werden alle Transistoren dort als Schalter benutzt. D.h. sie sollen 
alle ein wenig übersteuert sein, dass sie einmal bestmöglichst leiten 
und einmal schlechtmöglichst Leiten. Bei diesen Transistoren ist es so, 
dass ein Ube von ca 0,7V angenommen ist. Damit voll durchgesteuert wird 
(unter Berücksichtigung der Stromverstärkung usw) wurde hier in dem Fall 
ca 9mA angenommen. Also muss durch den Widerstand 9mA fließen und eine 
Spannung von 5V-0,7V=4,3V abfallen. Und 4,3V/9mA = 477,7 Ohm, also in 
der E-Reihe ein 470 Ohm Widerstand.
Ich kenn solch eine Schaltung jedoch nur, dass für die Q1 bis Q8 einen 
PNP-Transistor nimmt.

von Eideard D. (runn0r)


Angehängte Dateien:

Lesenswert?

AAAAHHHH.
OK, ich habe immer 10mA angenommen zur durchsteuerung. So kam ich immer 
auf 430 Ohm... was je ziehmlich entfernt davon ist ^^ OK. Das habe ich 
verstanden. Dank dir.

Habe in der zwischenzeit auch noch mit Transistor Array rumgespielt und 
die obrige Schaltung aufgebaut.

Das Shiftregister ist für mich noch nicht so relevant, jedoch habe ich 
es mal mit eingesetzt weil ich später damit arbeiten will.

Für als LEDs habe ich wieder das angegebene Matrix display genutzt und 
mit den Daten gerechnet. R1...R7 sind 48 Ohm bei 2,2V und 20mA der LEDs. 
Die rechnung habe ich wieder aus dem Tutorial entnommen und die Werte 
mit den Datenblättern abgeglichen.

Ich denke so geht es auch.

von ich (Gast)


Lesenswert?

Eideard Dogan schrieb:
> OK, ich habe immer 10mA angenommen zur durchsteuerung. So kam ich immer
> auf 430 Ohm... was je ziehmlich entfernt davon ist ^^

So weit entfernt ist das auch nich.. Und man übersteuert den Transistor 
ja, das heißt man muss einen gewissen Wert überschreiten, damit er 
aufjedenfall voll leitend ist. Und ob das 3mA mehr oder weniger zuviel 
sind, ist ansich egal. Natürlich ist eine genauere Anpassung besser.


Eideard Dogan schrieb:
> Habe in der zwischenzeit auch noch mit Transistor Array rumgespielt und
> die obrige Schaltung aufgebaut.
>
> Das Shiftregister ist für mich noch nicht so relevant, jedoch habe ich
> es mal mit eingesetzt weil ich später damit arbeiten will.

Die IC-Wahl sollte so funktionieren, jedoch sind mir da 3 Dinge 
aufgefallen:
1. Du hast die beiden Eingangspins einmal an Clock vom Oberen und einmal 
am Clock vom Unteren 4094. Du brauchst noch einen Anschluss für die 
Datenleitung, sonst weiß der 4094 ja nicht, welche Daten und somit 
Ausgänge er laden soll. Abgesehen davon ist es üblich, diese 2 
Anschlüsse, also Clock und Data, an ein SPI-Modul zu hängen, da dort die 
Übertragung einfacher ist und man für den Clock kein Ausgang togglen 
muss. Doch wenn du nur ein Modul hast aber 2 mal Clock funktioniert das 
nicht. Daher nimmt man den Serial-Data Output vom einen und schließt ihn 
an den Datainput vom Anderen an. Also schiebt man einmal die 8 Bit 
komplett durch einen der beiden 4094 durch und diese kommen dann im 
Zweiten an.

2. Du hast an dem OE 12V angeschlossen. Das verträgt der Pin, sofern die 
Versorgungsspannung auch 12V ist. Im Datenblatt ist zusehen, dass bei 
einer Versorgungsspannung von 10V ein High Input mindestens 7V haben 
muss, bei 12V also noch etwas mehr. Dann müsstest du dein Clock und 
deine Datenleitung auf diese Spannung hochsetzen. Also bietet es sich 
an, den 5V Pegel vom µC zu behalten und daher auch 5V Vdd zu haben und 
somit auch OE auf 5V zu haben. Man könnte auch den bzw beide OE an einen 
Ausgang vom µC hängen und für die Dauer der Übertragung die Ausgänge 
abschalten, somit bekommen die Ausgänge garnicht mit, dass dort Daten 
durchgeschoben werden.

3. Du hast 5 Spalten von LEDs, aber hast davon nur 4 am Treiber ULN2003. 
Denke das ist einfach ein kleiner Flüchtigkeitsfehler


Eideard Dogan schrieb:
> Für als LEDs habe ich wieder das angegebene Matrix display genutzt und
> mit den Daten gerechnet. R1...R7 sind 48 Ohm bei 2,2V und 20mA der LEDs.

Du hast bei 5 LEDs 5*20mA=100mA Maximalstrom, nämlich wenn eine ganze 
Zeile komplett leuchten soll. Jetzt musst du gucken, wieviel an deinem 
Widerstand abfallen muss. Du hast 12V, es fallen ca 1,8V am UDN2981 ab 
(Siehe Datenblatt Vce(sat), also Sättigungsspannung am Transistor, der 
die Spannung an den Ausgang schaltet), dann 2,2V an der LED und noch 
1,1V am ULN2003 (auch hier Vce(sat)). Das heißt, du hast 3 Bauteile wo 
insgesammt 5,1V abfallen. Das heißt im Umkehrschluss, du brauchst einen 
Widerstand, an dem 6,9V abfallen und 100mA fließen, Sprich U/I=69 Ohm.

Jedoch: Die Leistung, die am Widerstand abfällt (und somit in Wärme -> 
unnötige/unerwünschte Energie umgewandelt wird), berechnet sich durch U 
* I, also 6,9V * 100mA = 690mW. Da du 8 Zeilen und somit 8 Widerstände 
hast, hast du insgesamt 5,52Watt, die du einfach in Wärme umwandelst. 
Würdest du einzelne Transistoren nehmen, die eine extra kleine 
Sättigungsspannung von z.B. 0,3V haben, dann hättest du 2,2V+0,3V+0,3V = 
2,8V, die an den 3 Bauteilen abfallen. Somit könntest du die LED auch 
mit 5V betreiben und du kannst z.B. ein 5V-Trafo/Netzteil nehmen und 
gut. Sonst müsstest du ein 12V Netzteil nehmen und noch mit extra 
Bauteilen die 5V für den µC generieren (mehr Bauteile-> mehr kosten & 
mehr Platz) oder du müsstest aus 5V per Stepup-Converter deine 12V 
machen. Ganz abgesehen davon hättest du an dem Widerstand 2,2V abfall 
bei 100mA und somit 22 Ohm und eine Verlustleistung von 220mW pro 
Widerstand -> insgesammt 1,76Watt Wärmeenergie. Was du tust ist dir 
überlassen, es wäre aber ggf. sinnvoller solche Transistoren zu suchen 
und zu verwenden oder solche Treiber zu suchen, wie du sie gewählt hast, 
nur dass diese dann eine kleinere Uce(sat)-Spannung haben. Deine 
Vorteile wären halt eine Einheitliche Spannung und weniger 
Verlustleistung.

von Eideard D. (runn0r)


Lesenswert?

zu 1: ja, da habe ich mich auch versehen. CLK und STR sollten zusammen 
und die Datenleitung an den Jumper. Ich wollte also nur 4 Pins des µC 
verwenden. Mit STR sperre ich ja die ausgänge soweit ich es verstanden 
habe. mit CLK sage ich dem IC er soll Daten annehmen und mit D übergebe 
ich die Daten. Es war also so geplant, ich sperre beide, gebe die Daten 
an beide durch und gebe sie wieder frei. Aber wie gesagt, dies ist ein 
plan für später, habe da noch nicht viel weiter drüber nach gedacht.

zu 3: jo, hab ich übersehen ^^

zu 4:
da hast du recht, mit diesem Plan musste ich jedoch mit der Spannung 
höher gehen, da ich sonst meine gesamte Spannung verbraucht hätte ^^ Ich 
habe nur 5V (10A); 12V (1,5A) und eine Variable Spannungsquelle bis max 
2A... bin ehrlich, hab kein Labornetzteil und war bisher zu geizig mir 
ein zu kaufen... daher habe ich ein altes PC-Netzteil zweckendfremdet...
Ebenfalls musste ich bemerken, dass die UDN2981 irre teuer sind... also 
1,50 für einen! Da kann ich besser mit Transistoren arbeiten. Aber bei 
12V habe ich da wirklich viel Verlustleistung da hast du recht. Ich 
werde nun erst mal mit meinem µC rumspielen und rumprobieren. Habe mit 
den PICKit3 mit Board bestellt so dass ich da auch mit testen kann.
Ich denke aber, dass ich mit meinen Bauteilen einiges erreichen kann. 
Und auch meine Matrix sollte funktionieren. Sonst ersetze ich den 
UDN2981 durch BC337 und belasse den ULN2003 auf der low-side... habe nun 
keinen Transistor der >500mA leisten kann. Nun gut, ich werde weiter 
machen. Sobald mein µC da ist werde ich anfangen und bestimmt wieder 
Fragen stellen!

Ich bedanke mich auf jeden fall für eure tatkräftige Unterstützung und 
werde hier zwischendurch noch in das thread schauen. Also wenn noch 
jemand anregungen hat, einfach schreiben ich bin da und immer bereit was 
zu lernen ;)

von Michael S. (rbs_phoenix)


Lesenswert?

Joa, der BC337 hat ein Uce(sat) von 0,7V. Alternativ der BC640 mit 0,5V 
Uce(sat). Aber was auch gut ginge wäre die MOSFET-"Version", die auch in 
dem Matrix-Artikel hier auf der Seite zusehen ist. Zugegebenermaßen ist 
der IRF7103/7104 bei Reichelt nur als SMD-Bauteil zu haben.

von Eideard D. (runn0r)


Lesenswert?

ja der BC640 ist mir auch schon in die augen gefallen... ich mein der 
hat auch 1A Maximalstrom. Aber da kümmer ich mich dann mal drum wenn ich 
ein Projekt starte und wirklich exakt auf jedes Detail eingehe wie z.B. 
energiesparend usw. Also meinen Wecker :D auf den freu ich mich schon... 
dann werd ich endlich mal richtig wach ;)

von Eideard D. (runn0r)


Lesenswert?

ah ich hab noch mal ne Frage ;)
Wenn ich meinen PIC programmieren möchte, also den PIC18F442, dann wird 
mir das PICkit3 wohl kaum 12V liefern für den MCLR/VPP Pin.
Also müsste ich den mit LVP Programmieren und den RB5(PIN 38) mit dem 
LVP PIN des PIC verbinden. Laut Datenblatt ist LVP bei dem PIC als 
Standard definiert und ich kann den Programmieren. Im Betrieb muss ich 
dann den RB5 auf masse ziehen. Ist das richtig?

Da ich ICSP zunächst (wegen unwissenheit) nicht in meine Schaltung 
intigrieren möchte, wollte ich mir einen Sockel machen in den ich den 
DIL einsetzen kann...
Hier wurde so etwas gemacht:
http://www.jb-electronics.de/html/elektronik/digital/d_artikel06_pickit3_und_icsp.htm

Geht dies auch mit dem PIC18F**2?

Ebenfalls hat mein PIC VDD an PIN 11 und 32
VSS an PIN 12 und 32...
wozu hat der je zwei?

von Anja (Gast)


Lesenswert?

Eideard Dogan schrieb:
> Wenn ich meinen PIC programmieren möchte, also den PIC18F442, dann wird
> mir das PICkit3 wohl kaum 12V liefern für den MCLR/VPP Pin.
> Also müsste ich den mit LVP Programmieren und den RB5(PIN 38) mit dem
> LVP PIN des PIC verbinden. Laut Datenblatt ist LVP bei dem PIC als
> Standard definiert und ich kann den Programmieren. Im Betrieb muss ich
> dann den RB5 auf masse ziehen. Ist das richtig?

Bloß gut daß meine PIC18F2520/PIC16F876 noch nicht gemerkt haben daß RB5 
nicht durchverbunden ist wenn ich laut Anleitung die Buchse anschließe. 
;-)

Gruß Anja

von Michael S. (rbs_phoenix)


Lesenswert?

Eideard Dogan schrieb:
> Wenn ich meinen PIC programmieren möchte, also den PIC18F442, dann wird
> mir das PICkit3 wohl kaum 12V liefern für den MCLR/VPP Pin.

Doch. Im PICKIT ist ein Stepupwandler, der aus der USB-Spannung die 12V 
macht. Deshalb deaktivier ich ansich auch immer das LVP.


Eideard Dogan schrieb:
> Also müsste ich den mit LVP Programmieren und den RB5(PIN 38) mit dem
> LVP PIN des PIC verbinden.

Was Anja auch schon mitteilen wollte, macht deine Aussage keinen Sinn ;) 
Ich denke du meinst "... mit dem LVP PIN des PICKITs verbinden.".
Aber wie gesagt brauchst du das LVP nicht.


Eideard Dogan schrieb:
> Da ich ICSP zunächst (wegen unwissenheit) nicht in meine Schaltung
> intigrieren möchte, wollte ich mir einen Sockel machen in den ich den
> DIL einsetzen kann...

Du MUSST den ICSP nicht dadrin haben. Nur kompliziert ist es nicht und 
es ist halt angenehmer eine 5polige Steckerleiste dazu zu packen. 
Belegung:
1: Vpp/MCLR
2: Vdd
3: GND
4: ICSP Data/RB7
5: ICSP Clock/RB6

Dir wird das stendige wechseln vom PIC aus der Schaltung in den Adapter 
irgendwann auf den nerv gehen. Also wenn das noch locker geht ist es 
bedeutend angenehmer mit soeiner Leiste. Die von dir gelinkte Seite, 
ganz unten der Adapter sollte ansich bei allen 18Poligen PICs gehen. 
Sicherheitshalber guckst du im Datenblatt nach der Belegung. Und wenn es 
nicht stimmt schließt du einfach die ICSP-Pins an die richtigen Pins des 
IC-Sockels an. Und das ist eben genau das selbe, wie wenn du es in der 
Schalung machst, nur dass halt keine andere Hardware da ist.

von Eideard D. (runn0r)


Lesenswert?

Michael Skropski schrieb:
> Eideard Dogan schrieb:
>> Also müsste ich den mit LVP Programmieren und den RB5(PIN 38) mit dem
>> LVP PIN des PIC verbinden.

:D Ja, ich meinte das PICKit ^^ Daher habe ich Anjas Meldung auch nicht 
verstanden :D sorry ^^

Michael Skropski schrieb:
> Du MUSST den ICSP nicht dadrin haben. Nur kompliziert ist es nicht und
> es ist halt angenehmer eine 5polige Steckerleiste dazu zu packen.

Naja wenn der 12V liefert, kann man das machen, stimmt. Ich habe bisher 
immer nur Schaltungen gesehen die dann im Betrieb sind während man per 
ICSP den µC neu Flashed. So kann ich es dann ohne Betriebsspannung 
machen. Ok, da komm ich mit klar und weiß weiter. Danke dir.

Was ist mit zwei VDD und VSS? Verstehe noch nicht wieso es zwei gibt^^

von Michael S. (rbs_phoenix)


Lesenswert?

Eideard Dogan schrieb:
> Naja wenn der 12V liefert, kann man das machen, stimmt. Ich habe bisher
> immer nur Schaltungen gesehen die dann im Betrieb sind während man per
> ICSP den µC neu Flashed. So kann ich es dann ohne Betriebsspannung
> machen. Ok, da komm ich mit klar und weiß weiter. Danke dir.

Man kann beim PICKIT einstellen, ob die Zielplatine die Spannung bringt 
oder ob diese Quasi ausgeschaltet ist. Jenachdem macht er dann nur die 
12V oder eben 12V und 5V. Du musst, wenn du den ICSP benutzt aber drauf 
achten, was an dem RB6 und RB7 angeschlossen ist. Doch da gibts im 
Datenblatt auch Beispiele wie man es machen kann. Dennoch, wenn es mir 
nicht so richtig um den Platz geht, dann nehme ich lieber einen PIC, der 
ein paar Pins mehr hat und nehme RB6&7 dann ausschließlich für die 
ICSP-Schnittstelle. Wenn ich aber DIP haben will und die 36 IOs alle 
brauche, bleibt halt nichts anderes über, als den ICSP da irgendwo 
zwischen zu hängen. Dann sind das bei mir meist Tastereingänge oder 
irgendwas, was man abziehen kann (Stecker, Klemmen oder andere 
gesockelte ICs).

Eideard Dogan schrieb:
> Was ist mit zwei VDD und VSS? Verstehe noch nicht wieso es zwei gibt^^

Es gibt mehr oder weniger verbreitete Bezeichnungen. Vdd ist die 
digitale Versorgungsspannung. Vss ist Source bzw Masse/GND. Vpp ist die 
Programmierspannung, (Bei PICs) AVdd/AVss ist die Versorgungsspannung 
für die AD-Wandler. PICs haben auch noch Vref+ und Vref-, auch für ADCs 
oder Comparatoren.

Es gibt auch noch mehr:
http://de.wikipedia.org/wiki/Spannungsbezeichnung

Aber die für den PIC wichtigen bezeichnungen stehen oben.

Also bei dem ICSP ist es so:
1: Vpp -> ~12V
2: Vdd -> 5V
3: GND -> 0V
4: ICSP Data
5: ICSP Clock

Wenn du sagst, die Platine hat ne Spannung, dann wird meines wissens der 
Pin2 im PICKIT hochohmig, d.h. er braucht keine 5V liefern. Wenn nicht, 
bekommt die Schaltung durch pin2 vom PICKIT die 5V Versorgungsspannung

von Eideard D. (runn0r)


Lesenswert?

hi, da bin ich noch mal.
So mein PicKit ist da und das Testboard auch. Habe auch gleich 
angefangen rumzuspieln und bin echt begeistert.

Zunächst funktionierte nichts. Der ließ sich nicht Programmieren... 
woran es lag weiß ich nicht, denke die Treiber waren nicht richtig 
installiert... unter Linux läuft es nun...

Habe meine ersten LED muster Programmiert und dem Taster eine Funktion 
gegeben. So ganz erschließt sich mir der ADC und die Interrupts noch 
nicht (ich weiß was ein Interrupt ist nur wie er hier gemacht wird 
usw.)... das schaff ich aber noch ;)

zwischen VDD und GND befinden sich bei dem PIC18F45K20 zwei Bauteile. Da 
es SMD ist, kann ich es nicht ganz entziffern sieht aber nach 
Kondensatoren aus... habe das bisher noch nirgends gesehen und wollte 
fragen ob ich für spätere Schaltungen da was beachten muss... spricht 
kann ich die weg lassen? Was sind das für welche usw.

Ich danke euch echt für eure ganzen Tips, Tricks und die Unterstützung!

So, werde erst mal noch ein bissel rumspielen ;)

von Kondensatoren (Gast)


Lesenswert?

Eideard Dogan schrieb:
> zwischen VDD und GND befinden sich bei dem PIC18F45K20 zwei Bauteile. Da
> es SMD ist, kann ich es nicht ganz entziffern sieht aber nach
> Kondensatoren aus... habe das bisher noch nirgends gesehen und wollte
> fragen ob ich für spätere Schaltungen da was beachten muss... spricht
> kann ich die weg lassen? Was sind das für welche usw.

Seite 73: http://ww1.microchip.com/downloads/en/DeviceDoc/41370C.pdf: C1 
und C2? Erklärung z. B.: 
http://www.rn-wissen.de/index.php/Abblockkondensator

von Eideard D. (runn0r)


Angehängte Dateien:

Lesenswert?

Ach, ok. Danke dir.
Habe daraufhin nun auf mal meine Schaltung aufgebaut... siehe Anhänge...

JEDOCH... es klappt nicht ^^
Ich denke nicht dass es am PIC oder der Achaltung liegt, sondern eher am 
Programm MPLAB X.

Mit dem Testboard hatte ich das gleiche Problem zu anfang...
Ich stecke den Programmer auf, will mein Programm hochladen bzw. Flashen 
und es passiert nichts außer dass er den Compiler startet... Wenn ich 
den PIC explizit abfrage, erhalte ich die Wert und der PIC wird erkannt! 
Ich kann auch das Programm des PICs runterladen... jedoch Flashen is 
nicht...

Zuvor habe ich den PIC18F45K20 des Testboards bearbeitet und bin die 
Lessions aus dem Userguide durchgegangen. Echt Klasse gemacht und gut 
beschrieben finde ich... Dann habe ich das PICKIT 3 umgestellt auf 5V 
und den PIC18F442 ausgewählt... nun geht wieder nix... ich Klick auf 
Programmieren und er startet den Compiler, Compiliert mein Programm und 
schickt es nicht rüber...

Vielleicht weiß ja jemand warum... Danke euch noch mal!

von Michael S. (rbs_phoenix)


Lesenswert?

Eideard Dogan schrieb:
> Vielleicht weiß ja jemand warum... Danke euch noch mal!

Dumme Frage, ich weiß, aber.. kommen irgendwelche Fehlermeldungen? ^^

Welche 2 Eigenarten ich mal hatte:
- Das PICKIT3 hatte ich immer am FrontUSB vom PC hängen. Dann konnte ich 
damit ca 2 Minuten arbeiten und danach hat er sich aufgehangen bzw war 
nicht mehr ansprechbar. Dann hab ich ihn mal in einen Heck-USB bzw 
USB-Buchse einer PCI-Erweiterungskarte gesteckt und siehe da, 
funktioniert immer.
- Zum Anfang hatte ich mal Probleme beim beschreiben. Man muss den PIC 
vor dem Beschreiben erstmal Löschen! Also Löschen, dann wird geprüft, ob 
der Flash leer ist und danach kann man dann Programmieren. Manchmal kann 
man auch einstellen, dass er vor jedem Programmieren automatisch löschen 
soll.

Guck mal ob davor irgendwas zutrifft.

von Eideard D. (runn0r)


Lesenswert?

Michael Skropski schrieb:
> Dumme Frage, ich weiß, aber.. kommen irgendwelche Fehlermeldungen? ^^

Nee, leider. :( die hätte euch auch mitgeteilt ;)
Aber hier mal alle ausgaben:


> *****************************************************
> Connecting to MPLAB PICkit 3...
> Firmware Suite Version.....01.26.92
> Firmware type..............PIC18F

> Target detected
> Device ID Revision = 7

Und vom Compiler:
> make -f nbproject/Makefile-default.mk SUBPROJECTS= .build-conf>
> make[1]: Entering directory `E:/My Data/Windows/MPLABXProjects/My first > 
board.X'
> make  -f nbproject/Makefile-default.mk dist/default/my_first_board.x.lib
> make[2]: Entering directory `E:/My Data/Windows/MPLABXProjects/My first > 
board.X'
> make[2]: `dist/default/my_first_board.x.lib' is up to date.
> make[2]: Leaving directory `E:/My Data/Windows/MPLABXProjects/My first > 
board.X'
> make[1]: Leaving directory `E:/My Data/Windows/MPLABXProjects/My first > 
board.X'

> BUILD SUCCESSFUL (total time: 361ms)

hmm...
Normal springt er nach dem Compiler automatisch zum PikKit und fängt an 
den zu programmieren... aber dies mal... compilieren ende... wie gesagt 
ich hatte es schon mal... aber da war es auf ein mal weg und ich hab mir 
nichts mehr bei gedacht...

USB Ports habe ich auch schon gewechselt... jedoch hängt der normal an 
einem usbswitch mit externer Stromversorgung welche aktiv bleibt wenn 
der Rechner aus ist... so dass nichts passieren kann (weiß nicht was 
aber bin ja auch noch anfänger und wills nicht kaputt machen ;) )

Michael Skropski schrieb:
> Zum Anfang hatte ich mal Probleme beim beschreiben. Man muss den PIC
> vor dem Beschreiben erstmal Löschen! Also Löschen, dann wird geprüft, ob
> der Flash leer ist und danach kann man dann Programmieren. Manchmal kann
> man auch einstellen, dass er vor jedem Programmieren automatisch löschen
> soll.

Hmm interessant... ich weiß nur nicht wo das im MPLAB X zu finden ist... 
hab mich schon weggegoogelt... das einzige ist "Erase bevor programming" 
das ist aktiv!

von Eideard D. (runn0r)


Lesenswert?

Ich habe das Problem gefunden... denke ich...
mit dem PIC18F45K20 vom Demoboard habe ich ein "Library Projekt" 
gestartet. Das Funktionierte auch... aber nun habe ich einfach mal ein 
"Stand alone" für den PIC18F442 gestartet und... siehe da, es 
funktioniert... Also sollte jemand das gleiche oder ähnliche Problem 
haben... einfach mal ein neues Projekt starten... ;)

von Pregelj D. (dan222)


Lesenswert?

Hi,
Ich bin ein Anfänger im programmieren mit dem PICKIT3 von MPlab 
(Software MPLAB IDE v8.60).

Habe ein Assemblerprogramm eines PIC16F88 und wollte es auf einen 
PIC16F73 anwenden/umschreiben. Das ist von einem Uhrenprojekt, das ich 
um ein Funk-Schalt-Set (433 MHz) von CONRAD erweitern wollte, deshalb 
der PIC16F73 mit mehr I/O’s.

Ich habe es mit „Projekt einfügen“ und „Importieren“ versucht, nur hat 
es nicht geklappt.

Kann mir da einer helfen (Schrittreinfolge) und welche Dateien dabei 
sein müssen. Vielleicht fehlt mir einfach ne Datei.

Ich weiß, bestimmt wieder so ne Fragen. Wäre super wenn Ihr mir helfen 
könntet.
Danke euch im Voraus!

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.