Forum: Mikrocontroller und Digitale Elektronik Frage zu Timer / Uhr


von Wolfgang M. (wolfi_m)


Lesenswert?

Als Erstes ein freundliches 'Hallo' !

Denn dies ist mein erstes Post hier. Gelesen habe ich schon unzählige 
Male und mir immer wieder Tips usw. geholt. Danke!

Ich hab' schon einige Kleinigkeiten mit AVRs (Bascom) realisiert. Mit 
Meßwertaufnahme- und verarbeitung klappt's schon recht gut. Mit Timer / 
Uhr hab' ich noch wenig bis keine Erfahrung.

Nun zur Frage :

Ich möchte ein etwas komplexeres Ding bauen, einen Meßwertelogger (2 x 
analog, 4 x digital).

- 1284P
- Grafikdisplay 128 x 64 zum Anzeigen der Kurve(n)
- Textdisplay 20 x 2 zum Anzeigen von Meßwerten plus Einstellungsmenu
- Micro-SD zum Speichern der Daten

Nun hakt's schon am Beginn ...

Bascom schimpft ".. not supported for the selected micro .."
Wenn ich das "m1284pdef.dat" auskommentiere und $regfile = "m103def.dat" 
aktiviere ging's ?!?!

Der 1284P sollte "Config Clock = Soft" ja ebenso können, der hat ja 
denselben asynchron Timer(2) (Uhrenquartz an TOSC1 und TOSC2).

Nach Stunden 'Datenblatt', 'Google', 'Foren', ...

Wo liegt mein Fehler ?


 ==============================
'         Datenplotter
' mit Speicher auf MicroSD-Karte
' ==============================
'
$regfile = "m1284pdef.dat"
' $regfile = "m103def.dat"
$crystal = 8000000
$hwstack = 100
$swstack = 100
$framesize = 100

' Uhr konfigurieren
Config Date = Dmy , Separator = .
Config Clock = Soft , Gosub = Sectic

Dim Puls As Bit
Dim I As Byte

Do
  If Puls = 1 Then
  PORTB.1 = 0
  Else
  PORTB.1 = 1
  End if
  ' Weiterer Programmablauf (derzeit nix)
Loop

Sectic:
  Toggle Puls
Return

von spess53 (Gast)


Lesenswert?

Hi

>Wenn ich das "m1284pdef.dat" auskommentiere und $regfile = "m103def.dat"
>aktiviere ging's ?!?!

Das sind aber zwei komplett verschieden Controller. Der ATMega103 ist 
der älteste ATMega und noch nicht einmal einen Hardwaremultiplizierer. 
Außerdem ist beim ATMega103  PortC nur Ausgang und PortF nur 
Analogeingang.

Wenn BASCOM das weiß, hast du nicht nur ein Problem Problem.

Vielleicht hilft ein Update. Oder nimm einen ATMega644p (falls BASCON 
den kennt).

MfG Spess

von Wolfgang M. (wolfi_m)


Lesenswert?

Hi !

Den 103-er verwende ich ja nicht, sondern eben den 1284P. Das 
"m103def.dat"
 verwendete ich nur zum Probieren.

Was kann DER (103), was ich nicht kann (1284P)? - ;-)

Grüße

von Karl H. (kbuchegg)


Lesenswert?

> Was kann DER (103), was ich nicht kann (1284P)? - ;-)

Falsche Frage.
Richtige Frage: Wird das auch von BASCOM unterstützt.

Zur Not kann man auch in Bascom immer noch direkt an die 
Konfigurationsregister ran und die Bits selber setzen.

von spess53 (Gast)


Lesenswert?

Hi

>Was kann DER (103), was ich nicht kann (1284P)? - ;-)

Es ist eher umgedreht. Irgendwie scheuen die BASCOM-Jünger Datenblätter 
wie der Teufel das Weihwasser.

MfG Spess

von Wolfgang M. (wolfi_m)


Lesenswert?

Danke für die umfangreiche Hilfe !

Wie ich oben schrieb :

".. Stundenlang ..."

von spess53 (Gast)


Lesenswert?

Hi

>Wie ich oben schrieb :

".. Stundenlang ..."

Und da hast du auch gemerkt, das zB. die Registeradressen von PortB beim 
ATMega103 auf anderen Adressen liegen wie beim ATMega1284P?

MfG Spess

von Jonathan S. (joni-st) Benutzerseite


Lesenswert?

spess53 schrieb:
> Es ist eher umgedreht. Irgendwie scheuen die BASCOM-Jünger Datenblätter
> wie der Teufel das Weihwasser.

Ich nicht! ;)


@TO:

Der Mega103 (Gammel-Teil) ist von der Hardware her völlig anders 
aufgebaut, als der Mega1284P (Neu). Der Mega1284P hat völlig andere 
Register, andere Hardware-Einheiten usw. als der Mega103. Das ist so, 
als wenn Du einen alten Z80 mit einem Intel Pentium vergleichst und dich 
dann fragst: "Wieso kann der Z80 nur ein paar Megahertz, der Pentium 
kann doch auch über 2GHz!". Außerdem würde ich für einen Sekundentakt 
den Timer2 im asynchronen Modus benutzen, und nicht "Config Clock ...". 
Benutze doch "Config Timer2 = ..." und bringe den Timer in den 
asynchronen Modus (Uhrenquarz nicht vergessen). Dann hast Du einen 
ziemlich genauen Sekundentakt. Außerdem solltest Du dir mal das 
Datenblatt vom Mega1284P anschauen ;)! Die Register Description zu den 
einzelnen Hardware-Einheiten reicht meistens völlig, um die Hardware in 
Gang zu bringen.


Gruß
Jonathan

von Wolfgang M. (wolfi_m)


Lesenswert?

Entschuldigt bitte meine Frage !!

von spess53 (Gast)


Lesenswert?

Hi

Nur zur Information: Bei MCS ist der ATMega1284P in der Liste der 
unterstützten Chips.

MfG Spess

von Karl (Gast)


Lesenswert?

Ist das die Vollversion von BASCOM? Die Demo-Version ist oftmals 
veraltet und verhält sich anders. Die Vollversion sollte man 
gelegentlich auf den neuesten Stand bringen.

Die "Clock = Soft" kann man als Sekundenzähler nehmen; eleganter ist ein 
Timer. Da so ein Datenlogger oftmals Datum und Zeit mit abspeichern 
soll, ist "Clock = Soft" schon ok.

von Jonathan S. (joni-st) Benutzerseite


Lesenswert?

Wolfgang Müller schrieb:
> Entschuldigt bitte meine Frage !!

Nee, nee, es ist doch in Ordnung, wenn Du fragst! Brauchst dich doch 
nicht dafür zu schämen ;)
Jeder hat mal angefangen. Was meinst Du, mit was für "dämlichen" Fragen 
ich hier vor einem Jahr angekommen bin :)

Also benutze doch einfach "Config Timer2 = Timer, Prescaler = xx, Async 
= On" mit dem entsprechenden Interrupt. Dann wird's wohl funktionieren.


Gruß
Jonathan

von Wolfgang M. (wolfi_m)


Lesenswert?

Jonathan Strobl schrieb:
> benutze doch einfach "Config Timer2 = Timer,

Also ich wollt's mir halt einfach machen. Mit "Clock = Soft" spart man 
sich einen ganzen Rattenschwanz an Code bzw. 'configs' bzw. 
Deklarationen.

In "C" wär's ja auch recht unklug, auf "printf" zu verzichten und alles 
was da im Hintergrund an Formatierung und Arithmetik automatisch 
abläuft, selbst zu programmieren.

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.