PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : AVR's programmieren (über ~4m)



Händler
26.04.2009, 19:15
Hallo!

Ich möchte ein paar verschiedene AVR's über etwa 4m Entfernung programmieren können. Der serielle Port ist dafür wohl weniger geeignet (Keine Ahnung, aber es soll auch möglichst immer funktionieren).
Schön wäre ein USB Programmer. Leider kenne ich mich nicht so gut aus. Gibt es da Übertragungsprobleme?

Wie wäre es damit:
http://www.myavr.de/shop/article.php?artDataID=131

Brauch ich da sonst noch was? Oder einfach mit einem AVR verbinden und losprogrammieren?
Aber mit welchem Programm eigentlich? Ich habe AVRStudio, aber welche "Platform" müsste ich da wählen (Ich möchte nur C/C++ programmieren)?

Und was haltet ihr davon:
http://www.mikroe.com/en/compilers/mikroc/avr/

Wäre es mir wert. Ne tolle IDE denke ich. Hmm...

Danke schonmal!
MfG

christian_u
26.04.2009, 19:50
Wenn du die 4m auf der USB Seite überbrückst und nicht auf der ISP Seite würde das gehn.

http://www.ullihome.de/index.php/Hauptseite#USB_AVR-Lab

Mit dem Lab kannst du für 2,5x weniger Geld einges mehr machen.

Besserwessi
26.04.2009, 20:50
Als Software wäre das freie Paket WINAVR sinnvoll. Das ist im wesentlichen GCC unter Windows, um AVR code zu Erzeugen. Da ist ein eigener Editor mit dabei, aber man kann es auch in AVRStudio einbinden.


Mit echten seriellen Programmieren wie STK500 sollte es auch über 5 m keine Probleme geben.

Edit:
Die "Platform" im Projekt von AVRStudio wird in der Regel AVRsimulator sein. Wenn man einen extra Hardware für JATG hat, dann ggf. auch die.

Händler
27.04.2009, 07:42
Aha, danke erstmal!
WinAVR habe ich schon installiert.

Wie ist das mit dem USB AVR-Lab? Ich brauche sonst nichts? Einfach die der Firmware entsprechenden Platform im AVRStudio wählen und schon kann ich programmieren?

Gern hätte ich auch einen externen Takt beim Programmieren, aber das sollte kein Problem sein, oder? Einfach ein Board mit ein paar IC-Fassungen und nem Oszillator aufbauen.

Danke!
MfG

oberallgeier
27.04.2009, 09:01
Hi,


... Wie ist das mit dem USB AVR-Lab? Ich brauche sonst nichts? ...IM PRINZIP brauchst Du nicht mehr. Stimmt natürlich nicht: ein Kabel USBA-USBB vom PC zum U SB A VR Lab und ein (Flachband-)Kabel mit 2x5-poliger Wannenstecker-Buchse - Wannensteckerbuchse zum 10poligen I SP Wannenstecker mit üblicher Pinbelegung. Wenn Du einen 6-poligen ISP Stecker hast brauchst Du einen Adapter. Das Lab wird als STK500 konfiguriert, ans Target angeschlossen und dann brauche ich im AVRStudio nur noch das STK500 als Programmer zu wählen, den passenden Controller anklicken und einen geeigneten Programmiertakt - meist läuft bei mir 3 MHz, ich habe meist 20 MHz am Controller.


... Gern hätte ich auch einen externen Takt beim Programmieren ...Irgendwo in den Treibern zum U SB A VR Lab habe ich einen "Takt" gelesen - das steht glaube ich auch in der Beschreibung. Hab ich aber noch nicht ausprobiert.


... Einfach ein Board mit ein paar IC-Fassungen und nem Oszillator aufbauen ...Genau. Für meine selbstgebauten (potthässlichen) FLash+EXperimentierplatinen habe ich für verschiedene Controller jeweils ein Programm, das im Prinzip für eine 36 kHz-InfrarotLED gemacht ist. Das hat sich bei mir für solche Fälle schon bewährt.

Händler
27.04.2009, 10:06
Aha, mhm..

Schon klar, ISP Kabel brauch ich halt noch.

Programmiertakt? Ist der egal?
Ein ISP Anschluss speist keinen Takt ein, oder? Wenn doch, dann brauche ich auch keinen Oszillator mehr, außer ich möchte gleich ein Programmier/Experimentierboard in einem.

Öh, meinst du die Taktgenerator-Firmware?

Danke!
MfG

oberallgeier
27.04.2009, 10:25
Hi,


... Programmiertakt? Ist der egal ...Der Programmiertakt - also die Übertragungsgeschwindigkeit, steht irgendwo in der Dokumentation - soll max. 1/4 des Prozessortaktes sein.


... Wenn doch, dann brauche ich auch keinen Oszillator mehr, außer ich möchte gleich ein Programmier/Experimentierboard in einem ...Die Atmelcontroller kommen fabrikfrisch mit internem Takt - können also so ohne Oszillator oder Quarz betrieben werden. Die Programmierdaten werden in den Controller "hineingetaktet" - je nach Einstellung eben schneller oder langsamer.


... Öh, meinst du die Taktgenerator-Firmware? ...Genau die hatte ich gemeint.

Händler
27.04.2009, 11:57
Ich verstehe nicht.

Der Programmiertakt wird im AVRStudio bzw. dem Adapter eingestellt? Welcher Prozessortakt? Der Interne? Mein alter Parallelprogrammierer aus zwei 74xx244's hatte für's programmieren einen 4MHz Oszillator. Wie ist das jetzt mit ISP?

Ich möchte die AVR's meistens mit externem Takt betreiben, daher muss ich sie wohl auch mit externem Takt programmieren. Oder?

Und was hat es mit der Taktgenerator-Firmware auf sich? Speist der ISP nun einen Takt ein? Oder braucht man die Firmware? Oder brauche ich einen externen Oszillator? Oder...

Ich hab echt keine Ahnung :roll:

Johnes
27.04.2009, 14:40
Der µC benötig einen Takt. Dieser kann, wenn der Atmel frisch aus dem Werk kommt, der interne Oscillator mit z.B 1MHz sein.

Wenn du später aber einen externen Takt nutzen möchtest, musst du die FuseBits entsprechend ändern. Daher sollte der MCU gleich mit externem Takt aus dem Quarz/Oscillator verbunden werden. So umgehst du später Probleme, wenn der externe Takt gewählt ist und du das Programm ändern möchtest. (Und z.B. dafür den MCU aus der Schaltung mit dem Quarz/Osc. entnehmen musst. Ohne Taktgenerator läuft der MCU nicht mehr und kann auch nicht ohne MCU-Takt programmiert werden.)

Der Programmiertakt wird vom Programmer (z.B. USBASP) erzeugt und wird zusätzlich an den Programmierkanal (SCK) des MCU angelegt. Dieser Programmier-Takt sollte nicht größer als 1/4 des Taktes sein, mit dem der MCU z.B. vom Quarz versorgt wird. Wenn der MCU also mit 1 MHz arbeitet, sollte der Programmer also maximal einen Takt von 250kHz zum programmieren erzeugen.

In der Regel sind am Programmer zwei Einstellungen möglich "Fast" und "Slow". Meist entspricht "Fast" 250kHz. "Slow" ist an meinem Programmer 50kHz. Mit der Einstellung "Slow" konnte ich deine erforderlichen 4m schon mehrfach mit meinem USB-Programmer überbrücken.

Ich habe mir den USBASP selber gebaut und den MCU (Mega8) über einen aus wenigen Dioden und Widerständen bestehenden Programmer und dem AVRDUDE geschossen. Dann den M8 in die Schaltung eingesetzt und schon konnten die nächsten Schaltungen mit dem AVRDUDE über USB programmiert werden.

Die Schaltung ist einfach nachbaubar und die Software für den MCU auf dem Programmer, gibt es kostenlos.

Der 4-MHz Quarz an deinem alten Programmer war für den MCU auf dem Programmer! Der MCU erzeugte dann durch die Firmware auf dem Programmer-MCU einen weiteren Takt, den ISP/(SCK) Takt, den die Zielhardware (MCU) in deiner Schaltung benötigte.

MfG

Händler
27.04.2009, 19:06
Der Programmiertakt wird vom Programmer (z.B. USBASP) erzeugt und wird zusätzlich an den Programmierkanal (SCK) des MCU angelegt. Dieser Programmier-Takt sollte nicht größer als 1/4 des Taktes sein, mit dem der MCU z.B. vom Quarz versorgt wird. Wenn der MCU also mit 1 MHz arbeitet, sollte der Programmer also maximal einen Takt von 250kHz zum programmieren erzeugen.
Mhm, warum hat der Programmiertakt etwas mit dem Betriebstakt zu tun? Das verstehe ich nicht. Durch verschiedene Programmiertakte verändern sich doch nicht die geflashten Daten. Oder meinst du jetzt den internen Takt der MCU?


Ich habe mir den USBASP selber gebaut und den MCU (Mega8) über einen aus wenigen Dioden und Widerständen bestehenden Programmer und dem AVRDUDE geschossen. Dann den M8 in die Schaltung eingesetzt und schon konnten die nächsten Schaltungen mit dem AVRDUDE über USB programmiert werden.

Die Schaltung ist einfach nachbaubar und die Software für den MCU auf dem Programmer, gibt es kostenlos.
Ok, hab mich aber für "USB AVR Lab" entschieden.


Der 4-MHz Quarz an deinem alten Programmer war für den MCU auf dem Programmer! Der MCU erzeugte dann durch die Firmware auf dem Programmer-MCU einen weiteren Takt, den ISP/(SCK) Takt, den die Zielhardware (MCU) in deiner Schaltung benötigte.

Programmer-MCU? Hab grad nachgesehen; mein alter Programmer besteht aus einem einzigen 74xx244 Chip und paar Widerständen/Dioden. Der externe Oszi wurde wohl zum Programmieren UND Experimentieren benutzt.

MfG

oberallgeier
27.04.2009, 19:14
... Mhm, warum hat der Programmiertakt etwas mit dem Betriebstakt zu tun? ...Doch, das kannst Du Dir gut vorstellen: wenn der Controller langsam taktet - dann kann der doch die hereinkommenden Flashkommandos auch nur langsam verarbeiten. Wenn er wie verrückt rast (da könnte man sagen - er denkt schneller), versteht er die ankommenden Programmierkommandos schneller. Ok?

Händler
27.04.2009, 20:35
Ähh, uups, zum programmieren muss also SCK und XTAL gespeist werden... Dachte nur SCK zum programmieren und XTAL zum Betreiben sowieso.
Dann sollte ja nun alles klar sein.

Danke!
MfG

oberallgeier
27.04.2009, 20:46
... zum programmieren muss also SCK und XTAL gespeist werden...SCK ist zum Programmieren auf jeden Fall wichtig.

WENN kein externer Takt ansteht - siehe weiter unten - dann kann man den internen Oszillator des Controllers nutzen, siehe mein Posting von vormittags. Dann steht nur eine begrenzte Anzahl von Frequenzen zur Verfügung - der interne Oszillator des Controllers läuft auch nicht so supergenau und nicht sehr reproduzierbar - eben NICHT quarzgenau. Aber: Zum Programmieren ist XTAL nicht auf alle Fälle erforderlich.

XTAL1 wird alleine benutzt, wenn man eine externe Taktquelle hat - externer Takt, oder, wie es im Datenblatt heißt: external clock signal.

XTAL1 und XTAL2 werden beide benutzt, wenn ein Quarz oder Oszillator an den Controller angeschlossen ist. Das steht so alles in den Datenblättern.

Händler
28.04.2009, 00:06
In meinem Fall sind die AVR's ja schon für externen Takt gefused. Deshalb brauche ich wohl SCK und XTAL1...

Äh...

"XTAL1: externe Taktquelle"

...und...

"XTAL1 und XTAL2: wenn ein Quarz oder Oszillator an den Controller angeschlossen ist"

...ist doch dasselbe? Externe Taktquelle == Quarz/Oszi am Controller?!

MfG

christian_u
28.04.2009, 05:28
Externer takt in den fuses heisst das an XTAL1 ein rechtecksignal anliegen muss damit der Controller läuft.

Händler
29.04.2009, 07:50
Jo, schon klar, ok danke.

Händler
30.04.2009, 12:14
Öh moment mal!
Mein Oszilloskop zeigt mir ein leicht verzerrtes Sinussignal, kommend von einem 20MHz Quarzoszillator!

Was ist da jetzt los?

MfG

Ceos
30.04.2009, 13:31
viele oszis zeigen kein wirklich sonnvolles signal an wenn man direkt vom quarz misst ... kannste eigentlich ignorieren (oder weis einer wie man das einstellen muss)
versuch lieber in ner endlosschliefe nen pin zu triggern und schau dir die schaltzeiten an ... 4 rechen zyklen pro flanke also 125nS pro flanke bei 16Mhz

Händler
30.04.2009, 13:47
viele oszis zeigen kein wirklich sonnvolles signal an wenn man direkt vom quarz misst ...
Wieso denn das?

MfG

Händler
14.05.2009, 17:40
.............. :?:

Besserwessi
14.05.2009, 19:24
Die Spannung am Quarz sollte annähernd sinusfürmig sein. Dadurch das der eine Pin ein Ausgang ist der mehr oder weniger stark in die Begrenzung geht, hat man da irgendwas zwischen Sinus und Rechteck. Der Eingangspin könnte noch etwa komplizierters ein.

Das Problem beim messen mit dem Oszilloskop, ist das sich die Spannung durch Kapazität des Oszilloskops ändert. Selbst die etwa 5-10 pF eines 1:10 tastkopfes sind gegen die 22 pF am Quarz nicht unbedingt zu vernachlässigen. Es kann einem Auch passieren, das der Quarz sauber schwing solange das Oszilloskop dran hängt, aber die Schwingung aufhört wenn das Oszilloskop weg ist.
Da gegen hilft es, den Tastkopf nur in die Nähe (z.B. 1 cm) zu bringen und die Pins gar nicht zu berühren. Dann hält sich die Rückwirkung in Grenzen aber man hat durch kapazitive Kopplung schon genug Amplitude um die Frequenz/Wellenform abschätzen zu können. Nur die genaue Amplitude kreigt man so nicht.

Händler
18.05.2009, 13:05
Ok danke für die Erklärung.
Leider verstehe ich es nicht so recht. Naja, da muss ich wohl noch viel lernen...