Hallo,
der STM8S001 hat Pins, welche von verschiedenen Ports belegt werden. Ich
hatte bis jetzt immer µC wo Ports und Pins gleich waren. D.h. sie hatten
zwar Alternate functions, aber es war niemals mehrere Ports auf einen
Pin geschaltet.
Datenblatt: http://www.mouser.com/ds/2/389/en.DM00390996-1139719.pdf
Ich verstehe jetzt nicht, wie ich die Ports benutzen muss. Was passiert
wenn ich PB5 auf Ausgang und PA3 auf Ausgang schalten würde und sie
unterschiedliche Pegel treiben sollen..? Defekt?
Wie schalte ich nur PA3? Was mache ich dann mit PB5?
Danke für Antworten.
LG
Thomas
Die genannten Ports können wahlweise auf die zur Verfügung stehenden
Pins gemappt werden. Also ist entweder PA3 oder PB5 mit dem Pin
verbunden, der andere steht dann nicht zur Verfügung.
Steve schrieb:> Die genannten Ports können wahlweise auf die zur Verfügung stehenden> Pins gemappt werden. Also ist entweder PA3 oder PB5 mit dem Pin> verbunden, der andere steht dann nicht zur Verfügung.
Das sehe ich etwas anders.
Laut Datenblatt (S.22 "Note (Nr.2)") sind mehrere GPIOs einfach über
Bond-Drähte kurzgeschlossen und demnach ist die Frage
> Was passiert> wenn ich PB5 auf Ausgang und PA3 auf Ausgang schalten würde und sie> unterschiedliche Pegel treiben sollen..? Defekt?
mit an Sicherheit grenzender Wahrscheinlichkeit mit "ja" zu beantworten
und das heißt wiederum
> Wie schalte ich nur PA3? Was mache ich dann mit PB5?
am besten mit PB5 einfach gar nichts machen, d.h. "floating input", also
Reset-Zustand belassen.
Aufpassen musst du vor allem wegen dem SWIM-Pin, d.h. wenn du PD5 als
UART-TX benutzt, dann kannst du nämlich den Chip nicht mehr flashen,
weil du dich ausgesperrt hast (siehe auch
Beitrag "STM8 mit 8pin: STM8S001J3").
Da der eigentliche Chip mit dem S003F3 bzw. S103F3 identisch ist würde
ich für das Entwickeln auch einen solchen benutzen. Dabei kannst du ja
dann so tun als ob du einen S001J3 verwendest und die GPIOs
dementsprechend benutzen. Wenn du da etwas versemmelst steigt aber nicht
gleich Rauch auf bzw. du sperrst dich nicht aus.
Christopher J. schrieb:> Da der eigentliche Chip mit dem S003F3 bzw. S103F3 identisch ist würde> ich für das Entwickeln auch einen solchen benutzen. Dabei kannst du ja> dann so tun als ob du einen S001J3 verwendest und die GPIOs> dementsprechend benutzen. Wenn du da etwas versemmelst steigt aber nicht> gleich Rauch auf bzw. du sperrst dich nicht aus
Das wäre super. Woher nimmst du diese Info. Ich habe noch einen S103 da,
da würde mir auch das Entwicklen einfacher fallen.
Christopher J. schrieb:> am besten mit PB5 einfach gar nichts machen, d.h. "floating input", also> Reset-Zustand belassen.
Ich habe es immer noch nicht ganz verstanden. Ich habe eine LED an Pin5
gelötet.
Ich würde den Chip garnicht verwenden, Finger weg, der ist einfach nur
Murks.
Auch wenn mir der STM8 sonst sehr gefällt, besonders wegen SDCC, den
Features und dem Preis.
- Man kann sich permanent aussperren
(beim AVR gibt es wenigstens den Fallback auf HV-Prog)
- Mehrere Port-I/Os auf einen gebondet (so einen Murks hab ich noch
nie gesehen, höchstens, dass manche I/Os nicht herausgeführt sind, also
gleicher Chip in kleinerem Gehäuse)
- SPI ist "Transmit-only" ?
- Ein Portpin weniger wegen 3.3V Wandler, nur noch 5 I/Os
Es gibt den STM8S103F3 im UFQFPN 20 3x3x0.6 lieber den, oder gleich
einen PIC/AVR mit 8 Pins.
Verstehe nicht, warum hier so abgeraten wird vom STM8. Wir verwenden den
in einem aktuellen Projekt in der Firma und es funktioniert alles so wie
es soll. Gerade während der Entwicklungsphase habe ich alles mögliche
damit angestellt, habe es aber trotzdem nie geschafft mich auszusperren
oder dergleichen.
Wenn du einen "normalen" Ausgangspin haben willst, an dem deine LED
hängt, musst du bei Pin 5 den PA3 verwenden, so wie er im Datenblatt als
erstes aufgeführt ist. Für I2C nimmst du dann dementsprechend PB6. So
wirklich Spaß macht das nicht, aber es funktioniert defintiv (habe I2C
damit im Einsatz, sowie einen weiteren Pin für eine Software UART).
Protipp gegen Aussperrprobleme:
Den Controller erstmal eine* Sekunde lang eine NOP-Runde drehen lassen.
Das huelft nicht nur beim STM-8 sondern auch einer Vielzahl
anderer Controller.
*) Dieser Wert ist nicht in Stein gemeisselt und kann bei
Bedarf auch verkuerzt werden.
Würde mich wundern wenn man außer im Fehlerfalle, zwei Register auf
einen Pin legen könnte.
Der Status müsste dann ja per Lotterie entschieden werden oder nach dem
Motto: Wer ist am kräftigsten.
Der zweite Fall würde dann aber sicher verhindern, dass das Teil
einfriert.
Patrick R. schrieb:> Verstehe nicht, warum hier so abgeraten wird vom STM8.
Ich rate nicht vom STM8 ab, sondern von diesem konkreten 8-Pin-Modell.
Hoffentlich kommt bald ein überarbeitetes Modell, bis dahin bleib ich
beim STM8S103F3P6.
TU S. schrieb:> Hoffentlich kommt bald ein überarbeitetes Modell, bis dahin bleib ich> beim STM8S103F3P6.
Es sollen vor Jahresende weitere 8-pin STM8 erscheinen (z.B. STM8L001).
Wie dort die Pins mit dem Die verbunden sind, weiß ich allerdings nicht.
Philipp
Thomas schrieb:> Woher nimmst du diese Info. Ich habe noch einen S103 da,> da würde mir auch das Entwicklen einfacher fallen.
Es gibt da das ein oder andere Vögelchen bei ST, was mir das
gezwitschert hat ;) Das ist eben typisch, dass bei den Controllern
entweder Flash oder EEPROM "runtergelabelt" werden obwohl sie voll
vorhanden sind. Hier ist mal eine Liste von allen STM8 die sich den
selben Die mit dem S001J3M teilen (natürlich ohne Gewähr und/oder
Anspruch auf Vollständigkeit):
1
STM8S001J3M
2
STM8S003F3P
3
STM8S003F3U
4
STM8S003K3T
5
STM8S103F2M
6
STM8S103F2P
7
STM8S103F2U
8
STM8S103F3M
9
STM8S103F3P
10
STM8S103F3U
11
STM8S103K3B
12
STM8S103K3T
13
STM8S103K3U
14
STM8S903F3M
15
STM8S903F3P
16
STM8S903F3U
17
STM8S903K3B
18
STM8S903K3T
19
STM8S903K3U
Im Grunde ist es ganz einfach: Gegenüber den S103F3 bzw S103K3 ist bei
den S003F3 das EEPROM runtergelabelt (von 640 Byte auf 128 Byte) und bei
den S103F2 der Flash (von 8kB auf 4kB). Der S903 hat (angeblich)
gegenüber dem S103 nur einen 16-Bit Timer und dafür mehr AD-Kanäle. Es
kann natürlich tatsächlich sein, dass heruntergelabelte ICs die Tests
für die vollen Specs nicht erfüllt haben aber ich denke, dass bei
solchen Preisen grundsätzlich der Die auf 100% getestet wird und
ansonsten im Sandkasten landet aber YMMV ;)
In Wirklichkeit gibt es also nur sechs verschiedene Varianten die sich
nur im Gehäuse unterscheiden, nämlich SO8, SO20, TSSOP20, QFN20, QFN32
und LQFP32 aber ST verkauft das als 19 verschiedene Produkte, was sich
natürlich gleich viel mächtiger anhört. Das ist halt das typische
Marketing-Geblubber von wegen "Bei uns gibts die größte Auswahl... Bla
bla bla...".
Thomas schrieb:> Christopher J. schrieb:>> am besten mit PB5 einfach gar nichts machen, d.h. "floating input", also>> Reset-Zustand belassen.>> Ich habe es immer noch nicht ganz verstanden. Ich habe eine LED an Pin5> gelötet.
PB4 und PB5, also die I2C-GPIOs, sind "true open-drain" outputs, d.h.
NMOS (siehe Fußnote 3. auf S.22). Wenn du die Kathode der LED auf den
Pin und die Anode per Widerstand an VCC legst, dann sollte es auch mit
PB5 funktionieren.
TU S. schrieb:> Ich würde den Chip garnicht verwenden, Finger weg, der ist einfach nur> Murks.>> Auch wenn mir der STM8 sonst sehr gefällt, besonders wegen SDCC, den> Features und dem Preis.>> - Man kann sich permanent aussperren> (beim AVR gibt es wenigstens den Fallback auf HV-Prog)>> - Mehrere Port-I/Os auf einen gebondet (so einen Murks hab ich noch> nie gesehen, höchstens, dass manche I/Os nicht herausgeführt sind, also> gleicher Chip in kleinerem Gehäuse)>> - SPI ist "Transmit-only" ?>> - Ein Portpin weniger wegen 3.3V Wandler, nur noch 5 I/Os
Ich empfinde das mit dem Bonding von mehreren GPIOs auf einen Pin eher
als Feature. Klar sind fünf IO-Pins nicht die Welt aber so hat man die
Wahl welche Peripherie man denn nutzen will. Das finde ich immer noch
besser als wenn sie einfach welche weggelassen hätten, wie es eben
typischerweise gemacht wird. SPI kann man über den MOSI-Pin auch im
Half-Duplex-Modus nutzen, womit dann unter anderem auch "receive only"
realisierbar ist. Da gibt es auf jeden Fall ein paar einfache ICs, z.B.
MAX31855 für Thermoelemente, die sich damit begnügen. Ich gebe dir aber
prinzipiell auf jeden Fall Recht, dass der Chip in dem Package ein
riesengroßer Kompromiss ist und sich die zusätzlichen Schmerzen
gegenüber dem Aufpreis zu einem S003F3 wohl nur selten rechnen werden.
Trotzdem gibt es bestimmt Anwendungen, wo man vielleicht nur die paar
wenigen Pins benötigt, z.B. eine ganz einfache Temperaturregelung.
Solltemperatur per Poti und Ist-Temperatur per NTC jeweils an einen ADC
und per PWM das Stellsignal rausgeben. Dafür braucht man eben auch nur
drei Pins und man hat sogar den SWIM-Pin noch frei ;)
Danke das hat geholfen. Jetzt bin ich schlauer.
D.h. wenn ich PB5 auf Null setzte und PA3 auf High, knallt es wirklich.
Aber jetzt habe ich es verstanden und Danke dir vielmals!
PS: ich finden den 8 Pinner auch sehr gut!