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!
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!
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.
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
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
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! ;)
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
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..?
@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 ;)
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
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.
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
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 )
-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
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-
-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 PIC24dsPIC 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
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 AVRAnja 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.
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
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
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?
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).
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
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.
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 ;)
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.
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?
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
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?
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.
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.
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 ^^
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 ;)
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
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.
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
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.
>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)
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.
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.
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.
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.
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.
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.
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.
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.
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 ;)
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.
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 ;)
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?
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
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.
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^^
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
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 ;)
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!
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.
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!
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... ;)
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!