Forum: Mikrocontroller und Digitale Elektronik Newbie und Dummie ;-)


von Gerhard D. (imc)


Lesenswert?

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

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

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.

von Markus L. (lucky79)


Lesenswert?

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 :-)

von Norgan (Gast)


Lesenswert?

> 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

von Gerhard D. (imc)


Lesenswert?

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

von Michael U. (amiga)


Lesenswert?

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

von Gerhard D. (imc)


Lesenswert?

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

von Michael U. (amiga)


Lesenswert?

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

von Karl H. (kbuchegg)


Lesenswert?

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
Noch kein Account? Hier anmelden.