Hallo,
kann mir jemand einen Controller für meine Anwendung empfehlen? Die
Frage ist, was der günstigste Controller ist, der die Anforderungen noch
erfüllt. Ich bin da etwas überfordert bei der Vielzahl von Typen und
Herstellern...
MUSS-Anforderungen:
- 5 x 8-Bit A/D Channel
- 6 X Digital Out
- 1 x 8-Bit Timer
- Umin <= 2,5V
- Umax >= 4,5V
- Sleep Modus
- Selbstständiges Aufwachen aus dem Sleep Modus
KANN-Anforderungen (Wunsch, aber keine Pflicht)
- weitere, hochauflösendere Timer
- hochauflösendere A/D Channels
- keine QFN Bauform
- Keine DIP Bauform
- PIC oder AVR
- Weitere I/O Pins
Übrige Eigenschaften wie Speichergröße oder Taktfrequenz haben keine
besonderen Anforderungen.
Zuerst habe ich den PIC16F527 rausgesucht. Wenn ich es richtig sehe, hat
der aber keine Möglichkeit, selbstständig aus dem Sleep Modus
aufzuwachen, außer über den Watchdog. Dann wird aber gleich ein Reset
erzeugt. Das würde bedeuten, dass ich einige Daten im HEF speichern muss
und jedes mal beim Reset alles neu initialisieren muss. Das erscheint
schon recht aufwendig. Außerdem gibt es einen Reset Timer (DRT), der
nominal auf 18ms gestellt ist. Das wäre mir deutlich zu lang zum
aufwachen. Zwar kann man den Timer wohl auch deaktivieren, aber dann
wäre der interne Oszillator wohl noch nicht eingeschwungen und ich
vermute mal, dass dann auch der ADC noch nicht zuverlässig arbeiten
würde?
Dann habe ich mir den PIC16F1503 angesehen. Der würde das Wake-up
Problem lösen, jedoch nur wenn ich einen externen Oszillator anschließe.
Das ist ja auch nicht gerade ideal.
Was meint ihr? bekommt man das mit dem PC16F527 hingefrickelt? Oder doch
lieber den PIC16F1503 mit Quarz? Oder gibt es einen noch passenderen
Controller? Oder wie sieht es mit standard Controllern aus, die mehr
Funktionen haben, aber wegen riesen Stückzahlen trotzdem günstig sind?
Jörg schrieb:> kann mir jemand einen Controller für meine Anwendung empfehlen?
...
> - PIC oder AVR
...
> Zuerst habe ich den PIC16F527 rausgesucht. Wenn ich es richtig sehe, hat
...
> Dann habe ich mir den PIC16F1503 angesehen.
(keiner paßt so recht)
Dann schau dir halt auch mal ein paar AVRs an.
Da würden die meisten passen.
Jörg schrieb:> - keine QFN Bauform> - Keine DIP Bauform
Also nur TQFP? Dann wäre z.B. der ATMega328 was für dich. Im TQFP
Gehäuse hat er 8 ADC Eingänge.
Ich hätte jetzt auch den ATmega328 empfohlen.
> hochauflösendere A/D Channels
Kann man relativ einfach über einen seriellen ADC ergänzen, zum Beispiel
den MCP3208. Der ist kinderleicht zu programmieren.
Mega328 hat ja schon 10-bit ADC, das ist schon mehr als gefordert:
Jörg schrieb:> - 5 x 8-Bit A/D Channel
Den MC kann man über eine Menge Events aufwecken. LevelChange,
PinChange, Analog Komparator, Watchdog usw.
Danke für die Tipps, es geht ja eindeutig in Richtung AVR. Der ATmega328
wäre scheinbar geeignet mit seinem Power-Save Mode, in dem Timer2 aktiv
bleibt. Aber er ist schon fast überdimensioniert. Ich brauche ja
eigentlich nur einen 14-Piner.
Matthias S. schrieb:> Also nur TQFP?
Ja, oder irgendwas wie SO oder TSSOP. Ist aber nicht so wichtig.
Stefan schrieb:> Wie lange soll der denn im Sleep Modus> bleiben ? Und durch was soll der aufgewacht werden ?
Der Controller soll alle 200ms aufwachen und ein paar Messungen machen.
Es gibt keinen Einfluss von außen, der den Controller aufwecken könnte.
Das ist ja eigentlich die Forderung, die von den billigst-Controllern
nur eingeschränkt erfüllt wird.
> Wenn ich es richtig sehe, hat> der aber keine Möglichkeit, selbstständig aus dem Sleep Modus> aufzuwachen, außer über den Watchdog. Dann wird aber gleich ein Reset> erzeugt.
Bei meinen PIC steht:
1
When a WDT time-out occurs while the device is in
2
Sleep, no Reset is generated. Instead, the device
3
wakes up and resumes operation.
Würde mich auch wundern, wenn es anders wäre. Ansonsten scheint es bei
den PICs eher einen Treffer zu geben. Einfach darauf achten, dass
LFINTOSC auf den Timer geht und dieser damit asynchron arbeitet. Steht
ja alles schön separat in den Datenblättern.
Ansonsten, wenn du auch mit 256ms zurechtkommst, wächst der Lösungsraum
phenomenal. Das dürften die meisten uC mit ihren Watchdog hinbekommen.
avr schrieb:> Es gibt 14-Pin Attinys. Es wundert mich, dass diese noch nicht gennant> worden sind.
Aus dem Grund, weil bei dieser Belegung
Jörg schrieb:> - 5 x 8-Bit A/D Channel> - 6 X Digital Out
Genau noch ein einziger Portpin frei wäre, und damit das hier:
> - Weitere I/O Pins
nicht mehr drin ist. Wenn das nicht stört, geht ohne weiteres auch ein
Tiny 24/44/84.
avr schrieb:> Attiny84 bzw. die neueren Attiny841.
Stimmt, die würden auch passen.
Matthias S. schrieb:> Wenn das nicht stört, geht ohne weiteres auch ein> Tiny 24/44/84.
Ja, mehr Pins wären schön, sollen aber nicht das Ausschlusskriterium
sein.
Torsten R. schrieb:> würden evtl. ein stm8 passen? Z.b. STM8S003F3P6.
Auf den ersten Blick eigentlich bisher der beste Kandidat. Er hat 2 16
Bit Timer, einen 8 Bit Timer und ganz wichtig einen separaten Wake Up
Timer. Außerdem einen 10 Bit ADC und auch noch ein paar Pins übrig. Und
preislich liegt er noch unter den billigsten PICs, die ich rausgesucht
hatte. Und die hätten dann eindeutig weniger Funktionen. Zwar habe ich
keine Erfahrungen mit STMs, aber das ist ja doch auch irgendwie alles
das Gleiche.
Hat irgendwer Bedenken zum STM8S003F3P6?
neuer PIC Freund schrieb im Beitrag #4584435:
> Bei meinen PIC steht:When a WDT time-out occurs while the device is in> Sleep, no Reset is generated. Instead, the device> wakes up and resumes operation.> Würde mich auch wundern, wenn es anders wäre. Ansonsten scheint es bei> den PICs eher einen Treffer zu geben. Einfach darauf achten, dass> LFINTOSC auf den Timer geht und dieser damit asynchron arbeitet. Steht> ja alles schön separat in den Datenblättern.>> Ansonsten, wenn du auch mit 256ms zurechtkommst, wächst der Lösungsraum> phenomenal. Das dürften die meisten uC mit ihren Watchdog hinbekommen.
Habe es mir beim PIC16F527 nochmal genau angesehen und diesen Satz
gefunden:
1
They are not affected by a WDT
2
Reset during Sleep or MCLR Reset during Sleep, since
3
these Resets are viewed as resumption of normal operation.
Das klingt ja schon so, also würde der WTD Reset im Sleep keinen
wirklichen Reset verursachen. Und den WDT kann man ja einstellen.
Nominal braucht er wohl 18ms aber mit Vorteiler könnte ich ihn z.B. auch
auf 144ms einstellen. Das wäre wohl ok. Aber ich muss sagen, dass mich
der STM mit seinen besseren Funktionen bei geringerem Preis schon noch
mehr überzeugt.
WehOhWeh schrieb:> PIC24FV32KA304>> Kann 5V und ist TQFP44. Kann viele sleep-Modi.
Müsste passen, aber den finde ich jetzt etwas überdimensioniert.
Bernd schrieb:> Der Controller soll alle 200ms aufwachen und ein paar Messungen machen.
Wenns nicht genau sein muß, kann man den Watchdoginterrupt zum Aufwachen
nehmen. Ansonsten einen ATmega mit 32kHz Uhrenquarz.
Peter D. schrieb:> Wenns nicht genau sein muß, kann man den Watchdoginterrupt zum Aufwachen> nehmen. Ansonsten einen ATmega mit 32kHz Uhrenquarz.
Ne, muss nicht so genau sein. Ich hätte wohl besser 100-200ms schreiben
sollen.
Das war für mich eine wichtige Erkenntnis, dass der WDT Reset bei PIC im
Sleep nur zum Aufwachen führt. Aber wie gesagt, erscheint mir der STM8
noch interessanter, oder nicht?
Jörg schrieb:> Aber wie gesagt, erscheint mir der STM8> noch interessanter
Inwiefern?
Bist Du in den schon gut eingearbeitet, hast ne gut funktionierende
Programmierumgebung/Compiler und kennst Dich prima darin aus, kannst ihn
gut beschaffen.
Hier im Forum scheint er selten zu sein, ich kenne ihn auch nicht. Mit
nem neuen 8Bitter werde ich auch nicht mehr anfangen.
Peter D. schrieb:> Jörg schrieb:>> Aber wie gesagt, erscheint mir der STM8>> noch interessanter>> Inwiefern?
Also wenn ich die für mich relevanten Daten vergleiche, schneidet er
einfach super ab:
PC16F527 (Billigster PIC, der meine Anforderungen erfüllt)
- 1x 8 Bit Timer
- 8 Bit ADC
- Eingeschränkte Wake-up Funktionalität durch WDT
- Kosten bei Farnell: 0,905€
STM8S003F3P6
- 1x 8 Bit Timer, 2x 16 Bit Timer
- 10 Bit ADC
- Uneingeschränkte Wake-up Funktionalität durch extra Timer
- Kosten bei Farnell: 0,649€
Der erscheint mir auf den ersten Blick einfach technisch und preislich
überlegen. Nur die geringere Verbreitung hier im Forum und meine
fehlende Erfahrung damit sind ein Nachteil. Aber schadet ja nicht, sich
auch mal in die STM8 Familie einzuarbeiten. Und mit dem STM8S-Discovery
habe ich für unter 20€ incl. Versand gleich ein Eval-Board und
Programmer.
Jörg schrieb:> Und mit dem STM8S-Discovery> habe ich für unter 20€ incl. Versand gleich ein Eval-Board und> Programmer.
Tja, und wenn du einen AVR nimmst, sparst du eben diese 20 Euronen und
hast trotzdem die gleiche Funktionalität und die auch noch viel
schneller verfügbar, weil du die ganze Einarbeitung incl. Aufbau und
Test der Toolchain sparst.
Oder anders ausgedrückt: Umsteigen tut man genau nur dann, wenn es keine
Lösung mit der bereits beherrschten Technologie gibt oder diese Lösung
zumindest überproportional viel Aufwand erfordert (was hier sicher nicht
der Fall ist).
Aber mach' ruhig, wie du denkst...
Jörg schrieb:> Hat irgendwer Bedenken zum STM8S003F3P6?
Er erfüllt deine Specs nicht.
Jörg schrieb:> Umin <= 2,5V
Der STM8 will mindestens 2.95V sehen.
Axel S. schrieb:> Der STM8 will mindestens 2.95V sehen.
Ja, das habe ich auch gerade gesehen :(
Evtl. kann ich aber auch noch auf 3V rauf.
Außerdem habe ich gerade gesehen, dass die Stromaufnahme beim STM im
Sleep Mode mit 10-20µA vergleichsweise hoch ist. Und zudem finde ich das
Datenblatt auf den ersten Eindruck etwas schwieriger. Da steht
beispielsweise in einer Fußnote
1
Configured by the AHALT bit in the FLASH_CR1 register.
Aber die Suche nach diesem Bit oder dem Register führt zu keinen
hilfreichen Treffern. Das lässt mich nun doch wieder etwas zögern.
c-hater schrieb:> Tja, und wenn du einen AVR nimmst, sparst du eben diese 20 Euronen und> hast trotzdem die gleiche Funktionalität und die auch noch viel> schneller verfügbar, weil du die ganze Einarbeitung incl. Aufbau und> Test der Toolchain sparst.
Ist schon richtig. Aber AVR und PIC ist scheinbar pro Stück für
vergleichbare Funktionalität ein gutes Stück Teurer. Langfristig gedacht
lohnen sich da die Einmalkosten und der Aufwand möglicherweise. Das muss
man zumindest mal hinterfragen.
Jörg schrieb:> Ist schon richtig. Aber AVR und PIC ist scheinbar pro Stück für> vergleichbare Funktionalität ein gutes Stück Teurer.
Ja, das stimmt schon.
Aber du musst schon recht viele (>>1000) verbauen, um auch nur die
Kosten für das Eval-Board zu kompensieren, ganz zu schweigen von den
Kosten für die Einarbeitung und die Errichtung einer Toolchain für eine
entsprechend grosse Serienproduktion...
Und du hast immer noch das Problem der Spannungsfestigkeit und des
Energiebedarfs. Beides produziert wieder zusätzlichen Hardwareaufwand,
die du kostenmäßig gegenrechnen musst, was sehr schnell dazu führt, dass
die Sache sehr, sehr unattraktiv wird...
Jörg schrieb:> Aber AVR und PIC ist scheinbar pro Stück für> vergleichbare Funktionalität ein gutes Stück Teurer.
Übertreib mal nicht so.
Der ATtiny88-AU ist bei Farnell für 0,6813€ zu haben.
Und ab 100 Stück für 0,4881€ (STM8S003F3P6: 0,506€).
Tester T. schrieb:> Wenn TQFP ok ist schau auch mal bei Ti die MSP430 Familie könnte auch> noch interessant sein für dich.
Sehe ich mir auch noch an, danke!
Peter D. schrieb:> Jörg schrieb:>> Aber AVR und PIC ist scheinbar pro Stück für>> vergleichbare Funktionalität ein gutes Stück Teurer.>> Übertreib mal nicht so.> Der ATtiny88-AU ist bei Farnell für 0,6813€ zu haben.> Und ab 100 Stück für 0,4881€ (STM8S003F3P6: 0,506€).
Tatsache! Bisher war ja nur die Rede vom ATtiny24/44/84/841. In dem Fall
muss ich ja alles zurücknehmen. Und gleich mal ein paar ATtiny88-AU
bestellen ;)
Jörg schrieb:> Außerdem habe ich gerade gesehen, dass die Stromaufnahme beim STM im> Sleep Mode mit 10-20µA vergleichsweise hoch ist.
Das kommt drauf an, in welchen Sleep Mode du den schickst. Aber ja, der
STM8S ist kein ausgesprochener Stromsparer. Dafür gibt es extra die
STM8L Familie.
> Und zudem finde ich das> Datenblatt auf den ersten Eindruck etwas schwieriger. Da steht> beispielsweise in einer FußnoteConfigured by the AHALT bit in the> FLASH_CR1 register. Aber die Suche nach diesem Bit oder dem Register> führt zu keinen hilfreichen Treffern.
Das ist das gleiche Prinzip wie bei dem ARM Cortex-M. Du mußt das
"Family Reference Manual" lesen und das Datenblatt zum verwendeten
Controller. Das Reference Manual beschreibt alle verfügbare Peripherie
und das Datenblatt geht dann nur noch auf die Besonderheiten des
jeweiligen Familienmitglieds ein.
PS: aber das wurde dir ja schon gesagt. Die Einarbeitung in eine neue µC
Familie gibt es nicht umsonst.