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.
1 | void main(void) |
2 | {
|
3 | |
4 | GPIO_Init(GPIOB, (GPIO_Pin_TypeDef)GPIO_PIN_5, GPIO_MODE_OUT_PP_LOW_FAST); |
5 | //GPIO_Init(GPIOA, (GPIO_Pin_TypeDef)GPIO_PIN_3, GPIO_MODE_OUT_PP_LOW_FAST);
|
6 | |
7 | while (1) |
8 | {
|
9 | /* Toggles LEDs */
|
10 | GPIO_WriteReverse(GPIOB, (GPIO_Pin_TypeDef)GPIO_PIN_5); |
11 | //GPIO_WriteReverse(GPIOA, (GPIO_Pin_TypeDef)GPIO_PIN_3);
|
12 | Delay(0xFFFF); |
13 | }
|
14 | |
15 | }
|
So blinkt nichts!, Kommentiere ich PortA ein funktioniert es.
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.
:
Bearbeitet durch User
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!
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.