Hi Leute!
Ich bin gerade dabei, das AVR Tutorial (Grundlagen I/O) dieser Seite
nachzuvollziehen.
Ich habe den Atmega8-Controller auf einem Steckbrett und benutzte den
original ISP von AVR (MKII) unter Ubuntu 14.04.
Zum Verhalten:
Ich kann den uC ohne Weiteres programmieren, und alles funktioniert
bisher, so wie es soll.
Wenn ich jedoch den uC starte, ohne dass dabei der ISP angeschlossen ist
tut sich nichts. Erst wenn ich den uC anschließe fangen die LEDs an zu
leuchten. Ziehe ich dann den USB-Stecker wieder ab, leuchten sie auch
dauerhaft.
Steckbrett am Strom -> nichts
ISP am USB-Anschluss vom PC und am Steckbrett -> LEDs leuchten
Steckbrett wieder nur am Strom -> LEDs leuchten
Ist dieses Verhalten normal? Ich denke mal nicht. Woran kann das liegen?
Hallo Philip,
für mich klingt das nach einem undefinierten Reset-Pegel, welcher durch
das Programmiergerät in die richtige Richtung gezogen wird.
Probier den Pegel am Reset-Pin durch PullUp- oder Down-Widerstand (ca.
10k) auf den richtigen Pegel zu ziehen.
Hat der Mega8 nicht eine Fuse mit der der Reset-Pin beeinflußbar ist?
Aber das wäre mit Vorsicht zu verwenden, nicht daß er am Ende nicht mehr
programmierbar ist.
Gruß. Tom
Philip schrieb:> tut sich nichts. Erst wenn ich den uC anschließe fangen die LEDs an zu> leuchten. Ziehe ich dann den USB-Stecker wieder ab, leuchten sie auch> dauerhaft.
Heisst das, du ziehst nur den USB Stecker vom Programmer zum PC ab?
Wenn ja. Dann trenne den Progammer vom Mega! AM PC kann der Programmer
die ganze Zeit angeteckt bleiben. Aber kein Mensch weiß, was der
Programmer mit der Reset-Leitung des Mega macht, wenn der Programmer
keinen Strom über USB bekommt.
Hi,
vielen Dank für die Antworten. Ich bin mir leider nicht ganz sicher ob
mein Problem "richtig" rübergekommen ist.
Wenn das Steckbrett mit dem PC über ISP verbunden ist, kann ich ganz
normal den Mega8 flashen und neue Programme aufspielen, die auch sofort
angenommen und umgesetzt werden.
Trenne ich dann den Mega8 vom ISP (bzw. den ISP von PC) läuft das
"Programm" (also in meinem Fall das Leuchten der LEDs) ganz normal
weiter.
Trenne ich dann das Steckbrett vom Strom, hören die LEDS
selbstverständlich auf zu leuchten.
Verbinde ich das Steckbrett dann wieder mit dem 5V Netzteil, passiert
nichts.
Wenn ich daraufhin den ISP wieder anschließe, also nur dem ISP per USB
Strom zuführe. Fangen die LEDs wieder an zu leuchten, jedoch muss ich
das Programm nicht neu aufspielen. Daher glaube ich auch nicht, dass
etwas "resettet" wird!
Jemand noch eine Idee?
Philip schrieb:> Jemand noch eine Idee?
Ja. Zeig deinen Schaltplan von Mega.
Hast du die übliche Aussenbeschaltung angebaut
* Abblockkondensatoren an den Spannungsversorgungsanschlüssen
* 10k Widerstand an Reset gegen Vcc
Wenn die da sind, gibts eigentlich keinen Grund mehr, warum der Mega
nach dem Anlegen der Versorgungsspannung nicht anlaufen sollte. Es sei
denn, deine Versorungsspannung ist ziemlich mies. Wie ist die aufgebaut?
Philip schrieb:> Wenn ich daraufhin den ISP wieder anschließe, also nur dem ISP per USB> Strom zuführe. Fangen die LEDs wieder an zu leuchten, jedoch muss ich> das Programm nicht neu aufspielen. Daher glaube ich auch nicht, dass> etwas "resettet" wird!
Gerade deshalb.
Das einzige, was der Programmer beeinflusst ist die Aussenbeschaltung
des Reset Pins. Wenn der Mega nach Anschluss des ISP anläuft, dann hat
er sogar recht wahrscheinlich vom Programmer eine vernünftige
Aussenbeschaltung des Reset Pins bekommen, so dass er aus dem Reset raus
kann.
Bist Du Dir sicher, dass die Betriebsspannung da ist?
Eventuell speist Du das System über den Programmieradapter. Für 'ne LED
und den Prozessor dürfte die Leistung des ISP ausreichen.
Hallo Philip,
ich habe dein Problem schon verstanden. Löte doch einfach mal einen
10k-Widerstand von VCC nach "Reset", damit wird der Pegel definiert auf
"kein Reset" gelegt. Wenn dein Mega8 dann ohne Programmiergerät
funktioniert ist es gut, wenn nicht ist der Fehler woanders!
Hier ein Auszug aus dem Datenblatt:
PC6/RESET
If the RSTDISBL Fuse is programmed, PC6 is used as an I/O pin. Note that
the electrical characteristics of PC6 differ from those of the other
pins of Port C.
If the RSTDISBL Fuse is unprogrammed, PC6 is used as a Reset input. A
low level on this pin for longer than the minimum pulse length will
generate a Reset, even if the clock is not running.
Gruß. Tom
Ich habe jetzt noch einmal ein bisschen am Schaltplan "rumgespielt".
Wenn ich das Kabel, dass zwischen ISP und ResetPin (Pin1) liegt, einfach
"rausziehe" und dann die Stromzufuhr schalte, funktioniert es wie
gewünscht.
Eigentlich dürfte dies doch keine Änderung, bei ausgeschaltetem ISP
hervorrufen, oder?
Ich hab mich m.E. genau an den Schaltplan hier im Tutorial gehalten.
Widerstand zwischen Reset und VCC (10 kOhm) vorhanden!
Hi
Leg doch einfach mal einen 10k Widerstand von Reset mach VCC und lass
dich überraschen. Das du Spannung auf dem Board hast, will ich dir auch
glauben, aber auch am Controller an den richtigen Pins? Es könnte auch
sein, das er sich "rückwärts" einspeist. In der Regel ist meistens der
Aufbau schuld oder die Software. Ich sprech da aus eigenen
Erfahrungen...
Also, such das Problem bei deiner Arbeit und nicht am Controller.
Gruß oldmax
Philip schrieb:> Ich habe jetzt noch einmal ein bisschen am Schaltplan "rumgespielt".>> Wenn ich das Kabel, dass zwischen ISP und ResetPin (Pin1) liegt, einfach> "rausziehe" und dann die Stromzufuhr schalte, funktioniert es wie> gewünscht.>> Eigentlich dürfte dies doch keine Änderung, bei ausgeschaltetem ISP> hervorrufen, oder?
Du spielst an der falschen Stelle.
Das alles ist völlig uninteressant.
Der Mega MUSS alleine auf seiner Platine nach Anlegen der
Versorgungsspannung loslaufen. Und zwar ohne, dass der ISP Progammer
angeschlossen ist. Gar nicht angeschlossen. Niente. Nada.
Alles andere ist 'Spielen an der falschen Stelle'.
> Ich hab mich m.E. genau an den Schaltplan hier im Tutorial gehalten.> Widerstand zwischen Reset und VCC (10 kOhm) vorhanden!
Dann mach ein Photo von deinem Aufbau.
Irgendwo hast du dann den Schaltplan nicht korrekt umgesetzt. Was
verwendest du als Spannungsversorgung des Mega?
Hallo Philip,
hast du die Fuses schon mal kontrolliert?
Wenn der BODLEVEL zu hoch eingestellt, oder die Versorgungsspannung zu
niedrig ist, kommt der Mega nicht aus dem Resetzustand!
Mir kommt auch der Reset-Kondensator mit 47nF etwas klein vor? Ich
verwende an der Stelle welche im µF-Bereich.
Gruß. Tom
Für diesen Aufbau würde ich in der Nähe des Mega8, noch einen Stützelko
im Bereich 10µF .... 100µF in die Versorgung schalten. Der kleine
Kondensator kann die Spannung beim einschalten nicht ausreichend
stützen.
TomA schrieb:> Hallo Philip,>> hast du die Fuses schon mal kontrolliert?>> Wenn der BODLEVEL zu hoch eingestellt, oder die Versorgungsspannung zu> niedrig ist, kommt der Mega nicht aus dem Resetzustand!>> Mir kommt auch der Reset-Kondensator mit 47nF etwas klein vor? Ich> verwende an der Stelle welche im µF-Bereich.>> Gruß. Tom
Hallo.
Die Fuses sind:
Da ich noch relativ "neu" bin, kann ich damit erstmal nichts anfangen.
Wegen den Kondensatoren: habe ich mich halt an den Plan hier im Tutorial
gehalten. Da wird auch ein 47 nF vorgeschlagen!
Hallo Philip,
ich kann in den Fuses nichts auffälliges sehen. Damit du selbst
kontrollieren kannst, hier mal die Übersetzung der Einstellungen.
Ich würde es mal mit größeren Kondensatoren probieren. Ich fürchte dein
Reset ist schon weg, bevor der Mega8 stabile Verhältnisse vorfindet.
Gruß. Tom
Kann das mal wer im Bild verifizieren?
Der Anschluss der Versorgungsspannung an den Pins 22/20 (also auf der
ARef seite des Mega8) ist falsch. Der Kondenstaor ist kein
Blockkondensator sondern ist in die Vcc Leitung eingeschleift. Auch
sieht es für mich danach aus, als ob es auf dieser Seite des µC keine
GND Verbindung gäbe. Die graue Verbindung geht ins Leere.
TomA schrieb:> Mir kommt auch der Reset-Kondensator mit 47nF etwas klein vor? Ich> verwende an der Stelle welche im µF-Bereich.
Im Prinzip brauchst du den gar nicht. Wenn deine Spannungsquelle nicht
allzu versaut ist, bzw. einigermassen gut abgeblockt ist, dann ist der
unnötig.
Philip schrieb:> Hier der Aufbau.>> Versorgt wird das ganze über ein altes USB-Ladegerät von einem Handy..> Spannung liegt bei 5,2 Volt.
Da wir nicht wissen, ob dieses Ladegerät noch einen kleinen Ripple auf
der Spannung hat, wäre ein kleiner Elko von sagen wir mal 100µF keine
Fehlinvestition. Zusammen mit einem kleinen Konensator von, sagen wir
mal 100nF, der sich um die möglicherweise hochfrequenten Anteile aus dem
Schaltnetzteil kümmert.
Generell: die Versorgungsspannung kann gar nicht gut genug gesiebt
werden. An dieser Stelle lieber ein paar µF zu viel als zu wenig (aber
auch wieder nicht übertreiben. Wenn die Spannung eine halbe Stunde
braucht um den gewünschten Pegel zu erreichen, dann hat man übertreiben
:-).
Hmmm...
1. LowFuse auf 0xFD setzen -( BOD disabled)
2. Kondensator von der Resetleitung abklemmen.
3. Einschalten, anlaufen lassen, Reset pin
kurz mit Masse verbinden - OK danach ?
ATMEL: "When the CPU starts from reset,
there is as an additional delay allowing
the power to reach a stable level before
commencing normal operation."
Karl Heinz sagte dir bereits:
>>Das alles ist völlig uninteressant.
Es liegt am Resetpin und ALLES ANDERE ist
völlig uninteressant.
Du machst offensichtlich den fehler, den ISP Programmieradapter OHNE
Stromversorgung (über USB) an deine Schaltung anzuschließen.
Das ist so nicht vorgesehen. Damit riskierst Du, den Programmieradapter
zu beschädigen.
Bei fast allen digitalen Mikrochips gilt die Beschränkung, dass die
Spannung an I/O Pins nicht höher als VCC und nicht niedriger als GND
sein darf. Für ATmega und den Programmieradapter gilt das ganz sicher.
Betrachte Deine Konstruktion aus Sicht des Programmieradapters. Da das
USB Kabel abgesteckt ist, hat er keine Versorgungsspannung. VCC ist Null
Volt. Folglich darf an keine I/O Pin mehr als 0 Volt anliegen.
Dein Reset Pin muss High Pegel haben (vermutlich mehr als 2V), damit der
Mikrocontroller läuft. Mit diesme Pin ist auch der Spannungslose
Programmieradapter verbuden. Da 2V größer als 0V (VCC) ist, werden die
Schutzdioden im Eingang des Programmieradapters leitend:
Der Strom fließt von internen 50k Ohm Pull-Up Widerstand des Atmegas
über die mit * markierte Diode. Das heisst, am Reset Pin liegen nur
ungefähr 0,7V an.
Bole aus Serbien schrieb:> Karl Heinz sagte dir bereits:>>>Das alles ist völlig uninteressant.>> Es liegt am Resetpin und ALLES ANDERE ist> völlig uninteressant.
Erst mal soll er seine Versorgungsspannung korrekt anschliessen.
Die Chancen stehen nicht schlecht, dass der Mega auch ohne jegliche
Beschaltung des Reset Pins bzw. Blockkondensatoren anläuft. Schon
gemacht, schon gesehen, schon verifiziert.
Das das (speziell ohne die Blockkondenssatoren) keine Dauerlösung ist,
ist auch klar. Aber am Reset braucht er im Grunde überhaupt nichts
machen. Atmel hat einen Pullup in den Mega am Resetpin eingebaut. Der
ist nur leider etwas hoch geraten, sodass Atmel in 'gestörten'
UMgebungen (und eigentlich nur dort) einen zusätzlichen Reste-Pullup von
ca 10k empfiehlt. Auf einem Steckbrettaufbau, weit weg von allen
möglichen Störungen durch starke Elektromotoren in der näheren Umgebung
geht es auch so. Das wir Bastler dein einfach immer einbauen, ist mehr
Pragmatismus als alles andere (genauso wie der Kondensator am Reset),
weil wir dann in allen vorkommenden Situationen Ruhe haben ohne uns in
Sonderfällen mit unerklärlichen Phänomänen rumschlagen zu müssen.
Aber erst mal soll er seine Versorgungsspannung korrekt anschliessen.
Dazu das ganze gerümpel runter und 4 Leitungen ziehen. 2 von der +
Schiene auf Vcc und AVcc, 2 weitere von der - Schiene nach den beiden
GND Anschlüssen. Im Prinzip würde der Mega damit schon laufen und wird
es höchst wahrscheinlich auch. Dann die beiden Blockkondensatoren auf
beiden Seiten ergänzen (dazu muss die bisherige Versorgungsverkabelung
nicht aufgetrennt werden) und noch den 10k an Reset dazu. Der Mega muss
immer noch laufen.
Philip schrieb:> Wenn ich das Kabel, dass zwischen ISP und ResetPin (Pin1) liegt, einfach> "rausziehe" und dann die Stromzufuhr schalte, funktioniert es wie> gewünscht.
Die Ursache ist doch sonnenklar. Wenn der Programmer am ISP steckt, aber
nicht mit Strom versorgt wird, zieht er offensichtlich den RESET-Pin auf
Masse, weil sein Zustand ohne Versorgungsspannung nicht definiert ist.
Ich kann dieses Verhalten mit meinem Board und Programmer (Diamex) exakt
nachvollziehen.
Also trenne den Programmer vom ISP oder versorge ihn mit Strom. Der
Pullup-Widerstand am RESET sollte trotzdem in jedem Falle dran sein, so
ersparst du dir unerklärliche Phänomene.
Icke ®. schrieb:> Philip schrieb:>> Wenn ich das Kabel, dass zwischen ISP und ResetPin (Pin1) liegt, einfach>> "rausziehe" und dann die Stromzufuhr schalte, funktioniert es wie>> gewünscht.>> Die Ursache ist doch sonnenklar. Wenn der Programmer am ISP steckt, aber> nicht mit Strom versorgt wird, zieht er offensichtlich den RESET-Pin auf> Masse, weil sein Zustand ohne Versorgungsspannung nicht definiert ist.> Ich kann dieses Verhalten mit meinem Board und Programmer (Diamex) exakt> nachvollziehen.> Also trenne den Programmer vom ISP oder versorge ihn mit Strom. Der> Pullup-Widerstand am RESET sollte trotzdem in jedem Falle dran sein, so> ersparst du dir unerklärliche Phänomene.
Das war's!
Danke!!! auch an alle anderen!
Nichts desto trotz ist AVcc bzw. as GND auf dieser Seite falsch
angeschlossen.
UNd reagiere das nächste mal frühzeitig auf die Bitte nach eindeutiger
Beschreibung dessen, was du machst. Denn um 12 hast du einen Post
rausgelassen, der sich so liest, als ob du genau das (den ISP vom Mega
abzutrennen) schon gemacht hättest.
Karl Heinz schrieb:
> Atmel hat einen Pullup in den Mega am Resetpin eingebaut. Der> ist nur leider etwas hoch geraten, sodass Atmel in 'gestörten'> UMgebungen (und eigentlich nur dort) einen zusätzlichen Reste-Pullup von> ca 10k empfiehlt.
Nein.
Zusätzlicher Pullup wird parallel geschaltet, so dass:
Min. 30K, Max. 80K fur MEGA8 ( laut Atmel )
Ich benutze 47K fur alle und bin bisher damit ganz gut gefahren.
Natürlich stimme ich mit dir überein, dass alles andere
korrekt sein muss.
Bole aus Serbien schrieb:> Karl Heinz schrieb:>> Atmel hat einen Pullup in den Mega am Resetpin eingebaut. Der>> ist nur leider etwas hoch geraten, sodass Atmel in 'gestörten'>> UMgebungen (und eigentlich nur dort) einen zusätzlichen Reste-Pullup von>> ca 10k empfiehlt.>> Nein.> Zusätzlicher Pullup wird parallel geschaltet, so dass:> Min. 30K, Max. 80K fur MEGA8 ( laut Atmel )
Ähm.
Du sprichst auf die Zeile R_Rst in der Tabelle DC Characteristics zum
Beispiel im Datenblatt des Mega8 auf Seite an?
Das ist die Größe des von Atmel verbauten Reset-Pullup Widerstandes. Der
hat zwischen 30k und 80k. Die ganze Tabelle beschäftigt sich mit den
Eigenschaften des Mega selber und nicht mit dem, was man rundherum
anbauen muss/soll.
In besagtem Datenblatt ist er in der Figure 14 als Teil der Reset-Logik
auch eingezeichnet.
Karl Heinz schrieb:> Ähm.> Du sprichst auf die Zeile R_Rst in der Tabelle DC Characteristics zum> Beispiel im Datenblatt des Mega8 auf Seite an?
Genau
> Das ist die Größe des von Atmel verbauten Reset-Pullup Widerstandes.
Und wieder ins Schwarze getroffen ;)
Was ich meinte:
30 - 80K ist vollkommen ausreichend, im Durchschnitt sind
es 66K (Figure 145), ext. Widerstand wird parallel geschaltet,
so dass es bei 10K etwa 8K sind - bei 5V ergibt das 0.6mA
Mit 47K sind es 27.5K und 0.18mA, bla, bla...
Fazit:
JA, DU HAST RECHT, VERDAMMT NOCH MAL !!!