Forum: Mikrocontroller und Digitale Elektronik Integer bis 65.000 bei 8 Bit Mikrocontroller.


von Philipp (Gast)


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

von g457 (Gast)


Lesenswert?

> Kann ich 16bit variablen in einem 8bit prozessor ablegen?

Selbstverständlich. Alles eine Frage der Interpretation der 
Repräsentation der Information.

von Hp M. (nachtmix)


Lesenswert?

Philipp schrieb:
> Mikrocontroller mit integriertem
> 8Mhz Quarz

Gibt es so etwas überhaupt?

von igge (Gast)


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.

von Rene K. (xdraconix)


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.

von hp-freund (Gast)


Lesenswert?


von Wolfgang (Gast)


Lesenswert?

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

von Markus (Gast)


Lesenswert?

Du kannst einfach die "stdint.h" Datentypen verwendent:

https://en.wikibooks.org/wiki/C_Programming/C_Reference/stdint.h

also so:

#include "stdint.h"
1
int32_t x;
2
3
x=12345678;

von Volle (Gast)


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

von Michael U. (amiga)


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

von Rufus Τ. F. (rufus) Benutzerseite


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.

von Philipp (Gast)


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?

von Rufus Τ. F. (rufus) Benutzerseite


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.

von M. K. (sylaina)


Lesenswert?

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.

von Philipp (Gast)


Lesenswert?

Nachtrag:
Habe zwar interner Quarz geschrieben, wollte aber nur auf die int. 8Mhz 
verweisen.

von Johannes S. (Gast)


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.

von Wegstaben V. (wegstabenverbuchsler)


Lesenswert?

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.

: Bearbeitet durch User
von Peter D. (peda)


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.

von M. K. (sylaina)


Lesenswert?

Peter D. schrieb:
> Naja, mit 100kHz kann Dein Servo nur max 100 Positionen einnehmen.

Wieso das?

von Norbert (Gast)


Lesenswert?

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

von Philipp (Gast)


Lesenswert?

Danke für eure Antworten, werde das mit dem tiny24 in nächster Zeit mal 
testen.
Einen mit 8pin und 16bit Timer habe ich leider nicht gefunden.

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.