Integer bis 65.000 bei 8 Bit Mikrocontroller.

Gast #4761667
Lesenswert?

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
Gast #4761678
Lesenswert?

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.
#4761684
Lesenswert?

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.
Gast #4761719
Lesenswert?

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
#4761754
Lesenswert?

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
Persönliche Seite #4761759
Lesenswert?

Wolfgang schrieb:
> Und das soll es in Bascom geben?

http://avrhelp.mcselec.com/index.html?language_fundamentals.htm

Etwas nach unten scrollen bis zum Abschnitt "Elementary Data Types"
1
Byte      1 Byte     0 to 255
2
Integer   2 Bytes   -32,768 to +32,767
3
Word      2 Bytes    0 to 65535
4
Long      4 Bytes    -2147483648 to 2147483647
5
Dword     4 Bytes    0 to 4294967295

... und sich was passendes aussuchen.

Am Rande sieht man: Bascom kennt keinen vorzeichenbehafteten 
8-Bit-Datentyp.
Gast #4761761
Lesenswert?

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?
Persönliche Seite #4761766
Lesenswert?

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.
Gast #4761778
Lesenswert?

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.
#4761794
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren