Hallo zusammen,
Ich benötige einen möglichst kleinen Mikrocontroller mit integriertem
8Mhz Quarz und 16 bitte Timer.
Ich habe mir ein Bascom Programm zur servoansteuerung überlegt, mit
welchen ich die drehgeschwindigkeit über zwischenpositionen bestimmen
kann.
Dazu habe ich den attiny24 gefunden, der einen 16bit Timer hat.
Allerdings habe ich eine Frage:
Die Werte des 16bit Timers müssen vorher in variablen gespeichert
werden.
Kann ich 16bit variablen in einem 8bit prozessor ablegen?
Mit freundlichem Gruß,
Philipp
> Kann ich 16bit variablen in einem 8bit prozessor ablegen?
Selbstverständlich. Alles eine Frage der Interpretation der
Repräsentation der Information.
Wie wäre es, du schaust zuerst mal in die sprachlichen Grundlagen deines
Compilers. Welche Variablen können benutzt werden und welche Bereiche
decken die jeweiligen Variablen ab?
Word kann z.B. bis 65535, Integer aber nur die Hälfte dieses Bereiches
weil es positive und negative Anteile geben kann. Integerzahlen bis
65000 sind also nicht möglich, höchstens bis zur Hälfte von 65535. +-
37767.
igge schrieb:> Wie wäre es, du schaust zuerst mal in die sprachlichen Grundlagen deines> Compilers. Welche Variablen können benutzt werden und welche Bereiche> decken die jeweiligen Variablen ab?> Word kann z.B. bis 65535, Integer aber nur die Hälfte dieses Bereiches> weil es positive und negative Anteile geben kann. Integerzahlen bis> 65000 sind also nicht möglich, höchstens bis zur Hälfte von 65535. +-> 37767.
Um es besser zu verdeutlichen:
https://de.wikipedia.org/wiki/Integer_(Datentyp)#Maximaler_Wertebereich_von_Integer
Das was du suchst ist WORD, bzw. uin16_t, bzw. unsigned int.
Rene K. schrieb:> Das was du suchst ist WORD, bzw. uin16_t, bzw. unsigned int.
Und das soll es in Bascom geben?
Philipp schrieb:> ... ein Bascom Programm zur servoansteuerung
Philipp schrieb:> Ich benötige einen möglichst kleinen Mikrocontroller
Was soll den klein sein?
Gehäuse (Volumen oder Fläche)
Pinanzahl
Leistungsaufnahme
Kosten
Aussenbeschaltung
der Rest ergibst sich durch deine Softwareanforderungen
Es gibt auch 32 Bit µC die in den oben genannten Punkten so klein sind
wie 8 Bit µC
Hallo,
Wolfgang schrieb:> Rene K. schrieb:>> Das was du suchst ist WORD, bzw. uin16_t, bzw. unsigned int.>> Und das soll es in Bascom geben?
der Link zu den Bascom-Datentypen wurde doch schon oben gepostet...
@Markus (Gast): und warum soll er nicht einfach die Bascom-Datentypen
nehmen?
Noch als Hinweis an den TO: die AVR haben keinen "integriertem
8Mhz Quarz" sondern einen internen RC-Oszillator. Das kann bei
UART-Übertragung und Zeitgeschichten ein Problem sein, weil der
wesentlich ungenauer als ein Quarz ist.
Gruß aus Berlin
Michael
Guten Morgen,
erstmal danke für eure antworten.
Mit klein meine ich die Gehäusegröße, bzw. Pinanzahl und
Außenbeschaltung.
Es soll aber kein SMD sein..
Das Teil soll in eine Modellbahn eingebaut werden, in der es
Platzprobleme gibt.
Ich brauche (für 2 servos) aber 2 Eingänge + 2 Ausgänge
ISP-Fähig muss er auch sein.
Es müssen auch keine 8Mhz sein, aber 1Mhz ist etwas zu wenig.
Die Softwareanforderungen sind recht gering.
- Ein paar wenige if-bedingungen
- Addition in der timervariable (63.000 bis 65.000)
Im Datenblatt des tiny24 steht int. 8Mhz Quarz (wenn ich das richtig
gedeutet habe).
Welchen Controller schlagt ihr denn dafür vor?
Philipp schrieb:> Im Datenblatt des tiny24 steht int. 8Mhz Quarz (wenn ich das richtig> gedeutet habe).
Nein, das steht da nicht. Integriert ist ein RC-Oszillator, der auch mit
8 MHz betrieben werden kann, aber deutlich ungenauer ist als ein
quarzstabilisierter Oszillator. Einen Quarz kann man zur Stabilisierung
anschließen, damit aber belegt man zwei Anschlüsse am Controller.
Genauer Takt ist dann wichtig, wenn mit anderen Controllern über
asynchrone serielle Protokolle kommuniziert werden soll (UART, serielle
Schnittstelle), denn dann sind Abweichungen vom Solltakt potentielle
Datenfehler.
Wenn aber synchrone serielle Protokolle benutzt werden (SPI, I2C etc.),
ist das nicht relevant.
Philipp schrieb:> Kann ich 16bit variablen in einem 8bit prozessor ablegen?
8 bit bedeutet bei einem Prozessor lediglich, vereinfacht gesagt, dass
er gleichzeitig 8 bit innerhalb eines Taktes verarbeiten kann. Zum
Verarbeiten einer 16 bit Variablen braucht ein 8 bit Prozessor also
mindestens 2 Takte, das ist dann aber schon alles.
Der eingebaute RC Oszillator wird für Servosteuerung ausreichen. Der ist
vorkallibriert und kann über einen Registerwert nachjustiert werden.
Wenn die Modellbahn nicht gerade draussen bei Temperaturen von -20 ...
+40°C fahren muss dann reicht die Stabilität bei Zimmertemperatur dicke.
Wenn de Tiny24 passt dann nimm den doch, ansosten nach 'Atmel AVR
parametric search' suchen und etwas passendes auswählen.
Philipp schrieb:> Es müssen auch keine 8Mhz sein, aber 1Mhz ist etwas zu wenig.
ach? Woran machst du das aus? Welche rechen-intensive Dinge hast du denn
in deiner Eisenbahn vorgesehen?
Für einen oder zwei Servo anzusteuern kannst du das Ding zur Not auch
mit 100 KHz betreiben.
Wegstaben V. schrieb:> Für einen oder zwei Servo anzusteuern kannst du das Ding zur Not auch> mit 100 KHz betreiben.
Naja, mit 100kHz kann Dein Servo nur max 100 Positionen einnehmen. Aber
1MHz dürfte schon über der Genauigkeit des Servos liegen.
Man kann die Servopulse aber auch mit Delay erzeugen. Bei 2 Servos sind
das max 4ms mit 16ms Pause für die anderen Aufgaben. Dann geht auch ein
ATtiny25.
M. K. schrieb:> Peter D. schrieb:>> Naja, mit 100kHz kann Dein Servo nur max 100 Positionen einnehmen.>> Wieso das?
Timer mit 100kHz angesteuert ==> 10µs Auflösung
Servo min 1ms .. max 2ms ==> 1000µs Bereich