Meine Fragen beziehen sich auf die aktuelle Doku Rev.B - 03/2017. 1) Der Takt Prescaler soll in 12 Stufen einstellbar sein: 1,2,4,8,16,32,64,6,10,12,24,48 Angegeben sind zur Konfiguration von MCLKCTRLB/PDIV aber auf Seite 67 nur die Einstellungen von 2-48. Wie lässt sich der Prescaler auf 1 stellen? 2) Die Fuse-Konfiguration für PA0 in SYSCFG0/RSTPINCFG (Seite 30) sollte im Auslieferungszustand eigentlich auf UPDI stehen. Angegeben ist aber "RESET" ? 3) Für die Default-Fuse Einstellung zum Setup des Boot- und App Bereichs heisst es auf Seite 31: "When both FUSE.APPEND and FUSE.BOOTEND are 0x00, the entire Flash is BOOT section" Genaugenommen sollte doch dann für die ebenso geltende Voreinstellung "Interrupt vectors are placed at the start of the application section of the Flash" (siehe Seite 91) gelten: Es gibt keine Interrupt-Vektortabelle, weil es keine APP-Sektion gibt, hier wäre IVSEL erst auf 1 für "Interrupt vectors are placed at the start of the boot section of the Flash" umzuschalten !?
Mirja schrieb: > Für die Default-Fuse Einstellung zum Setup des Boot- und App Bereichs > heisst es auf Seite 31: "When both FUSE.APPEND and FUSE.BOOTEND are > 0x00, the entire Flash is BOOT section" > > Genaugenommen sollte doch dann für die ebenso geltende Voreinstellung > "Interrupt vectors are placed at the start of the application section of > the Flash" (siehe Seite 91) gelten: Es gibt keine > Interrupt-Vektortabelle, weil es keine APP-Sektion gibt, hier wäre IVSEL > erst auf 1 für "Interrupt vectors are placed at the start of the boot > section of the Flash" umzuschalten !? Unsinn. Du hast bloß nicht begriffen, was es mit Boot- und App-Sektion wirklich auf sich hat. Kurzfassung: die Bootsektion ist als besonders privilegierter Bereich gedacht, der sich durch eben diese zusätzlichen Privilegien von der App-Sektion unterscheidet. Was passiert also, wenn man dem ganzen Flash diese Privilegien zuerkennt? Dadurch verschwinden natürlich nicht die beiden Sektionen, sondern sie werden nur identisch. D.h.: Bootsektion und Appsektion sind gleich gross und liegen auf den gleichen Adressen, die Privilegien dieses Speicherbereiches entsprechen der Schnittmenge beider Sektionen (sind also identisch zu der Sektion mit den zusätzlichen Privilegien). Was die Interrupttabellen betrifft: die sind natürlich dann ebenfalls identisch, du kannst also zwischen den beiden umschalten, es ändert sich dadurch effektiv aber rein garnix, weil auch die Basisadresse dieser beiden Tabellen halt identisch ist...
c-hater schrieb: > die Bootsektion ist als besonders privilegierter Bereich gedacht Der bei einem brauchbaren uC am Ende vom Flash ist.
Lothar schrieb: > Der bei einem brauchbaren uC am Ende vom Flash ist. So, da spricht ja die geballte Kompetenz. Ich erschauere bis in's Mark... Deiner Meinung nach wäre also auch z.B. der Tiny2313 kein "brauchbarer" µC? Weil: der hat entweder überhaupt keine Bootloader-Sektion oder diese ist halt mit der App-Sektion identisch. Umschalten kann man zwischen diesen beiden Varianten mit einem einzigen Fuse-Bit, das nennt sich SELFPRGEN. Dasselbe gilt für viele andere, seit langem existierende Tinys ebenfalls. Nunja, und nun gibt es halt auch noch ein paar, die nicht ganz Mega sind (z.B. bezüglich des fehlenden RWW-Features), aber bezüglich des BL-Bereiches halt Mega-Features bieten, und zwar sogar über die der Megas hinaus, nämlich Identität zwischen App- und Boot-Sektion (was wiederum bei den klassischen Megas nicht geht). Also, ich würde das mal so ausdrücken: Du kannst einfach nix mit diesen Features anfangen, NUR deswegen erscheinen sie DIR unbrauchbar.
Lothar schrieb: > c-hater schrieb: > die Bootsektion ist als besonders privilegierter Bereich gedacht > > Der bei einem brauchbaren uC am Ende vom Flash ist. EFM8 Threads sind halt Mangelware, da bietet es sich doch an auf der übermächtigen Konkurrenz rumzuhacken. Stimmts, Lothar? Bootsektion am Anfang klingt für mich jedenfalls logischer als am Ende befindlich. c-hater schrieb: > die Bootsektion ist als besonders > privilegierter Bereich gedacht, der sich durch eben diese zusätzlichen > Privilegien von der App-Sektion unterscheidet. Ja Du hast natürlich Recht, aber das könnte schon etwas *besser dokumentiert* sein. Wenn es ausdrücklich "Alles ist Boot-Sektion" heißt dann bedeutet das für den Einsteiger sicher nicht zwingend, daß es gleichzeitig App-Sektion ist und man den Interrupt-Tab Location Schalter nicht umzulegen braucht. Zumal Bootend/Append= 0 ja eigentlich nahelegen würde, daß nur noch eine Appdata-Sektion übrigbleibt...
Goofy schrieb: > Bootsektion am Anfang klingt für mich jedenfalls logischer als am Ende > befindlich Praktisch jeder uC und auch alle Prozessoren haben die Bootsektion am Ende des physikalischen Speichers und zwar aus ganz einfachen Gründen: - User-Code beginnt immer bei 0 oder anderer fester Adresse egal ob Bootloader genutzt oder nicht und wie gross - User-Code muss nicht relocatable sein - ermöglicht zwei fixe Interrupt-Vektortabellen: bei 0 und bei der festen Bootloader-Adresse (die dann z.B. auch ein ROM/EEPROM sein kann) - Echtzeitbetriebssysteme könnten sonst nicht laufen siehe z.B. hier https://msdn.microsoft.com/en-us/library/bb331824.aspx > EFM8 Threads sind halt Mangelware, da bietet es sich doch an auf der > übermächtigen Konkurrenz rumzuhacken Das ist nun wirklich nicht nötig: schau Dir einfach mal die Gewinne von Silabs und Microchip im Vergleich an und die Letzten von Atmel bevor die praktisch Pleite gingen und aufgekauft wurden :-)
Mirja schrieb: > 1) > Der Takt Prescaler soll in 12 Stufen einstellbar sein: > 1,2,4,8,16,32,64,6,10,12,24,48 > > Angegeben sind zur Konfiguration von MCLKCTRLB/PDIV aber auf Seite 67 > nur die Einstellungen von 2-48. Wie lässt sich der Prescaler auf 1 > stellen? Ohne jetzt die Doku gelesen zu haben: Indem man ihn ausschaltet??? llkjjklbdv
Lothar schrieb: ... Du steigerst Dich von belanglos bis wirklich nicht mehr ernst zu nehmen! llkjjklbdv schrieb: > Ohne jetzt die Doku gelesen zu haben: Indem man ihn ausschaltet??? Stimmt. Nicht umsonst gibts das Prescaler Enable Bit (ab Reset eingschaltet).
Der aktuellen Doku fehlt eine Übersicht über das I/O Memory. Der tn1614def.inc sind z.B. im interessanten Bereich von 0-63 nur die VPORTx von 0-11, die GPIORx von 28-31, CCP auf 52 und SP+SREG von 61-63 zu entnehmen... Wer weiß mehr?
Die Initialisierung des PIT erweist sich als heimtückisch. Hält man die in der Doku beschriebene Prozedur ein ist das Ergebnis ein glatter Fehlschlag: Erst und unnützerweise die Periode in RTC_PITCTRLA zu schreiben stößt einen Synchronisationsprozeß mit der RTC-Clock Domain an der dazu führt, daß ein drauffolgendes Einschalten des PIT im gleichen Register folgenlos bleibt wenn nicht zuvor das zugehörige SYNCBUSY Flag in RTC_PITSTATUS auf 0 getestet wird. Gestaltet man die Initialisierung dagegen kurz und knapp mit Einschalten des Interrupts sowie dann Periode/Enable zusammen klappt die Sache. Für den PIT- sowie den RTC Interrupt sei noch darauf hingewiesen, daß die entsprechenden Int-Flags am Ende jeweils manuell zurückzusetzen sind!
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.