Hallo,
ich will mir mit einem Atmega328 (also ohne Arduino) etwas bauen, ich hab den bootloader für das Arduino Uno und das Blink beispiel daufgeschrieben.
(Das hab ich gemacht indem ich den Atmega einfach auf mein Arduino anstelle des originalen atmegas gesteckt hab)
Dort hat es gut funktioniert.
Nun habe ich es ohne Arduino versucht und die Led einfach an Pin 19 gehängt, welcher ja beim Arduino Pin 13 ist.
naja... ohne erfolg, die Led bleibt dunkel
Dann habe ich es mit dem digitalen pin 2 versucht (also vom arduino).
Am arduino hat alles funktioniert, aber auch dieses mal bleibt die LED finster wenn ich nur den Atmega verwende (hab sie an Pin 4 des atmegas gehängt)
Strom liefere ich dem atmega über das arduino (5V, GND) an die Pins 7 und 8. (VCC und GND).
kann mir jemand vll sagen was ich falsch mache oder hat wer ne Idee an was es liegen könnte oder was ich noch versuchen könnte?
Mc4free:
Was ist genau mit Fuses gemeint? Ich verstehe leider nicht was das ist
Die Fuses sind ein Konfigurations-Speicherbereich auf dem Controller.
In dieser Konfiguration wird beispielsweise eingestellt, ob der Controller mit 1 MHz internem Takt, 8 MHz internem Takt oder beispielsweise mit 16 MHz Takt von einem externen Schwingquarz laufen soll. Wenn Du Deinen Controller so konfigurierst, dass er mit einem 16 MHz externen Schwingquarz läuft (so wie es auf den Arduino-Boards der Fall ist), dann muß Deine Schaltung zwingend einen Schwingquarz enthalten und ohne läuft er nicht.
Ohne Schwingquarz kann ein Atmega328 zwar auch laufen, mit "internem" Takt von 1 oder 8 MHz, aber dann müssen eben die "Fuses" anders konfiguriert werden.
Mc4free:
Was ist genau mit Fuses gemeint? Ich verstehe leider nicht was das ist
Die Fuses sind ein Konfigurations-Speicherbereich auf dem Controller.
In dieser Konfiguration wird beispielsweise eingestellt, ob der Controller mit 1 MHz internem Takt, 8 MHz internem Takt oder beispielsweise mit 16 MHz Takt von einem externen Schwingquarz laufen soll. Wenn Du Deinen Controller so konfigurierst, dass er mit einem 16 MHz externen Schwingquarz läuft (so wie es auf den Arduino-Boards der Fall ist), dann muß Deine Schaltung zwingend einen Schwingquarz enthalten und ohne läuft er nicht.
Ohne Schwingquarz kann ein Atmega328 zwar auch laufen, mit "internem" Takt von 1 oder 8 MHz, aber dann müssen eben die "Fuses" anders konfiguriert werden.
Ah okay, dann is das anscheinend der fehler :o
Und wie mach ich das das die Fuses anders konfiguriert werden? also ohne Schwingquarz ?
Und wie mach ich das das die Fuses anders konfiguriert werden? also ohne Schwingquarz ?
Du brauchst einen ISP-Programmer.
Das kann ein billiger USBasp von Ebay, ein Uno als ISP Programmer, oder irgendein anderer sein.
Hauptsache Avrdude kann damit umgehen.
Damit kannst du dann sowohl die Fuses setzen, als auch das Programm aufspielen.
Wenn du die Arduino IDE nutzen möchtest, wäre es vermutlich zielführend in der boards.txt ein eigenes Board anzulegen.
Und wie mach ich das das die Fuses anders konfiguriert werden? also ohne Schwingquarz ?
Du brauchst einen ISP-Programmer.
Das kann ein billiger USBasp von Ebay, ein Uno als ISP Programmer, oder irgendein anderer sein.
Hauptsache Avrdude kann damit umgehen.
Damit kannst du dann sowohl die Fuses setzen, als auch das Programm aufspielen.
Wenn du die Arduino IDE nutzen möchtest, wäre es vermutlich zielführend in der boards.txt ein eigenes Board anzulegen.
Oje, mit nem Arduino Duemilanove geht es also nicht?
Hi,
doch, das Problem was du im Moment allerdings hast ist, dass du scheinbar die Fuses so eingestellt hast, dass
ein externer Takt von 16MHz erwartet wird. Ohne diesen läuft die Cpu im inneren nicht und du kannst auch nicht mehr so einfach Uploaden oder andere Fuses setzen. Weder mit deinem Duemilanove noch mit anderen ISP Programmierern.
Was du allerdings machen kannst ist entweder einen 16MHz Schwingquarz mit 22pF Kerkos dran oder dir ein neuen 328er besorgen.
Skorpi hatte auch mal einen Link zu einem speziellen Arduino ISP Sketch gepostet, welcher einen bestimmten Takt an einem Pin vorgibt . Mit dem kannst du den 328er auch versuchen zu retten indem du ihn mit dem vorgegebenen Takt laufen lässt.
Das funktioniert scheinbar mit ATTinys :D, habe aber selber keine Erfahrung damit.
Addi2438:
Hi,
doch, das Problem was du im Moment allerdings hast ist, dass du scheinbar die Fuses so eingestellt hast, dass
ein externer Takt von 16MHz erwartet wird. Ohne diesen läuft die Cpu im inneren nicht und du kannst auch nicht mehr so einfach Uploaden oder andere Fuses setzen. Weder mit deinem Duemilanove noch mit anderen ISP Programmierern.
Was du allerdings machen kannst ist entweder einen 16MHz Schwingquarz mit 22pF Kerkos dran oder dir ein neuen 328er besorgen.
Skorpi hatte auch mal einen Link zu einem speziellen Arduino ISP Sketch gepostet, welcher einen bestimmten Takt an einem Pin vorgibt . Mit dem kannst du den 328er auch versuchen zu retten indem du ihn mit dem vorgegebenen Takt laufen lässt.
Das funktioniert scheinbar mit ATTinys :D, habe aber selber keine Erfahrung damit.
Finde den Link leider nicht wieder.
Ou shit
Wann genau wurde das eingestellt? Als der bootloader installiert wurde?
Also Uploaden funktioniert noch ganz gut, wenn ich den Atmega auf meinem Arduno platziere?
Oje, dann werde ich mal versuchen den Sketch irgendwo aufzutreiben
Hast du zufällig auch einen Arduino Uno R3 (scheint so)?
Wenn ja, dann musst du den Chip nur wieder zurück in den Sockel stecken und schon kannst du die Fuses ändern.
Dann kannst du den Chip wieder raus nehmen und alles ist gut.
Auf dem Board sitzt bereits ein richtig angeschlossener Quarz, das heißt du kannst den benutzen.
Edit:
Ich erstelle dir mal eine Boards.txt für den internen 8MHz Takt.
Wann genau wurde das eingestellt? Als der bootloader installiert wurde?
Ja.
Wie hast du das eigentlich getan?
Es müsste rückgängig zu machen sein.
Ich programmiere meine "standalone" AVRs meist auch im Uno.
Auch das setzen der Fuses mache ich da.
Allerdings mit einem USBasp, aber das geht mit arduino-isp genauso gut.
Wann genau wurde das eingestellt? Als der bootloader installiert wurde?
Ja.
Wie hast du das eigentlich getan?
Es müsste rückgängig zu machen sein.
Ich programmiere meine "standalone" AVRs meist auch im Uno.
Auch das setzen der Fuses mache ich da.
Allerdings mit einem USBasp, aber das geht mit arduino-isp genauso gut.
Weiß ich leider nicht, der war schon vorinstalliert
@skorpi: Ich hab vorhin extra mal in die IDE geschaut. Hätte mich gewundert, wenn der Atmega328P als 8MHz aufgeführt wäre. Habe aber keine orginale board.txt. Da sind nur Uno, Mega, Due, Pro Mini drin.
@Addi: Das der Atmega328P 3V3 8MHz dort aufgeführt ist, hilft nicht weiter. Denn dann ist immer noch ein externer Taktgeber (8MHz) erforderlich.
Selber flashe ich auch lieber mit dem Atmel Studio. Jedoch haben meine Attiny/Megas selten einen Quarz/Resonator verbaut. Nutzte Internal PLL mit 8MHz. Bei den Attiny841 ist ein Quarz/Resonator bei Baudraten < 30k nicht mal erforderlich sein für UART.
Weil damit habe ich auch schonmal auf den atmega geuploaded.
Heißt das wenn ich die breadboard.zip aus dem tutorial installiert habe und beim uploaden dieses neue board auswähle sollte es funktionieren? Und ich müsste den Atmega halt mit der im tutorial beschriebenen schaltung beschreiben?
LilyPad läuft übrigens mit internem Oszillator mit 8MHz und mit verschiedenen Controllern: AtMega168, 328, 32u4
Das wäre auch ein Möglichkeit - einfach einen dieser Controller auswählen (zum Fuses brennen).
Dieses Tutorial kennst du?
edit: ja - sieht so aus - da warst du schneller
unten auf der Seite gibt es die Variante mit internem Oszillator.
Und dieses hier hat mir bei meinen ersten "standalone-Arduinos" sehr geholfen:
Okay, hab ja jetzt schon einige Lösungsansätze, ich schaue mir die mal genauer an
Aber zurzeit versuche ich es mit der Lösung von der Tutorialseite die mir die einfachste schein, jedoch hab ich ein Problem:
Wenn ich den Atmega über diese Schaltung beschreiben will bekomme ich folgende Fehlermeldung:
avrdude: stk500_getsync(): not in sync: resp=0x00
Wisst ihr was das genau heißt und wie ich den Fehler umgehe?
Edit: Oder kommt das davon, das ich, wie ich glaube das schon erwähnt wurde, einen Schwingquarz brauche, dann den bootloader neu installieren muss (mit dem quarz nur mit dem anderen board ausgewählt, mit dem internen) und das es erst dann ohne geht?