Hallo, um vor allem beim Tiny25 ein LCD betreiben zu können, dachte ich an die hier gängige Lösung ein 74HC164 Schieberegister via SPI anzuhängen. Allerdings benötige ich die PWM Kanäle, die sich ja einige Pins teilen. Beim Mega8 wären das die Pins PB2(SS/OC1B), PB3(MOSI/OC2) und beim Tiny25 PB0(MOSI/OC0A), PB1(MISO/OC0B). Meine Frage ist nun, wie sich die PINs verhalten ? Sagen wir ich lasse einen Timer für die LCD Ausgabe alle 20ms ins SPI-Register den auszugebenden Wert schreiben (ähem ich meine natürlich die gesamte Sequenz ;) ), meine PWM soll aber gleichzeitig einen z.B. 1kHz Rechteck ausgeben, kommt sich das ins Gehege ? Weil ich werde aus dem Datenblatt irgendwie nicht schlau :( Stoppt ein SPI Event nun die PWM, oder muß ich sie selbst stoppen damit ich SPI Ausgabe ermöglichen kann ? Für die Ausgabe auf den 164er dachte ich an eine einfache Gluelogik, die erkennt ob SCK eine Frequenz liefert oder nicht. Ich wollte vornehmlich den Tiny25 für die PWM Erzeugung mit LCD-Ausgabe einsetzen, die Frage nach dem Mega8 in dem Zusammenhang liegt an Pinsparwollenhabenmehr lol Wenn es keine Möglichkeit gibt eine PWM mit dem Tiny25 bei max. 1kHz inklusive LCD-Ausgabe mit 164er Schieberegister quasi gleichzeitig zu realisieren, muß ich halt einen größeren µC (z.B. Mega8) nehmen. Meine erste Idee war die PWM auf die doppelte Frequenz zu bringen und dann statt jedesmal einen PWM Wert auszugeben ein SPI Event daraus zu machen, nur hat die SPI ja ihren eigene Clock-Master ... Hat vielleicht jemand eine Idee, um es doch noch zu realisieren ? Vielen Dank, Markus
Hallo Marcus, Warum so kompliziert, der Tiny25 hat doch 16 I/O, Dein LCD benötigt sicherlich nur 6 I/O da bleiben doch noch genügend I/O übrig. PWM an irgend einem I/O lässt sich doch softwaemäßig sicherlich realisieren, oder? Bernhard
@Bernhard Schulz (Bernhard) Du verwechselst da den Tiny26 PDIP20 (16 IO) mit dem Tiny25 PDIP8 (6 IO) ;) Da anscheinend noch niemand so etwas zum laufen gebracht hat, werde ich wohl die Tiny25 gegen Tiny2313/Mega8 austauschen müssen ... Danke trotzdem, Markus
>Du verwechselst da den Tiny26 PDIP20 (16 IO) mit dem Tiny25 PDIP8 (6 >IO) ;) Hmm,... da hab' ich wohl versehentlich das falsche Datenblatt befragt, sorry >Tiny25 gegen Tiny2313/Mega8 austauschen müssen ... was hältst Du von dem Vorschlag: - 5 Leitungen vom LCD (1xRS 4xDaten) werden über 3 µC-Pins und einem 4 zu 16 Dekoder-IC versorgt - 1 Leitung vom LCD (Enable) direkt an 1-µC-PIN ... bleiben noch 2-PINs für PWM o.ä. übrig Nachteil: ein zusätzlicher IC Bernhard
@Bernhard Es geht bei meinem Problem darum, das ich einige Fahrtregler auf Tiny25 Basis habe, die alle 4 Hardware-PWMs nutzen. Es sind also nur 2 Pins noch verfügbar, wo momentan zwei Taster zur Einstellung hängen. Um nun zu sehen, wie die Regler eingestellt sind, wollte ich die gängige Methode nehmen via 164er Schieberegister und SPI ein LCD anzuhängen. Dazu würde ich die drei Leitungen des SPI des Controllers nehmen und die auszugebenden Daten einfach ins SPI Register und gut ist ;) Beispiel hierfür findest Du in der Codesammlung, z.B.: http://www.mikrocontroller.net/forum/read-4-21765.html#new Eine Huckepackplatine ist schnell bestückt und auf die bestehenden Lochrasterkarten gesetzt. Das Problem ist nicht die Hardware, sondern wie ich es hinbekomme, das das PWM Signal parallel zum SPI Signal weiterläuft. Denn das MOSI brauch ich dafür und dessen Pin wird von der Hardware PWM belegt ... Die Motoren können ja nicht einfach stehenbleiben, wenn auf's LCD ausgegeben wird. OK ist bei höheren Drehzahlen kein Thema wegen Trägheit, nur bei extrem langsamer Drehzahl/Leistung wird's kritisch ... Die Huckepack-Lösung wäre halt eleganter gewesen, weil sie auch auf beliebige andere SPI fähige Schaltungen hätte angewendet werden können ;) So muß ich nun die PWM der Tiny25 auf den Tiny2313 umändern und dort direkt ein LCD anklemmen. Danke trotzdem, Markus
>Das Problem ist nicht die Hardware, sondern wie ich es hinbekomme, >das
das PWM Signal parallel zum SPI Signal weiterläuft.
... PWM kan problemlos deaktiviert werden,
wenn SPI aktiv sein muss, das wäre möglich, muss vielleicht sogar
gemacht werden.
Aber was ist mit den Motoren wenn für einige ms an den PWM-Pins
verschiedene Schaltzustände anliegen?
Fährt das Auto plötzlich los? ;) Fehlstart => Disqualifikation
Wie wird das PWM-Signal weiter aufbereitet, geht das Rechtecksignal
direkt auf die Motoren, oder wird die Spannung durch ein RC-Glied
geglättet?
Bernhard
OK, mal wieder ASCII-Schaltplan lol +------+ | |--PWM1(PinPB0)--[Tiefpaß]--[Transistor]---[Motor] |Tiny25|--PWM2(PinPB1)--[Tiefpaß]--[Transistor]---[Motor] | |--PWM3(PinPB3)--[Tiefpaß]--[Transistor]---[Motor] | |--PWM4(PinPB4)--[Tiefpaß]--[Transistor]---[Motor] +------+ | | | [Taster](PinPB2) [Taster](PinPB5) Die Doppelbelegung ist dann wie folgt: PinPB0 = PWM1 = MOSI PinPB1 = PWM2 = MISO PinPB2 = Taster = SCK Für die 164er Schieberegister-Lösung wären drei Pins erfordelich: SCK/PB2 -> Clock für's 164er MOSI/PB0 -> serielle Daten En/PB5 -> LCD enabled Wobei ich mir überlegt hatte durch zusätzliche Gluelogik das SCK-Signal für's disablen des LCDs zu "mißbrauchen" ;) Aber da ich ja noch einen Pin ohne PWM frei habe, braucht's das nicht ;) Es käme also die folgende Schaltung heraus: +------+ | |--+-PWM1(PinPB0)--[Tiefpaß]--[Transistor]---[Motor] |Tiny25|--|-PWM2(PinPB1)--[Tiefpaß]--[Transistor]---[Motor] | |--|-PWM3(PinPB3)--[Tiefpaß]--[Transistor]---[Motor] | |--|-PWM4(PinPB4)--[Tiefpaß]--[Transistor]---[Motor] +------+ | | | |MOSI+-----+ +-----+ | | +----| | | | | +---------|HC164|---/8---| LCD | | | SCK | | | | | | +-----+ +-----+ | | | enable +------------------------------+ | | | [Taster](PinPB2) [Taster](PinPB5) Wobei mir da gerade auffällt, das ich einen Denkfehler habe :( Denn sobald PB5 wieder Eingang ist, ists Essig mit enable :( Doch wieder Gluelogik mit FF o.ä. ... Ich glaube es ist doch sinnvoller die größeren Tiny2313 zu nehmen ;) Aber das ist doch eine echte HErausforderung, oder ;) Danke, Markus
Markus, da haste Dir aber jetzt eine ganz schöne Mühe gemacht,
Respekt.
Ich denke gerade, dass dieses Prinzip nicht funktionieren wird.
Begründung:
- der HC 164 bekommt im normalen PWM Betrieb die unterschiedlichsten
Signale angeboten (PWM+TASTEN), er kann dann nicht mehr unterscheiden,
ob es ein PWM oder ein SPI Signal ist.
- das LCD bekommt durch einen Tastendruck jedes mal ein Enable und das
ist im 4 Bit-Bodus denkbar äußerst sehr ungünstig ;)
Wobei das lustige Zeichenspiel auf dem LCD wäre sicher mal
interessant.
>Ich glaube es ist doch sinnvoller die größeren Tiny2313 zu nehmen ;)
Ja, Du hast mich eben beeindruckender weise seh gut davon überzeugt ;)
Gruß
Benhard
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.