Hallo, beschäftige mich gerade mit µC ATmega16, ATmega32 auf einem Pollin-Board. Programmieren ist eigentlich kein Problem, da ich seit Jahrzehnten programmiere und früher auch Z80 etc. und auf 'ner IBM370 mit Assembler gearbeitet habe. Sind halt neue Vokabeln und etwas zusätzliches Wissen. Das gibt es hier ja reichlich zu lesen und das wird schon. (Der elektronische Teil ist da schon eher meine ganz schwache Seite, aber das ist noch nicht ganz so wichtig) Aber: ich kriege einiges nicht so recht geregelt, bzw. ich verstehe es nicht wirklich und das stört mich...vielleicht vermag mir ja jemand es schlicht und einfach erklären, denn das was ich bisher gelesen habe, hilft mir eben nicht wirklich weiter... Was sind Flash, EEPROM und SRAM? Wozu sind die gut? Wo liegen die und was sind die wesentlichen Unterschiede programmiertechnisch gesehen? Ich hab's schon rauf und runter gelesene, aber ich kriege den Unterschied nicht in die Birne... Fuse-Bits...auch schon rauf und runter gelesen, aber die einzelnen Erläuterungen setzen dann doch immer wieder etliches voraus, was ich nicht kenne. Auch der Calculator hilft mir nicht weiter, weil ich nicht weiss, was ich da einstellen kann, soll etc. Hat da jemand mal etwas für Dummies? Z.B. auf meinem Pollin-Board sind 16MHz Quarze vorhanden und damit soll ja ein 16er oder 32er auch betrieben werden können - aber wie stelle ich das ein? Dann verwirren mich immer wieder noch die 0, 1, unprogrammed, programmed, dann bei PonyProg die Häkchen oder eben auch nicht...kann mir mal jemand auf einfache Weise auf die Sprünge helfen? Danke! Ich werde nämlich so kribbelig, wenn ich etwas nicht richtig verstehe, es aber benutzen will...kennt ihr vielleicht auch... Grüße
Das neuste PonyProg ist wesentlich idiotensicherer, was die Fuses angeht. Ich habe es jedenfalls damit geschafft, die richtige Einstellung zu finden. Einfach die bestehende Konfiguration einlesen, das macht die neue Version schon unaufgefordert. Dann nur das ändern was man wirklich will, also im allgemeinen nur die Quarzkonfiguration, das sind vier Fuses wenn ich recht weiß, also überschaubar. Es steht jetzt auch ausdrücklich im Fuses-Fenster dass in Häkchen eine Null bedeutet. Flash ist der Programmspeicher, der ist nicht so oft wieder löschbar wie ein EEPROM.
Gerhard Delfs wrote: > Was sind Flash, EEPROM und SRAM? Wozu sind die gut? Wo liegen die und > was sind die wesentlichen Unterschiede programmiertechnisch gesehen? Ich > hab's schon rauf und runter gelesene, aber ich kriege den Unterschied > nicht in die Birne... Flash = Programmspeicher (dort kommt das HEX-File vom Compiler/Assembler hin) EEPROM = eingebauter Festspeicher für alles was du dir dauerhaft merken willst SRAM = Arbeitsspeicher für dein Programm (Stack,Variablen,...) > Fuse-Bits...auch schon rauf und runter gelesen, aber die einzelnen > Erläuterungen setzen dann doch immer wieder etliches voraus, was ich > nicht kenne. Auch der Calculator hilft mir nicht weiter, weil ich nicht > weiss, was ich da einstellen kann, soll etc. Hat da jemand mal etwas für > Dummies? Fuse-Bits sind die Grundkonfiguration des Controllers. Taktquelle intern/extern und die MHz vom internen RC, BOD (Sicherheit bei unterspannung), WatchdogTimer,... (siehe Datenblatt) > Z.B. auf meinem Pollin-Board sind 16MHz Quarze vorhanden und damit soll > ja ein 16er oder 32er auch betrieben werden können - aber wie stelle ich > das ein? Fusebits -> siehe S26 ATmega16 Manual > Dann verwirren mich immer wieder noch die 0, 1, unprogrammed, > programmed, dann bei PonyProg die Häkchen oder eben auch nicht...kann > mir mal jemand auf einfache Weise auf die Sprünge helfen? Danke! Programmed (0) = Haken an bei PonyProg Unprogrammed (1) eben das Gegenteil :-)
> früher auch Z80 etc. > Was sind Flash, EEPROM und SRAM? Tja, ist halt nicht mehr alles so wie früher. Aber mal ehrlich, ist dein Google oder deine Wikipedia kaputt? http://de.wikipedia.org/wiki/Flash-Speicher http://de.wikipedia.org/wiki/EEPROM http://de.wikipedia.org/wiki/Static_Random_Access_Memory#Statisches_RAM_.28SRAM.29 > Wozu sind die gut? Beim AVR: Flash: Programm und unveränderliche Daten (Befehlsspeicher). SRAM: Veränderliche Date, flüchtig (Datenspeicher) EEPROM: Gelegentlich geänderte, dauerhafte Daten. Z.B. Konfigurationsdaten (Datenspeicher) > Wo liegen die Die liegen getrennt rum. > und was sind die wesentlichen Unterschiede programmiertechnisch gesehen? http://de.wikipedia.org/wiki/Harvard-Architektur
Hallo, das war ja prompt ;-) Und Danke für die Erläuterungen! Also mein Google etc. ist nicht kaputt und die Sachen hatte ich auch alle gelesen, aber als typischer Vertreter der Eleven der Von-Neumann-Maschinen, war mir das alles nicht wirklich klar...und ist es immer noch nicht so ganz...geht doch einfach davon aus, dass ich schon wer-weiss-wieviel gelesen habe und dennoch ein Brett vor dem Kopf habe ;-) >Flash = Programmspeicher (dort kommt das HEX-File vom Compiler/Assembler >hin) >EEPROM = eingebauter Festspeicher für alles was du dir dauerhaft merken >willst >SRAM = Arbeitsspeicher für dein Programm (Stack,Variablen,...) Ein Prog, das ich dauerhaft im einem µC halten will landet dann im Flash, EEPROM dann für z.B. Konstanten etc. Und das SRAM - na ja, für den ganzen Rest...also das, was für mich 'der Speicher' war... ;-) Also kein Programm im SRAM und EEPROM, nur Daten - war mir nicht ganz klar...nun aber schon etwas besser...muss mich halt deutlich umgewöhnen... ;-) >Fuse-Bits sind die Grundkonfiguration des Controllers. Taktquelle intern/extern und die MHz vom internen RC, BOD (Sicherheit bei unterspannung), WatchdogTimer,... (siehe Datenblatt)< Das hatte ich schon verstanden, aber wenn ich das Datenblatt lese, dann verstehe ich eben nur Bahnhof - das ist mein kleines Problem, was ist CKSEL0, SUT etc. Wenn ich das hier lese: >The device has the following clock source options, selectable by Flash >Fuse bits as shown below. The clock from the selected source is input to >the AVR clock generator, and routed to the appropriate modules. >Note: 1. For all fuses “1” means unprogrammed while “0” means programmed. >The various choices for each clocking option is given in the following >sections. When the CPU wakes up from Power-down or Power-save, the >selected clock source is used to time the startup, ensuring stable >Oscillator operation before instruction execution starts. When the CPU >starts from Reset, there is as an additional delay allowing the power to >reach a stable level before commencing normal operation. The Watchdog >Oscillator is used for timing this real-time part of the start-up time. >The number of WDT Oscillator cycles used for each time-out is shown in >Table 3. The frequency of the Watchdog Oscillator is voltage dependent as >shown in “ATmega16 Typical Characteristics” on page 299. >Default Clock Source >The device is shipped with CKSEL = “0001” and SUT = “10”. The default >clock source setting is therefore the 1 MHz Internal RC Oscillator with >longest startup time. This default setting ensures that all users can make >their desired clock source setting using an In-System or Parallel >Programmer. verstehe ich - fast - gar nichts (was nicht am Englisch liegt)...schon gar nicht, wozu das alles gut sein soll (muss ich vielleicht ja im ersten Schritt auch nicht)...und nach der Datentabelle, kann ich gar keine 16Mhz verwenden...wozu dann der Quarz auf dem Board...??? Das ist so ähnlich, wie: "Das habe ich dir doch schon zum xten Mal erklärt"...das hilft nicht wirklich weiter...Gibt es ausser dem Datenblatt nicht noch einfachere Erläuterungen...wie gesagt, was ich gefunden habe - und ich habe mir alle Sachen von Atmel heruntergeladen und gelesen ;-) helfen mir nicht. Ist halt manchmal so, da ist alles wie vernagelt, weil z.B. andere Vorstellungen oder so da sind...es ist eben noch nicht so ganz meine Welt... Es bleibt schwierig... ;-) Grüße
Hallo, das wurde schon mehrfach bemängelt, daß das nicht so eindeutig ist mit mehr als 8MHz. Sollte besser heißen "8MHz und höher", dann passt es. Bei 16MHz CKOPT setzen und CDIV/8 nicht setzen, jeweils, wenn beim konkreten AVR vorhanden. CKOPT erhöht die Schwingamplitude des Quarzoszillators, besser gegen Störungen und bei Quarzen schlechter Güte und eben ab 8MHz eigentlich Pflicht. CDIV/8 teilt intern den Takt durch 8, haben auch nicht alle AVR, nervt aber, wenn die übersieht und das Ding statt mit 16MHz nur mit 2MHz läuft... Mein Tip: wenn Du erste Schritte machst, laß die Fuses in Werkeinstellung und das Teil mit seinen internen 1MHz laufen und spiele erstmal mit rum. LED, Taster, Display, ISP, I2C geht auch alles mit 1MHz, nur der UART kann maulig sein, wenn die Baudrate nicht stimmt und eine sekbst programmierte Uhr wird nicht sonderlich richtig gehen. Gruß aus Berlin Michael
Hallo Michael, Danke für die Erläuterungen! Meinst du mit "setzen" das Häckchen bei PonyProg oder auf programmed (0) oder unprogrammed (1) stellen? Das sind so die Sachen, die ich lernen muss...der allgemeine Sprachgebrauch in diesem Zusammenhang eben... Grüße aus Hamburg Gerhard
Hallo, Haken bei Pony gesetzt ist "programmiert" und damit 0. CKOPT mit Haken -> CKOPT ist eingeschaltet. Aufpassen ist eigentlich nur bei den Tabellen in den Datenblättern angesagt, CKSEL auf 1111 heißt eben alle Haken raus, SUT 10 entsprechend. Ist übrigens die bei den meisten AVR zutreffende Einstellung für externen Quarz ab 8MHz aufwärts (zumindest die, die ich immer benutze ;)). Gruß aus Berlin Michael
Gerhard Delfs wrote: > Hallo Michael, > > Danke für die Erläuterungen! > > Meinst du mit "setzen" das Häckchen bei PonyProg oder auf programmed (0) > oder unprogrammed (1) stellen? Da gehst du wie folgt vor. Du lässt PonyProg erst mal bei einem fabrikneuen Prozessor auslesen. Im Datenblatt deines Prozessors ist immer markiert, welches die default Einstellung ist. Jetzt kannst du das mit dem was Pony ausgelesen hat vergleichen und kriegst somit raus, wie das jetzt mit den Häkchen ist. Gerade die Fuse-Bits sorgen da (auch bei mir) immer wieder für verwirrung. Manchmal steht im Datenblatt 0-1, manchmal steht da programmed-unprogrammed. Am einfachsten ist es immer die Defaulteinstellung mit dem tatsächlich Vorhandenem zu vergleichen. > Ein Prog, das ich dauerhaft im einem µC halten will landet dann im > Flash, EEPROM dann für z.B. Konstanten etc. Fast. Ins EEPROM legst du Dinge, die eine Stromabschaltung überleben sollen. Also: aktuelle Konfiguration, Ergebnisse die noch benötigt werden, etc.
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.