Forum: Mikrocontroller und Digitale Elektronik Mehrfach Belegung von Ports STM8 Bit µC


von Thomas (Gast)


Angehängte Dateien:

Lesenswert?

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

von Steve (Gast)


Lesenswert?

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.

von Christopher J. (christopher_j23)


Lesenswert?

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.

von Thomas (Gast)


Lesenswert?

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.

von TU Student 1. (student0)


Lesenswert?

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.

von Patrick R. (ohmann)


Lesenswert?

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

von (º°)·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.· (Gast)


Lesenswert?

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.

von Sebastian S. (amateur)


Lesenswert?

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
von TU Student 1. (student0)


Lesenswert?

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.

von Philipp Klaus K. (pkk)


Lesenswert?

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

von Christopher J. (christopher_j23)


Lesenswert?

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

von Thomas (Gast)


Lesenswert?

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