Ich hab zum Anfang mal einen Arduino zum Programmieren eines ATMega8 verwendet. Mir ist dabei folgendes nicht klar: Kann man auf diesen nun ohne externen 16MHz Crystal den bootloader raufladen? -Meine Antwort bisher ist ja. Aber es geht halt langsamer? Immerhin hat der AT einen internen mit 8MHz. Ich bin mir aber nicht sicher, ob zum bootloader laden zwingend ein Crystal erforderlich ist und man diesen aber zum sketch hochladen nicht mehr verwenden muss, oder ob selbst zum bootloader laden er nicht zwingend gebraucht wird? Falls dieser nicht zwingend erforderlich ist, hat avrdude noch nie erfolgreich den bootloader schreiben können. Natürlich nur unter der Voraussetzung, dass das funktionieren müsste, was ist den hier Fehlersuche vorgehensweise? 5V liegen am Chip an ... aber das ist auch schon alles was ich messen kann? Verkabelung neu machen und überprüfen ... 16Mhz Crystal kaufen ... wenn das alles nichts hilft, neuen chip kaufen?
Fuses und Quarz! Das muss zusammen passen. Ansonsten verstehe ich deine Gedanken nicht.
Frage, für was soll so ein Bootloader bei einem nackten ATmega8 sinnvoll sein? Und stelle dir die Frage, wie man ein atmega XYZ programmiert. Das steht nämlich im Datenblatt!
Karl M. schrieb: > Frage, für was soll so ein Bootloader bei einem nackten ATmega8 sinnvoll > sein? Wenn man in der Arduino IDE "Bootloader brennen" drückt, werden die Fuses gesetzt und ein Bootloader gebrannt. So ist es original. Bei manchen Boarddefinitionen von Fremderstellern, wird ein leerer Bootloader gebrannt, also nur die Fuses gesetzt. Der Begriff "Bootloader brennen" kann also zu Verwirrungen führen.
>Kann man auf diesen nun ohne externen 16MHz Crystal den bootloader raufladen? Irgendeinen Bootlader kann man sicher mittels AVRDUDE drauf flashen. Ich habe das mal mit Ponyprog gemacht, ging beim Mega8 auch. https://www.mikrocontroller.net/articles/AVR_Bootloader_in_C_-_eine_einfache_Anleitung Was Deine Arduino-Welt da erwartet, ist mir unbekannt. Wie schon genannt, die Fuses müssen zur favorisierten Taktquelle passen, damit überhaupt die Kiste läuft. Im einfachsten Fall kann man dies mit einer Blink-LED und einem Minimal-Programm prüfen. Im schwierigeren Fall kann es helfen, die Taktfrequenz des Programmieradapters zu verringern. Also erst die Fuses richtig einstellen, dann das Programm drauf. Aber Du willst vermutlich erst den Bootlader drauf machen, um dann erst das Blink-LED-Programm mittels Bootlader drauf zu bekommen. https://www.mikrocontroller.net/articles/AVR-Tutorial:_Equipment Nützlich ist es immer, von den AVRs mehrere Exemplare griffbereit zu haben. mfG
:
Bearbeitet durch User
Roman K. schrieb: > Falls dieser nicht zwingend erforderlich ist, hat avrdude noch nie > erfolgreich den bootloader schreiben können. Mit welchem Befehl hast du denn versucht, den Arduino-Bootloader in den ATMega8 zu brennen ? Mit dem in die Arduino IDE eingebauten "Bootloader brennen" geht es nicht, weil die zuerst die Fuses auf Quartz stellt und dann kein Quartz dran ist. Man kann angeblich die Bootloader-brenn-EInstellungen in der preferences.txt ändern, hab ich nie probiert. Wenn du es mit avrdude direkt probiert und die fuses richtig auf 8MHz RC Oszillator brennst, bekommst du wenigstens das bootloader-Programm in den Chip. Neue ATmega8 sind immer auf 8MHz RC gestellt. Aber der normale Bootloader geht auch nicht, weil er für 16MHz geschrieben ist und auf einem 8MHz mit RC Oszillator laufenden uC das Senden der daten dann nur mit der halben Baudrate erwartet. Selbst wenn du einen auf 8MHz ungeschriebene bBootloader verwendest, ist der RC Oszillator eigentlich für UART Übertragungen nicht genau genug, sagt man, geht oftmals doch, aber eben nicht immer.
Michael B. schrieb: > Man kann angeblich die Bootloader-brenn-EInstellungen in der > preferences.txt ändern, hab ich nie probiert. Dafür ist die betreffende boards.txt die richtige. Da müsste man die verwendete kennen, um Aussagen treffen zu können, was da passiert. Die für den ATMega8 kann keine originale sein. Denn einen solchen Arduino gibt es nicht. Die, welche ich kenne, für den ATMega8, machen nur Fuseumstellungen, intern 1 oder 8MHZ oder externen Quarz. Nix Bootloader brennen, wenn Bootloader brennen gedrückt wird. Michael B. schrieb: > Mit dem in die Arduino IDE eingebauten "Bootloader brennen" geht es > nicht, weil die zuerst die Fuses auf Quartz stellt und dann kein Quartz > dran ist. Das ist wahr, wenn der externe Quarz gewählt wird. Intern 8MHz geht auch so.
Karl M. schrieb: > Frage, für was soll so ein Bootloader bei einem nackten ATmega8 sinnvoll Einem "nackten" ATmega8 einen Bootloader zu geben hat genau denselben Sinn, wie die Verwendung eines Bootloaders wenn der ATmega mit einem 16 MHz Quarz arbeitet. Eine Bautrate > 38400 habe ich mit einem ATmega mit internem RC Oszillator 8 MHz nie erreicht. Der originale Bootloader bspw. eines Arduino UNO (und einige andere auch) arbeitet jedoch mit 115200 Baud. Bei halbierter Taktfrequenz wäre die Baudrate dann 57600 !! Hier wäre die Baudrate schon zu hoch um einen ATmega8 mit interner 8 MHz Quelle zu betreiben. Es ist also ein Bootloader notwendig, der eine veringerte Baudrate besitzt. Außerdem: wenn bspw. ein Arduino UNO als Board gewählt ist und man "Bootloader flashen" aktiviert, würde versucht werden, der Bootloader für einen ATmega328 auf einen ATmega8 zu brennen (was dann glücklicherweise fehlschlägt). Arduino Fanboy D. schrieb: > Wenn man in der Arduino IDE "Bootloader brennen" drückt, werden die > Fuses gesetzt und ein Bootloader gebrannt. Absolut richtig! Hier gibt es dann den typischen Fallstrick: Flasht man so einen fabrikneuen Chip, werden die Fuses auf externen Quarz mit Frequenz > 8 MHz gesetzt. Dieses Flashen funktioniert und zwar genau ein einziges mal. Danach erwartet ein so geflashter Chip einen externen Quarz den er nicht hat und ein weiteres Flashen in Ermangelung des Quarzes schlägt fehl. ------------------------------------------ Will man also unbedingt einen Bootloader in einen ATmega8 ohne Quarz flashen sollte man den Bootloader verwenden, den Arduino für das allererste Arduino Board verwendet hatte, dieses Board heißt: "Arduino NG or older" und verwendete entweder einen ATmega8 oder einen ATmega168. Einen Bootloader findet man im Arduino Verzeichnis: hardware\avr\bootloaders\atmega8 Hier gibts dann eine Hexdatei : atmegaBOOT.hex Prinzipiell funktioniert dieser Bootloader, es gibt jedoch einen Schönheitsfehler dabei: Dieser Bootloader wurde compiliert für einen Controller MIT 16 MHz Quarz für eine Baudrate mit 19200 Baud. Entweder man ändert nun das Makefile und gibt für F_CPU 8000000 an und compiliert neu oder man flasht diese Hexdatei wie sie ist in den ATmega8. Da dieser jetzt komplett mit halber Geschwindigkeit läuft beträgt die Baudrate jetzt "lausige" 9600 Baud. Das Flashen des Loaders darf hierbei NICHT über den Menüpunkt "Bootloader flashen" erfolgen, sondern man sollte in den Arduino das Beispielprogramm ArduinoISP in seinen UNO laden und auf Kommandozeilenebene obige Hexdatei flashen. Anschließend sind für den ATmega8 die Fuses für interne 8 Mhz und reservierten Speicherbereich Bootloader zu setzen. Will man diesen ATmega8 partout nun über Arduino programmieren ist nun wichtig zu wissen, dass alle Dinge - insbesondere solche Dinge wie delay und millis - nun mit halber Geschwindigkeit laufen. Um einen solchigen ATmega8 innerhalb Arduino programmieren zu können muss die Datei boards.txt im Verzeichnis: hardware\arduino\avr erweitetert werden. Innerhalb dieser Datei sucht man sich die Einträge ab: atmegang.name=Arduino NG or older schaut sich das genauer an, kopiert die Abschnitte für dieses Board ans Ende der Datei und ändert alle Textanfänge beginnend mit atmegang bspw. nach atmega8_crystalless (oder ähnlich) um anstelle von atmegang.upload.speed=19200 gibt man nun atmega8_crystalless.upload.speed=9600 und für atmegang.build.f_cpu=16000000L dann atmega8_crystalless.build.f_cpu=8000000L ein. Sämtliche Einträge für den ATmega168 können bei der Erweiterung dann gelöscht werden. --------------------------------------- Wie gesagt, wenn man so etwas machen mag...
Ralph S. schrieb: > Das Flashen des Loaders darf hierbei NICHT über den Menüpunkt > "Bootloader flashen" erfolgen, sondern man sollte in den Arduino das > Beispielprogramm ArduinoISP in seinen UNO laden und auf > Kommandozeilenebene obige Hexdatei flashen. Verstehe ich nicht. Natürlich geht das. Ralph S. schrieb: > Um einen solchigen ATmega8 innerhalb Arduino programmieren zu können > muss die Datei boards.txt im Verzeichnis: > > hardware\arduino\avr > > erweitetert werden. Geht, ist aber Suboptimal. Variante 1: (die bessere) Man baut sich eine, oder sucht sich eine Boarddefinition, welche für den ATMega8 vorbereitet ist. Gibbet fertig. Variante 2: Statt die boards.txt zu erweitern, legt man eine boards.local.txt neben die originale.
Arduino Fanboy D. schrieb: > Variante 1: (die bessere) > Man baut sich eine, oder sucht sich eine Boarddefinition, welche für den > ATMega8 vorbereitet ist. Gibbet fertig. Stimmt, wollte ich nur einem scheinbaren Anfänger nicht zumuten.. Arduino Fanboy D. schrieb: > Variante 2: > Statt die boards.txt zu erweitern, legt man eine boards.local.txt neben > die originale. stimmt auch, für meinen persönlichen Geschmack habe ich allerdings lieber alle in einer Datei. ---------------------------------- Okay, mit Arduino mache ich dann zugegebenerweise nicht so wirklich viel, ich werkel lieber mit einem puren C (und nicht mit C++) auf 8-Bit Controllern und einem Makefile. Arduino nutze ich hauptsächlich in Verbindung mit ES8266
Ralph S. schrieb: > stimmt auch, für meinen persönlichen Geschmack habe ich allerdings > lieber alle in einer Datei. Ja, da kann es durchaus Vorlieben geben. Ich verwende lieber die *.local.txt Variante, als immer die originalen Dateien editieren zu müssen. Sowas ist ja schließlich auch der Zweck der Erfindung. Erleichtert die Datensicherung bzw die Übertragung zwischen Systemen.
Arduino Fanboy D. schrieb: > Ralph S. schrieb: >> stimmt auch, für meinen persönlichen Geschmack habe ich allerdings >> lieber alle in einer Datei. > Ja, da kann es durchaus Vorlieben geben. > > Ich verwende lieber die *.local.txt Variante, als immer die originalen > Dateien editieren zu müssen. Sowas ist ja schließlich auch der Zweck der > Erfindung. > Erleichtert die Datensicherung bzw die Übertragung zwischen Systemen. Ich glaube wir beide kommen uns nicht in die Haare : - )
Ralph S. schrieb: > Bei halbierter Taktfrequenz wäre die Baudrate dann 57600 !! Hier wäre > die Baudrate schon zu hoch um einen ATmega8 mit interner 8 MHz Quelle zu > betreiben. Ich verstehe die Logik hinter dieser Aussage nicht. Wenn er mit 16 MHz 115200 Baud schafft, dass schafft er mit 8Mhz die 57600 Baud. Schließlich läuft alles mit halbierter Taktfrequenz. Allerdings ist der interne R/C Oszillator nicht präzise genug, um eine zuverlässige Funktion der seriellen Schnittstelle zu ermöglichen. Und auch mit Quarz ist das keine gute Kombination, denn die Baudrate hat bei idealem Quarz bereits 2,1% Abweichung von den 57600 Baud. Man soll eigentlich unter 2% bleiben, um ein bisschen Abstand von der kritischen Schwelle zu halten. Die Arduino Klone sind oft mit billigeren Keramik-Resonatoren bestückt, deren Abweichung das ganze noch verschlechtert. Eigentlich sollte man bei 16 Mhz maximal 57600 Baud nutzen, und bei 8 Mhz nur 38400 Baud. Dann klappt das auch mit Keramik-Resonator zuverlässig. Warum die Arduino Macher die Taktfrequenz mit dem neuen Bootloader verdoppelt haben, ist mir ein Rätsel. Ich hätte es nicht getan.
Roman K. schrieb: > was ist den hier Fehlersuche vorgehensweise? Deine Beschreibung ist nicht ganz klar. Ich habe dich so verstanden, dass du auf einen "nackten" Atmega8 den Arduino Bootloader installieren willst. Dazu möchtest du die Arduino IDE verwenden, sowie ein Arduino Board als ISP Programmieradapter. Auf diesem Arduino Board hast du also den ISP Sketch installiert, richtig? Zum Programmieren eines jungfräulichen AVR Mikrocontrollers ist nicht viel notwendig: - Abblock-Kondensator direkt an den VCC/GND Pins (typisch 100nF) - Verbindungen zum Programmieradapter: VCC, GND, RESET, MISO, MOSI, SCK Da dein Programmieradapter (Arduino Board) die 5V Versorgung liefert, brauchst du kein separates Netzteil für den nackten Mikrocontroller. Der jungfräuliche Mikrocontroller taktet sich selber mitteln internem R/C Oszillator. Aber die Arduino IDE ändert das in den Fuses (siehe https://www.engbedded.com/fusecalc/), so dass der Mikrocontroller danach einen 16MHz Quarz (und die beiden Kondensatoren dazu) benötigt. Wenn du danach den Bootloader erneut installieren willst, muss der Quarz schon dran sein, denn ohne Takt funktioniert die ISP Schnittstelle nicht. Steckbretter eignen sich eher schlecht für den Quarz, weil sie eine hohe Kapazität zwischen den Kontakten haben. Manchmal muss man die Kondensatoren am Quarz kleiner wählen, manchmal ganz weg lassen. Mache das besser auf einer gelöteten Platine, dann hast du weniger Probleme gleichzeitig. Bei weiteren Fragen empfehle ich, Schaltplan, Fotos vom Aufbau, die Kommandozeile von avrdude und dessen Ausgaben anzuzeigen. In den Einstellungen der Arduino IDE kannst du detaillierte Ausgaben aktivieren.
Stefan ⛄ F. schrieb: > Die Arduino Klone sind oft mit billigeren Keramik-Resonatoren bestückt, > deren Abweichung das ganze noch verschlechtert. Naja, wenn das mal keine Fake News sind..... Oder zumindest eine Realitätsverzerrung. Die Nachbauten sind häufiger mit Quarzen bestückt, als die originalen. Einfach nur bei Ebay Bildchen schauen, wird dir das bestätigen. Stefan ⛄ F. schrieb: > Warum die Arduino Macher die Taktfrequenz mit dem neuen Bootloader > verdoppelt haben, ist mir ein Rätsel. Ich hätte es nicht getan. Warum nicht? Weil du nicht rechnen kannst? Denn den prozentualen Fehler kümmert die Verdopplung nicht! Oder weil du Dreck zum werfen benötigst? z.B. betrifft die Erhöhung/Verdoppelung nur den Nano, von dem hier überhaupt nicht die Rede war. Auch bestätigt der, seit dem ersten Tag so ausgelieferte UNO, dass es funktioniert. Drittens: Die üblichen Boarddefinitionen, um ATMega8 an/mit der Arduino IDE betreiben zu können, sehen keinen Bootloader vor. Zumindest die Möglichkeit, diesen ohne Bootloader zu betreiben. Da werden dann nur die Fuses gesetzt. Über einen nicht existierenden Bootloader zu sprechen, und dessen Konfiguration zu kritisieren, ist gelinde gesagt eine Nebelkerze. Wenn nicht gar eine bewusste Irreführung. Naja... Dass deine Prozentrechnung nicht funktioniert, das stufe ich mal als Irrtum ein. Ein Irrtum, welcher dir ab heute nicht mehr unterlaufen darf. Denn ab jetzt werde ich dich in dem Punkt, bei Wiederholung, der bewussten Lüge bezichtigen. Da ich annehme, dass du eigentlich schlau genug bist um Prozentrechnungen durchzuführen, wird es wohl mit deiner immer wieder aufblitzenden Arduino Ablehnung zu tun haben, welcher dir den Geist vernebelt.
Stefan ⛄ F. schrieb: > Warum die Arduino Macher die Taktfrequenz mit dem neuen Bootloader > verdoppelt haben, ist mir ein Rätsel. Ich hätte es nicht getan. +1 schon weil es Probleme beim wUSB und USBwebserver Sharkoon 100/400 gibt, mit 115k2 kein upload möglich, mit 57k6 war vorher zumindest beim Sharkoon nie ein Problem. Ich hatte für meine nano alle Optiboot zurück gesetzt auf 57k6.
Arduino Fanboy D. schrieb: > Warum nicht? > Denn den prozentualen Fehler kümmert die Verdopplung nicht! > Oder weil du Dreck zum werfen benötigst? Weil die Abweichung der Baudrate 2,1% beträgt. Bei Keramik Resonatoren sind Abweichungen bis 0,5% üblich, die kommen nach dazu. Damit bist du über der kritischen Grenze von 2,5% ab der Fehlfunktionen zu erwarten sind (je nach dem, wie fehlertolerant der Empfänger ist).
Arduino Fanboy D. schrieb: > Über einen nicht existierenden Bootloader zu sprechen, und dessen > Konfiguration zu kritisieren, ist gelinde gesagt eine Nebelkerze. Er möchte aber einen Bootloader schreiben und hat genau dazu um Hilfe gebeten. Vielleicht kannst du ihm helfen, die Arduino IDE so umzukonfgurieren, dass sie den Bootloader auf seinen ATmega8 schreibt.
Stefan ⛄ F. schrieb: > Er möchte aber einen Bootloader schreiben und hat genau dazu um Hilfe > gebeten. Vielleicht kannst du ihm helfen, die Arduino IDE so > umzukonfgurieren, dass sie den Bootloader auf seinen ATmega8 schreibt. Die Frage des TO habe ich nicht verstanden! Gerne nochmal: Arduino Fanboy D. schrieb: > Ansonsten verstehe ich deine Gedanken nicht. Wie soll ich was beantworten, was ich nicht verstehe. Du kannst das. Glückwunsch. Ansonsten macht ein Bootloader bei internem Takt wenig Sinn, außer man unternimmt weitergehende Schritte zur Takt Kalibrierung. Die einfachste Lösung ist halt: Quarz dran, und eine der frei verfügbaren Bordefinitionen, für den ATMega8, zu verwenden. Dann klappts auch mit dem Bootloader. Aber das sagte ich doch schon, oder? Stefan ⛄ F. schrieb: > Weil die Abweichung der Baudrate 2,1% beträgt. Bei einer Verdoppelung oder Halbierung der Baudrate ändert sich die prozentuale Fehlerrate nicht. Deine Begründung ist irrational. Jetzt glaube ich wirklich schon fast, dass dich Prozentrechnung überfordert. Zumindest hast du das Hirn nicht eingeschaltet.
Arduino Fanboy D. schrieb: > Ansonsten macht ein Bootloader bei internem Takt wenig Sinn, außer man > unternimmt weitergehende Schritte zur Takt Kalibrierung. Allerdings. Der interne R/C Oszillator ist dazu kaum geeignet.
Arduino Fanboy D. schrieb: >> Weil die Abweichung der Baudrate 2,1% beträgt. > Bei einer Verdoppelung oder Halbierung der Baudrate ändert sich die > prozentuale Fehlerrate nicht. > Deine Begründung ist irrational. Beim 8MHz Quarz und 57600 Baud hast du mindestens 2,1% Abweichung. Beim 16MHz Quarz und 115200 Baud hast du mindestens 2,1% Abweichung. Das ist mir beides zu nahe an den kritischen 2,5%. Der alte Bootloader lief hingegen mit 16MHz und 57600 Baud. Das ergibt laut Datenblatt 0,8% Abweichung. Das ist schön weit von der kritischen Schwelle entfernt. Schau Dir mal im Datenblatt an, wie der Baudraten-Generator funktioniert. Dann erkennst du, dass die Halbierung der Baudrate durchaus die Abweichung vom Soll reduzieren kann. https://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-2486-8-bit-AVR-microcontroller-ATmega8_L_datasheet.pdf Table 36
Beitrag #6456718 wurde von einem Moderator gelöscht.
Roman K. schrieb: > Kann man auf diesen nun ohne externen 16MHz Crystal den bootloader > raufladen? Natürlich. > Aber es geht halt langsamer? Klar, nur ca. halb so schnell. Aber, Wayne interessierts... Bootloader sind typischerweise recht klein. Sollen ja auch Platz für die Anwendung lassen... > Immerhin hat > der AT einen internen mit 8MHz. Das ja. Im Auslieferungszustand aber trotzem nur ca. 1MHz Systemtakt. Das ist die entscheidende Kenngröße, nicht der Takt des Oszillators. > Falls dieser nicht zwingend erforderlich ist, hat avrdude noch nie > erfolgreich den bootloader schreiben können. Das wird daran liegen, dass die standardmäßige Bitrate halt zu hoch für 1MHz Systemtakt ist. Einfach reduzieren und alles ist schick. Dauert dann allerdings nochmal Faktor 8 länger. Die sinnvolle Alternative wäre: zuerst mal mit kleiner Bitrate einfach nur die Fuses umprogrammieren, so dass das Teil mit dem 16Mhz-Quarztakt läuft. Das geht sehr schnell, weil dafür nur wenige Bytes über die ISP-Schnittstelle bewegt werden müssen. Danach dann die Bitrate auf Maximum setzen und der Rest geht so schnell wie irgend möglich.
Stefan ⛄ F. schrieb: > Ich verstehe die Logik hinter dieser Aussage nicht. > > Wenn er mit 16 MHz 115200 Baud schafft, dass schafft er mit 8Mhz die > 57600 Baud. Schließlich läuft alles mit halbierter Taktfrequenz. Du widersprichst dir im folgenden Verlauf des Threads gleich selbst und erklärst, warum die 57600 Bd mit internem 8 MHz RC nicht funktionieren. Die Logik hinter der Aussage ist die: nicht alles was theoretisch klappen müßte, klappt auch (in der Elektronik lohnt es sich das im Hinterkopf zu behalten). Stefan ⛄ F. schrieb: > Die Arduino Klone sind oft mit billigeren Keramik-Resonatoren bestückt, > deren Abweichung das ganze noch verschlechtert. Oha, ich habe nur welche mit Quarzen... ob die jetzt 30, 40 oder 50 ppm Abweichung haben spielt hier keine Rolle. Stefan ⛄ F. schrieb: > Eigentlich sollte man bei 16 Mhz maximal 57600 Baud nutzen, und bei 8 Aha ! Ich hatte mit dem Opti-Bootloader und 115200 Bd noch nie auch nur ein Problem. Das lief auf Uno und Nano - Clone, das läuft auch auf einem Steckbrett und einem µC ohne Board auf dem der 16 MHz Quarz im Steckbrett gesteckt ist (und das ist zugegebenermasen etwas kritischer) auch fehlerfrei. Weshalb also nur 57600 wenn es auch schneller geht? Arduino Fanboy D. schrieb: > Ansonsten macht ein Bootloader bei internem Takt wenig Sinn, außer man > unternimmt weitergehende Schritte zur Takt Kalibrierung. Stimmt, aber ich habe es dennoch einmal gemacht gehabt bei einem Gerät, bei dem ich im Zweifel eine Firmware aufspielen möchte ohne das Gerät zu öffnen und bei dem ich damals leider die Portpins des Quarzes benötigt hatte. Taktkalibrierung hatte ich keine gemacht gehabt und die Baudrate war 9600. Smile im Normalfall macht es aber wirklich keinen Sinn. Arduino Fanboy D. schrieb: > Die einfachste Lösung ist halt: > Quarz dran, und eine der frei verfügbaren Bordefinitionen, für den > ATMega8, zu verwenden. Dann klappts auch mit dem Bootloader. > Aber das sagte ich doch schon, oder? Du sagtest es schon, smile und es ist immer noch richtig, es ist immer noch am einfachsten und hilft einem (höchstwahrscheinlich nicht mehr mitlesenden) TO am meisten. Beim Experimentieren macht es keinen Sinn einen AVR ohne Quarz zu betreiben !!
Arduino Fanboy D. schrieb: > Stefan ⛄ F. schrieb: >> Die Arduino Klone sind oft mit billigeren Keramik-Resonatoren bestückt, >> deren Abweichung das ganze noch verschlechtert. > Naja, wenn das mal keine Fake News sind..... > Oder zumindest eine Realitätsverzerrung. so krass habe ich es dann aber doch nicht sagen wollen ! : - )
Stefan ⛄ F. schrieb: > Schau Dir mal im Datenblatt an, wie der Baudraten-Generator > funktioniert. Dann erkennst du, dass die Halbierung der Baudrate > durchaus die Abweichung vom Soll reduzieren kann. Uff, aber nur bei gleich bleibendem Takt, weil der Teiler dann z.B. statt 6 nicht 12 sondern 13 sein kann. Du hast eklatante - nicht Wissenslücken sondern Intelligenzhohlräume.
Hi, taugt das was? http://www.gjlay.de/helferlein/avr-uart-rechner.html finde gerade die andere Tabelle nicht. Also Table 36 wo? Stefan ⛄ F. schrieb: > durchaus die Abweichung vom Soll reduzieren kann. > > https://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-2486-8-bit-AVR-microcontroller-ATmega8_L_datasheet.pdf > Table 36 Da gibts ein href zu Seite 96 aber auch irgendwie.... ciao gustav
:
Bearbeitet durch User
Ralph S. schrieb: > Du widersprichst dir im folgenden Verlauf des Threads gleich selbst und > erklärst, warum die 57600 Bd mit internem 8 MHz RC nicht funktionieren. Ich habe erklärt, warum sie nicht zuverlässig funktionieren - wenn man einen Resonator anstatt Quarz verwendet. Mit Quarz geht es noch so gerade eben, das habe ich deutlich geschrieben. > Beim Experimentieren macht es keinen Sinn einen AVR > ohne Quarz zu betreiben !! Dass sehe ich auch so. Dennoch werden einige Boards (sogar originale, angeblich, siehe oben) mit Keramik-Resonator ausgeliefert und dort ist der neue Bootloader halt keine gute Wahl.
MaWin schrieb: >> Schau Dir mal im Datenblatt an, wie der Baudraten-Generator >> funktioniert. Dann erkennst du, dass die Halbierung der Baudrate >> durchaus die Abweichung vom Soll reduzieren kann. > Uff, aber nur bei gleich bleibendem Takt, weil der Teiler dann z.B. > statt 6 nicht 12 sondern 13 sein kann. Natürlich bei gleichem Takt, was denn sonst? Ich habe die konkreten Zahlen in den Beitrag geschrieben. Hast du das vor dem Antworten nicht gelesen? > Beim 16MHz Quarz und 115200 Baud hast du mindestens 2,1% Abweichung. > Der alte Bootloader lief hingegen mit 16MHz und 57600 Baud. Das ergibt > laut Datenblatt 0,8% Abweichung. Da gibt es keine Wissenslücke, wohl eher eine Kommunikationsstörung.
Stefan ⛄ F. schrieb: > Da gibt es keine Wissenslücke, wohl eher eine Kommunikationsstörung Denkstörung. Deinerseits. In diesem thread ging es darum, ob ein mit 8MHz internem RC getakteter ATmega8 die gleiche baudrate im Bootloader verwenden kann/sollte wie der Original-Arduino mit 16 MHz Quartz. Es wurde drauf hingewiesen, dass RC zu ungenau für zuverlässige UART Verbindung ist, sogar schon bei Keramikresonatoren die Toleranz gerissen werden kann, eben weil hardwaretechnisch sogar bei exakten 16MHz die baudratenabweichung bei 115kbps schon 2.1% beträgt Nun kommst du als Trottel und weist darauf hin, dass bei gleichem Quartztakt die niedrigere baudrate ggf. genauer eingehalten werden kann als die höhere (zumindest bei 1:2 Abstufungen). Geil, aber Thema verfehlt, 6, setzen.
Das muss man ein bisschen aufpassen.... z.B. seine genannten 0,8% sind -0,8%
Die Kommunikationsstörung führt zu einer Diskrepanz dessen, was gemeint war und was verstanden wurde. Ich glaube, technisch/fachlich sind wir uns aber einig. Wir müssen das jetzt nicht 6000 mal endlos durchkauen, wie in diesem Linux Thread. Lasst es gut sein. Aber die persönlichen Beleidigungen sind nicht in Ordnung.
Ralph S. schrieb: > Weshalb also nur 57600 wenn es auch schneller geht? weil es eben nicht SICHER schneller geht, z.B. nicht über wUSB und nicht über den USBwebserver Sharkoon LAN 100/400. Ich habe hier beides und kein angeschlossener nano328p wollte damit programmiert werden. Erst als ich den Optibootloader auf 57k6 herabsetzte komme ich wieder an die Teile! https://www.mikrocontroller.net/attachment/470648/nano.jpg
Joachim B. schrieb: > Ich habe hier beides und kein angeschlossener nano328p wollte damit > programmiert werden. Erst als ich den Optibootloader auf 57k6 > herabsetzte komme ich wieder an die Teile! Dir ist aber schon klar, dass die Baudrate nur zwischen Serialadapter und µC wirkt? Also dein angeschlossener USB Host nichts von den da auftretenden Differenzen mit bekommt? Dein beobachteter Effekt liegt also keinesfalls an der 2.1% zu -0,8% Differenz, sondern an ganz was anderem! Solltest du was anderes annehmen, dann unterliegst einem Trugschluss.
Danke, Problem hat sich gelöst. Funktioniert mit internem Quarz nun ... die PIN Belegung im Arduino as ISP Sketch war anderst, als bei meinem ISP vorgesehen. Musste ich manuell eintragen. Anscheinend habe ich eine Nachbau Version, die die vorhandene PIN Konfiguration nicht "verträgt".
:
Bearbeitet durch User
Roman K. schrieb: > Funktioniert mit internem Quarz Was meinst du damit? Ich glaube kaum, dass der Mikrocontroller einen Quarz enthält.
Stefan ⛄ F. schrieb: > Roman K. schrieb: >> Funktioniert mit internem Quarz > > Was meinst du damit? Ich glaube kaum, dass der Mikrocontroller einen > Quarz enthält. Ja "internal clock" halt :D Tritt nem Anfänger nicht gleich drauf :D
Arduino Fanboy D. schrieb: > Dein beobachteter Effekt liegt also keinesfalls an der 2.1% zu -0,8% > Differenz das habe ich nie behauptet, nur dieser Aussage wiedersprochen Ralph S. schrieb: > Weshalb also nur 57600 wenn es auch schneller geht? es geht eben nie immer schneller, mal klappts auch mit 115k nicht!
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.