PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Doppelnutzung des MOSI Pins mit LED



Mr Bean
09.01.2008, 20:55
Hallo

Ich wollte mir ein neues Controllerboard bauen. Ich hab da an den MOSI Pin noch eine LED ran gehängt die mit logisch 0 eingeschalten wird. Während dem Programmiervorgang blinkt diese LED nun. Das wäre nicht weiter tragisch, aber leider funktioniert nun der Programmiervorgang nichtmehr zuverlässig. Manchmal geht es und manchmal eben nicht... :-(
Kann ich da noch irgendwas machen indem ich vielleicht eine weitere Diode einbauen oder so (ich meine zum Sperren beim Programmiervorgang :-k ) AVR ist ein Mega8. Programmieren tu ich mit PonyProg. Vielen Dank schonmal!

Grüße!!

Bean

TheHawk
09.01.2008, 20:57
Der ISP Anschluss hat doch einen extra LED Pin.

Mr Bean
09.01.2008, 21:00
Na das ging ja schnell... Leider weiß ich nicht so genau was Du meinst... Also ich habe einfach an PB3 eine LED dran die mit logisch 0 eingeschalten wird. Eigentlich wollte ich die LED auch da dran lassen, da die anderen Ports schon voll sind und das Layout auch schon größtenteils fertig ist... ;-)
Grüße!!

Bean

Besserwessi
09.01.2008, 21:19
Wenn die LED zu viel Strom zieht, gibt es Problem. Wieviel Strom möglich ist, hängt vom Programmierer ab. Auch aus EMV Gründen sollte sie Verschaltung Controler - ISP - Widerstand - LED - VCC sein. Die Leitung vom Controller bis zum Widerstand sollte eher kurz sein. Eventuell muß man eine hellere LED nehmen und mit weniger Strom (z.B. 1 mA) betreiben. Bis ca. 2 mA sollten die meisten Programmierer treiben können. Etwas Vorsichtig muß man mit der CLK Leitung sein, die ist am empfindlichsten gegen Störungen.

Mr Bean
09.01.2008, 21:27
naja also ich weiß ehrlich gesagt gar nicht so genau wieviel Strom durch die LED fließt. Ist eine SMD LED und ich habe kein Datenblatt und keine Bezeichnung zu dieser. Ich hab einen 1K Widerstand als Vorwiderstand. Wenn ich von ca. 1V an der LED ausgehe ergibt sich ein Strom von 4V/1K = 4mAh. Wenn ich mich nicht verrechnet habe. Denke es liegt eher am Programmierer, das ist ein ganz einfacher (nur ein paar Widerstände, ein Transistor und zwei Z Dioden). Den möchte ich aber auch ungern ändern, da er ja bisher recht gut funktioniert hat. Suche eigentlich eine andere Möglichkeit meine Schaltung noch zu ändern... :-(

Grüße!!

Bean

_werwurm_
09.01.2008, 21:49
einfachste lösung ist sicher einen jumper verwenden:
jumper gezogen: programiermodus
jumper steckt: led-ausgabe

Mr Bean
09.01.2008, 22:05
Ja das stimmt... das ist natürlich die einfachste Methode... Wenn keine anderen Ideen mehr kommen werde ich auch darauf zurückgreifen...

Grüße!

Bean

pctoaster
09.01.2008, 22:11
oder eben die LED über einen Transistor ansteuern.

Gruß
pctoaster

Mr Bean
09.01.2008, 22:18
Ja das mit dem Transistor werde ich wohl an meinem Prototyp noch probieren. Sollte halt nur zuverlässig funktionieren. :-k Aber jetzt bin ich grad noch am grübeln, brauche dann ja einen PNP, da ich ja mit einer 0 schalten möchte... sehe ich das richtig? :-k

Grüße!!

Bean

pctoaster
09.01.2008, 22:56
Wenn Du unbedingt mit einer 0 schalten willst, ja. Aber warum ?
Zuverlässig geht das auf jeden Fall, ob pnp oder npn.

Gruß
pctoaster

Mr Bean
10.01.2008, 07:09
Ich möchte mit einer 0 schalten, da ich noch andere LED`s an meinem Controller habe und die ebenfalls mit 0 geschalten werden. Will halt später beim Programmieren nicht umdenken müssen... ;-)

Grüße!!

Bean

Hubert.G
10.01.2008, 13:49
Wenn der Ausgang H ist leuchtet die LED wenn er L ist, ist die LED auch aus. Wäre so logischer, aber wenn du es anders gewohnt bist...
Wenn du mit einem PNP schaltest darf die Spannung an den LED nicht höher als VCC sein.
Edit: Die Spannung am Emitter des PNP nicht höher als VCC.

jeffrey
10.01.2008, 14:14
hi,

Wenn der Ausgang H ist leuchtet die LED wenn er L ist, ist die LED auch aus. Wäre so logischer
ich schalte auch meistens mit 0 ein, manche µc können dann größere strome vertragen.
mfg jeffrey

uwegw
10.01.2008, 14:41
Beim Programmieren lege ich mir immer Makros/Funktionen an, die die Ansteuerung von LEDs und sonstigen Ausgängen passend umsetzen. Ich muss mir dann nur noch merken, dass zb die rote LED mit ROTE_LED_AN; eingeschaltet und mit ROTE_LED_AUS; ausgeschaltet wird. Damit muss man sich nicht mehr merken, an welchem Pin und mit welcher Schaltungsvariante die LEDs angeschlossen sind. Und wenn man mal die LED woanders anschließen will, muss man nur an einer einzigen Stelle, nämlich im Makro, die Werte ändern. Würde man jedesmal den direkten Zugriff hinschreiben, könnte man bei einer Pin-Änderung sehr leicht eine Stelle vergessen, und schon passieren die merkwürdigsten Fehler...

Konkret sieht das in C dann so aus:

//Makros für eine LED. Anschlussvariante: LED vom AVR-Pin gegen Masse
#define LED_red PB2 //Pin, an dem die LED hängt
#define LED_red_PORT PORTB //PORT-Register
#define LED_red_DDR DDRB //DDR-Register
#define LED_red_PIN PINB //PIN-Register

#define LED_red_toggle PORTB ^=(1<<LED_red);//ändert den Zustand (zb nützlich zum Blinken)
#define LED_red_on LED_red_PORT|=(1<<LED_red);//einschalten (Pin auf high)
#define LED_red_off LED_red_PORT&=~(1<<LED_red); //ausschalten (Pin auf low)
#define LED_red_as_output LED_red_DDR|=(1<<LED_red); //Den Pin als Ausgang einstellen
Die Befehle für die LED sind dann LED_red_on, LED_red_off, LED_red_toggle und LED_red_as_output.


Bei heutigen AVRs ist die Schaltungsvariante egal. Ich wählen sie meist so,, dass das Platinenlayout möglichst einfach wird.

Mr Bean
10.01.2008, 15:43
Also ich habe mir das Einschalten einer LED mit 0 aus dem gleichen Grund angewöhnt wie jeffrey ;-) . Normal habe ich die LED`s mit einem Vorwiderstand direkt an dem Port. Also ohne Transistor.
Außerdem ist es nicht wirklich logisch oder unlogisch mit 0 einzuschalten... Ich denke es ist halt einfach Gewöhnungssache... ;-)

Grüße!!!

Bean

PS.: Jetzt brauche ich nur noch einen passenden SMD Transistor... *reicheltguck* :-)

Besserwessi
10.01.2008, 20:59
Mit 1 K als Vorwiderstand ( ca. 3 mA Strom bei 5V) sollten die meisten Programmierer klarkommen, aber offensichtlich nicht alle.
Wenn das ein Parallelport-programmierer ist, würde ich mit überlegen einen 2.ten zu bauen, der etwas mehr Schutz für den PC bietet. Mit Treiberbaustein sollte dann die LED kein Problem mehr sein.

Mr Bean
11.01.2008, 07:36
Nein, ist wie weiter oben geschrieben ein sehr einfaches serielles Programmiergerät. Das möchte ich eigentlich nicht ändern, da es bisher recht gut funktioniert und ich bis jetzt noch keine Probleme damit hatte. Also erstmal schauen was ich an der Schaltung noch machen kann.

Grüße!

Bean

oberallgeier
11.01.2008, 09:36
Der ISP Anschluss hat doch einen extra LED Pin.Wo ist der? Wo steht das? Ich hab das in den RN - Definitionen nicht gefunden :(.

Ich habe bei meinen Flashboards den Reset-Pin vom ISP für die LED genommen - das geht gut. Über Störungen kann ich nicht klagen. Na ja, wenn ich dann die RES Taste am Board drücke, dann leuchtet die LED auch :( - aber damit kann ich leben :).

Hubert.G
11.01.2008, 10:57
Die Programmer an der parallelen Schnittstelle habe schon eine LED vorgesehen, nur wer baut sich nur zum programmieren eine LED auf sein Board.

TheHawk
11.01.2008, 12:28
Auf pin 3 des 10 poligen ISP Steckers.