Forum: Mikrocontroller und Digitale Elektronik Fragen zu Tiny1614/16/17


von Mirja (Gast)


Lesenswert?

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 !?

von c-hater (Gast)


Lesenswert?

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...

von Lothar (Gast)


Lesenswert?

c-hater schrieb:
> die Bootsektion ist als besonders privilegierter Bereich gedacht

Der bei einem brauchbaren uC am Ende vom Flash ist.

von c-hater (Gast)


Lesenswert?

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.

von Goofy (Gast)


Lesenswert?

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...

von Lothar (Gast)


Lesenswert?

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

von llkjjklbdv (Gast)


Lesenswert?

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

von Goofy (Gast)


Lesenswert?

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

von Max (Gast)


Lesenswert?

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?

von Max (Gast)


Lesenswert?

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