Der Hardware-Aufbau ist auch super simpel - siehe Bild Connection. Es
gibt eine Stromversorgung über 3*1,5v AA Batterien, einen 1uF Cap
zwischen DVCC und DGND (AVCC und AGND hat nur eine Stromversorgung, aber
keinen Cap da auch nicht genutzt). Die LED hängt über Widerstand am VCC
und das GND-Beinchen am PB1 des ATMega.
Programmierung und Hochladen geschieht mittels eines Arduino Pro Mini
(siehe Bild Programmer) und scheint auch zu funktionieren - zumindest
liefert die Arduino IDE keinen Fehler und endet mit der positiven
Meldung:
Wenn 2,5V am 56 Ohm Widerstand abfallen, dann fließen 44mA. Das ist
zuviel sowohl für den ATMega8, als auch für die LED.
Miss doch mal den Ausgang nach.
Oder LED verpolt.
Christian G. schrieb:> Die LED hängt über Widerstand am VCC und das GND-Beinchen
DU meinst die Kathode, oder?
> am PB1 des ATMega.
Leuchtet die LED, wenn du da eine Brücke nach GND machst?
> #define F_CPU 1000000UL
Echt jetzt? Woher hast du die?
Du kannst da nicht irgendeine Taktfrequenz auswählen, sondern du musst
dort das angeben, was tatsächlich am Taktgeber reinkommt.
Euro schrieb:> Fehlt vielleicht der PullUp am Reset-Pin?
Das könnte man mit einem Messgerät mal messen.
Euro schrieb:> Fehlt vielleicht der PullUp am Reset-Pin?
Danke für Diene Antwort, aber laut Datenblatt hat der ATMega doch einen
internen Pullup hier, oder nicht? Außerdem funktioniert ja das
Programmieren und Hochladen - zumindest gibt es diese typischen Fehler
mit Connection Timed out etc. beim proggen nicht. Nur nachdem ich den
ATMEga umstecke und unter Strom setze, passiert halt nix :-(
Christian G. schrieb:> Außerdem funktioniert ja das Programmieren und Hochladen
Richtig: in einem anderen Board.
Du könntest übrigens nach dem Programmieren in diesem Board mal mit dem
Multimeter messen, ob der PB1 dort dann zappelt.
BTW: das Steckbrett musste ja offenbar schon einiges mitmachen. Da
könnte sich der eine oder andere Wackelkontakt ansammeln...
Lothar M. schrieb:> Christian G. schrieb:>> Die LED hängt über Widerstand am VCC und das GND-Beinchen> DU meinst die Kathode, oder?
Äh ja - genau. Sorry falsch geschrieben.
>> am PB1 des ATMega.> Leuchtet die LED, wenn du da eine Brücke nach GND machst?
Ja, dann leuchtet sie.
>> #define F_CPU 1000000UL> Echt jetzt? Woher hast du die?> Du kannst da nicht irgendeine Taktfrequenz auswählen, sondern du musst> dort das angeben, was tatsächlich am Taktgeber reinkommt.
Ich hab in der Arduino IDE als Taktfrequenz auch 1MHz angegeben -
allerdings hat mein Programmer einen externen 16MHz Quartz. Kannst das
zu Schwierigkeiten führen?
> Euro schrieb:>> Fehlt vielleicht der PullUp am Reset-Pin?> Das könnte man mit einem Messgerät mal messen.
Ich kann ja mal einen 10kOhm an PIN 1 anbringen - aber wohin geht der zu
GND?
Michael M. schrieb:> Wenn 2,5V am 56 Ohm Widerstand abfallen, dann fließen 44mA. Das ist> zuviel sowohl für den ATMega8, als auch für die LED.
Ich hab den 56er gegen 220 ausgetauscht. Wenn ich die Kathode der LED
nach GND ziehe Leuchte sie jetzt ganz wenig.
> Miss doch mal den Ausgang nach.
Leider hab ich mein Messgerät verloren :-(
> Oder LED verpolt.
Nein, leider nicht :-( Leuchtet mit Kathode auf GND
Christian G. schrieb:> allerdings hat mein Programmer einen externen 16MHz Quartz. Kannst das> zu Schwierigkeiten führen?
Nein, das funktioniert ja.
> Ich hab in der Arduino IDE als Taktfrequenz auch 1MHz angegeben
Es geht nicht darum, was in der Entwicklungsumgebung angegeben ist,
sondern wie die Fusebits des µC gesetzt sind. Evtl. braucht der
verfusterweise einen externen Takt...
Christian G. schrieb:> Leider hab ich mein Messgerät verloren :-(
Tragisch. Handlungsbedarf.
Christian G. schrieb:> Kann mir einer sagen, was zum Geier ich hier falsch mache?
Das Programm läuft.
Bekomme eine Warnung:
> warning: "F_CPU" redefined
Also: Nein, ich habe keine Ahnung!
LED falsch rum?
Lothar M. schrieb:> Christian G. schrieb:>> allerdings hat mein Programmer einen externen 16MHz Quartz. Kannst das>> zu Schwierigkeiten führen?> Nein, das funktioniert ja.
Stimmt auch wieder.
>> Ich hab in der Arduino IDE als Taktfrequenz auch 1MHz angegeben> Es geht nicht darum, was in der Entwicklungsumgebung angegeben ist,> sondern wie die Fusebits des µC gesetzt sind. Evtl. braucht der> verfusterweise einen externen Takt...
Verdammt. Wie finde ich das denn nun raus?
> Christian G. schrieb:>> Leider hab ich mein Messgerät verloren :-(> Tragisch. Handlungsbedarf.
Definitiv
EAF schrieb:> Christian G. schrieb:>> Kann mir einer sagen, was zum Geier ich hier falsch mache?>> Das Programm läuft.>> Bekomme eine Warnung:>> warning: "F_CPU" redefined
Das spricht für die falsche MHz Zahl, oder? Kann ich die Zeile einfach
rausnehmen?
>> Also: Nein, ich habe keine Ahnung!> LED falsch rum?
Ne. Bei Kathode an GND im selben Aufbau, leuchtet sie.
Andreas B. schrieb:> Indem Du im Programmer die fuses ausliest und hier mal postest.
Die werden beim Hochladen von Arduino/AVRdude angezeigt.
Wenn man denn die Ausführlichen Ausgaben aktiviert.
Im Bild mit dem Aufbau oben vergrößert sieht man auf dem IC die
Beschriftung PIN1. Kann es sein, dass das gar kein nackter ATMega8,
sondern etwas Vorprogrammiertes ist?
Euro schrieb:> Im Bild mit dem Aufbau oben vergrößert sieht man auf dem IC die> Beschriftung PIN1. Kann es sein, dass das gar kein nackter ATMega8,> sondern etwas Vorprogrammiertes ist?
Hä?
Das hat der TO eingefügt damit wir wissen wo, was und wie angeschlossen
ist.
@Christian
wenn du den Takt auf externen Quarz eingestellt hast, dann läuft er im
Programmer - aber auf deinem Board mit der LED mangels Quarz natürlich
nicht.
Da solltest du mal schauen was da eingestellt ist.
Sascha
EAF schrieb:> Andreas B. schrieb:>> Indem Du im Programmer die fuses ausliest und hier mal postest.>> Die werden beim Hochladen von Arduino/AVRdude angezeigt.> Wenn man denn die Ausführlichen Ausgaben aktiviert.
Das hier:
Lothar M. schrieb:> DU meinst die Kathode, oder?>> am PB1 des ATMega.> Leuchtet die LED, wenn du da eine Brücke nach GND machst?
Klasse!
Wenn der Mega 8 dort H-Pegel ausgibt, schließt man schön dessen Ausgang
nach GND kurz und erledigt ihn damit.
Prima Tip....
Gutes Rad ist teuer schrieb:> Wenn der Mega 8 dort H-Pegel ausgibt, schließt man schön dessen Ausgang> nach GND kurz und erledigt ihn damit.
Ach was. Der geht davon nicht kaputt. Der Kurzschluss soll da ja nicht
für 3 Stunden drin sein. Zum E kennen, ob die LED leuchtet reicht 1
Sekunde.
Aber auch 3 Stunden bringen den Pintreiber oder den AVR nicht um.
Probiers einfach mal aus.
avrdude: safemode: Sorry, reading back fuses was unreliable. I have given up and exited programming mode
23
24
avrdude done. Thank you.
Dieser Teil hier macht mir etwas Sorgen:
1
avrdude: safemode: Fuse reading not support by programmer.
2
Safemode disabled.
Wie gesagt, ich nutze einen Arduino Pro Mini als Programmer - habe ihn
exakt nach Vorgaben aufgebaut und er scheint ja auch zu funktionieren,
wenn man der Ausgabe beim hochladen glauben schenken darf - aber
trotzdem .
Christian G. schrieb:> gibt das hier aus:Christian G. schrieb:> I have given up and exited programming mode> avrdude done. Thank you.
Inwiefern glaubt du, dass bei dir irgendwas funktionieren würde ?
MaWin schrieb:> Christian G. schrieb:>> gibt das hier aus:>> Christian G. schrieb:>> I have given up and exited programming mode>> avrdude done. Thank you.>> Inwiefern glaubt du, dass bei dir irgendwas funktionieren würde ?
Weil der Output beim hochladen dieser hier ist, und das doch schon sehr
danach aussieht, als ob mein Programmer das sauber auf den Mega8
gebracht hätte:
1
avrdude: Version 6.3-20201216
2
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
3
Copyright (c) 2007-2014 Joerg Wunsch
4
5
System wide configuration file is "/Users/chris/Library/Arduino15/packages/MiniCore/hardware/avr/2.1.2/avrdude.conf"
6
User configuration file is "/Users/chris/.avrduderc"
PS:
Also wenn das mit dem Fuse Low Byte 'BF' stimmt, dann einen Quarz > 1
MHz an B6 & B7 stecken, einen externen Takt an B6 anschließen oder
versuchen, die (Standard-) Werks-Fuses zu programmieren; derzeit hat der
ATmega8 auf dem Steckbrett keinen Takt.
> use reading not support by programmer
Ich frage mich, was du auf das Arduino Modul geflasht hast. Der ISP
Sketch der in der Arduino IDE enthalten ist unterstützt meines Wissens
nach den Zugriff auf die Fuses.
Jedenfalls ist dein Mikrocontroller (Target) mit Quarz funktionsfähig,
sonst hättest du dein Programm nicht hochladen können. Danach läuft er
ohne Quarz offenbar nicht. Ergo: Schließe einen Quarz an.
Oder besorge dir einen Programmieradapter, mit dem du die Fuses ändern
kannst, um auf den internen R/C Oszillator umzuschalten.
Stefan ⛄ F. schrieb:> Oder besorge dir einen Programmieradapter, mit dem du die Fuses ändern> kannst, um auf den internen R/C Oszillator umzuschalten.
Hat er doch!
Oder?
Muss ihm nur 1MHz intern auswählen und einmal Bootloader brennen
drücken.
Das setzt die Fuses.
Das geht auch wenn "kein Bootloader" ausgewählt wurde.
Stefan ⛄ F. schrieb:> Ich frage mich, was du auf das Arduino Modul geflasht hast. Der ISP> Sketch der in der Arduino IDE enthalten ist unterstützt meines Wissens> nach den Zugriff auf die Fuses.
Wie ich die A*-IDE verstehe, werden die Fuses nur beim Flashen des
Bootloaders gemäß der Definition in der Boards.txt gesetzt.
Lassen sich mit der A*-IDE überhaupt Programme für den ATMega8
compilieren, der ist doch in deren Universum nicht vorgesehen?
Manfred schrieb:> Lassen sich mit der A*-IDE überhaupt Programme für den ATMega8> compilieren, der ist doch in deren Universum nicht vorgesehen?
Mit der richtigen BoardDefinition lässt sich jeder µC nutzen, für den es
eine gcc gibt.
Also: JA!
Manfred schrieb:> Stefan ⛄ F. schrieb:>>> Ich frage mich, was du auf das Arduino Modul geflasht hast. Der ISP>> Sketch der in der Arduino IDE enthalten ist unterstützt meines Wissens>> nach den Zugriff auf die Fuses.>> Wie ich die A*-IDE verstehe, werden die Fuses nur beim Flashen des> Bootloaders gemäß der Definition in der Boards.txt gesetzt.> Lassen sich mit der A*-IDE überhaupt Programme für den ATMega8> compilieren, der ist doch in deren Universum nicht vorgesehen?
Dafür gibt es Erweiterungen
z.B.: https://github.com/MCUdude/MiniCore
Andre schrieb:> Manfred schrieb:>> Stefan ⛄ F. schrieb:>>>>> Ich frage mich, was du auf das Arduino Modul geflasht hast. Der ISP>>> Sketch der in der Arduino IDE enthalten ist unterstützt meines Wissens>>> nach den Zugriff auf die Fuses.>>>> Wie ich die A*-IDE verstehe, werden die Fuses nur beim Flashen des>> Bootloaders gemäß der Definition in der Boards.txt gesetzt.>> Lassen sich mit der A*-IDE überhaupt Programme für den ATMega8>> compilieren, der ist doch in deren Universum nicht vorgesehen?>> Dafür gibt es Erweiterungen> z.B.: https://github.com/MCUdude/MiniCore
Die hab ich drin
EAF schrieb:> Stefan ⛄ F. schrieb:>> Oder besorge dir einen Programmieradapter, mit dem du die Fuses ändern>> kannst, um auf den internen R/C Oszillator umzuschalten.>> Hat er doch!> Oder?>> Muss ihm nur 1MHz intern auswählen und einmal Bootloader brennen> drücken.> Das setzt die Fuses.> Das geht auch wenn "kein Bootloader" ausgewählt wurde.
Da zeigt sich einmal mehr meine erschreckende Unwissenheit in Bezug auf
Mikrocontroller.
Wenn ich die Antworten richtig verstanden habe, dann habe ich die Fuses
des yC beim Vorgang "Brennen Bootloader" auf externen 16MHz Crystal
gesetzt und nun kann ich nicht einfach sagen, mach mal intern 8MHz, wenn
ich das Programm brenne? Also, die Fuses werden nur beim Bootloader
brennen gesetzt und danach sind die Einstellungen unter Tools -> Clock
eigentlich wirkungslos?
S. Landolt schrieb:> PS:> Also wenn das mit dem Fuse Low Byte 'BF' stimmt, dann einen Quarz > 1> MHz an B6 & B7 stecken, einen externen Takt an B6 anschließen oder> versuchen, die (Standard-) Werks-Fuses zu programmieren; derzeit hat der> ATmega8 auf dem Steckbrett keinen Takt.
Verdammt. Ich versteh einfach noch zu wenig von dem Kram :-)
DER GÄHHT. ISCH WERD BEKLOPPT, DER GÄHHT.
oder anders ausgedrückt. Kaum macht mans richtig, schon funktioniert es.
Ich habe, wie geraten, unter Tools->Clock den Takt auf intern 8MHz
gestellt, einmal Bootloader brennen gedrückt und dann mein Programm zur
Sicherheit noch einmal hochgeladen. Und siehe da, die LED blinkt.
Nächstes Ziel: Marsroboter auf Basis eines Mega8 bauen :-)
Euch allen vielen, vielen Dank für die vielen Hilfestellungen und
Tips!!!
Christian G. schrieb:> Euch allen vielen, vielen Dank für die vielen Hilfestellungen und> Tips!!!
Und nicht vergessen auch mal einen keramischen Abblock-
Kondensator zu verwenden. Bei manchen AVR-Controllern brauchts
auch mal zwei oder drei oder vier ....
Braucht's nicht? Geht auch ohne? Ja, das ganze Internet spricht
so. YMMV. Wenn's nicht funktioniert liegt es nie an fehlenden
Abblock-Kondensatoren. Am Öl kann's nicht gelegen haben, war ja
keins drin.
erklehr behr schrieb:> Christian G. schrieb:>> Euch allen vielen, vielen Dank für die vielen Hilfestellungen und>> Tips!!!>> Und nicht vergessen auch mal einen keramischen Abblock-> Kondensator zu verwenden. Bei manchen AVR-Controllern brauchts> auch mal zwei oder drei oder vier ....
Jetzt muss ich mich schon wieder als Noob outen. Ich hab zwischen DGND
und DVCC einen 1uF Kondensator und auf den VCC und GND Rails einen 100uF
drin. Meinst Du so etwas, oder brauch ich noch woanders was?
> Braucht's nicht? Geht auch ohne? Ja, das ganze Internet spricht> so. YMMV. Wenn's nicht funktioniert liegt es nie an fehlenden> Abblock-Kondensatoren. Am Öl kann's nicht gelegen haben, war ja> keins drin.
:-)
Christian G. schrieb:> Jetzt muss ich mich schon wieder als Noob outen. Ich hab zwischen DGND> und DVCC einen 1uF Kondensator und auf den VCC und GND Rails einen 100uF> drin. Meinst Du so etwas, oder brauch ich noch woanders was?
Elkos alleine reichen nicht, die sind zu träge. Orientiere dich am
Datenblatt des verwendeten Spannungsreglers. Da steht drin, welche
Kondensatoren er drumherum braucht, um stabil zu arbeiten.
Zusätzlich soll jedes IC einen eigenen 100nF Kondensator (nicht Elko!)
möglichst nahe zu seinen VCC/GND Pins haben.
Weitere Elkos braucht man normalerweise nicht.
Stefan ⛄ F. schrieb:> Zusätzlich soll jedes IC einen eigenen 100nF Kondensator (nicht Elko!)> möglichst nahe zu seinen VCC/GND Pins haben.
Nicht nur einen!
Sondern an jedem Pärchen Versorgungspins einen.
Beim ATMega8 sind das damit schon 2
Reset und Aref dürfen, je nach Umständen, auch jeweils noch einen
bekommen.
Somit sind wir bei 4 keramischen 100nF
Meine Glaskugel sagt:
Der keramische 100nF Kondensator ist das häufigste Bauteil auf digital
Platinen.
Christian G. schrieb:> Also, die Fuses werden nur beim Bootloader> brennen gesetzt und danach sind die Einstellungen unter Tools -> Clock> eigentlich wirkungslos?
Wirkungslos?
Nee... Deine Einstellung sagt dem Programm wie schnell der µC getaktet
ist. Wird z.B. für Delays, Timeouts oder Baudrate Berechnungen benötigt.
Eigentlich...
Eigentlich kann man die Fuses Einstellungen auch im C Programm
vornehmen, dann muss man nur die *.elf Datei dem AVRdude vorwerfen um
sie gleich mit zu setzen. Leider wird das nicht unmittelbar von Arduino
unterstützt, da Arduino in der Regel Bootloader nutzt, dieser aber die
Fuses nicht schreiben kann.
Stefan ⛄ F. schrieb:> Zusätzlich soll jedes IC einen eigenen 100nF Kondensator (nicht Elko!)> möglichst nahe zu seinen VCC/GND Pins haben.
Meine Mikrocontroller bekommen von mir 220nF. Naja, ich kann es mir
leisten.
Georg M. schrieb:> Meine Mikrocontroller bekommen von mir 220nF. Naja, ich kann es mir> leisten.
Mein Rat: Ersatzschaltbild betrachten!
Danach ist ein jeder Kondensator, auch mit seiner Leiterbahn, eine
Kombination aus R, L und C.
Dein 220nF hat also andere Eigenschaften als ein 100nF.
Nicht unbedingt bessere.
Was besser ist, lässt sich nur im konkreten Einzelfall bewerten.
Drum setzt man auch gerne, an kritischen Stellen, mehrere verschiedene
parallel. Gerade wenn anlog und digital Schaltungen sich auf einem
Board versammeln.
EAF schrieb:> Drum setzt man auch gerne, an kritischen Stellen, mehrere verschiedene> parallel.
Hi,
nicht nur das, habe vor den Vcc-Pins am IC direkt 100µH Ferritdrosseln
noch dran. (Und das auch ohne den ADC zu benutzen.). Die UART Anschlüsse
wurden jeweils durch eine Ferritperle gezogen.
Frappierende Wirkung. Hörte immer im UKW-Taschenradio die Serielle RS232
Schnittstelle takten vorher.
ciao
gustav
Georg M. schrieb:> Meine Mikrocontroller bekommen von mir 220nF. Naja, ich kann es mir> leisten.
Dummerweise gilt hier halt nicht: Viel hilft viel. 100nF sind eher die
obere Grenze.
Andreas B. schrieb:> Dummerweise gilt hier halt nicht: Viel hilft viel.> 100nF sind eher die obere Grenze.
Auch nur die halbe Wahrheit, denn vorrangig ist die Bauform relevant.
Je kleiner, desto kürzer sind die elektrischen Verbindungen und desto
niedriger sind die parasitären Induktivitäten.
Deshalb gibt es auch Kondensatoren mit Kontakten an den Längsseiten.
Deren Bauform heißt dann 0204, 0306, 0805 statt 0402, 0603, 0805 oder
eben "Reversed":
https://www.mouser.de/c/passive-components/capacitors/ceramic-capacitors/mlccs-multilayer-ceramic-capacitors/multilayer-ceramic-capacitors-mlcc-smd-smt/?case%20code%20-%20in=0204%20%28Reversed%29
Oder andersrum: setze einen Kondensator im kleinsten plausiblen Gehäuse
dicht an die Versorgungspins (es macht natürlich keinen Sinn, einen 0402
Konsdensator zwischen 2 Pads eines Dil-Gehäuses zu löten). Wenn es einen
Kondensator mit größerer Kapazität im gleichen Gehäuse gibt, dann nimm
den.
Dort gibts das in Worten und im Film:
https://electronics360.globalspec.com/article/17341/decoupling-capacitors-and-modern-component-package-sizes
Aber für den AVR ist das Thema noch recht entspannt. Da reicht ein
keramischer Kondensator mit einer Kapazität ab 47nF aufwärts und
passender Spannung möglichst direkt zwischen dem Versorgungspärchen (Vcc
und GND).
Und wenn man dann einen 220nF Kondensator mit 10V nimmt, dann kommt man
automatisch bei einer kompakten Bauform heraus.
Lothar M. schrieb:> Je kleiner, desto kürzer sind die elektrischen Verbindungen und desto> niedriger sind die parasitären Induktivitäten.
Stimmt, ich bin jetzt mal von gegebener Bauform ausgegangen.
> Deshalb gibt es auch Kondensatoren mit Kontakten an den Längsseiten.
Interessant. Die habe ich noch nie gesehen.
> Und wenn man dann einen 220nF Kondensator mit 10V nimmt,
Hat man bei 5V evtl. nur noch 100nF. ;-)
Andreas B. schrieb:> Stimmt, ich bin jetzt mal von gegebener Bauform ausgegangen.
Aber gerade bei gegebener Bauform nimmt man den Kondensator mit der
höheren Kapazität. Denn gerade bei einer gegebenen Bauform ist
unabhängig von der Kapazität auch die parasitäre Induktivität annähernd
gleich.
> Hat man bei 5V evtl. nur noch 100nF. ;-)
Dann passt es ja wieder. Und 220nF sind die besseren 100nF... ;-)