Forum: Projekte & Code Einstellbarer Frequenzgenerator für 0.12 Hz - 8 MHz mit Atmega 8 und Bascom


von Arne G. (kywalda)


Angehängte Dateien:

Lesenswert?

Einfacher Frequenzgenerator für unter 5 Euro (nur Rechteck).

Im Schema ist ein Quarz eingezeichnet. Ich habe aber einen 3 poligen 
Keramik-Resonator mit 16 MHz verwendet (spart die Kondensatoren). Für 
den Quarzbetrieb müssen die Fuses angepaßt werden.

Der Generator schaltet Timer1 in den PWM Fast Mode mit TOP Wert im 
Register OCR1A (Mode 15).

Der Timer zählt dann bei jedem CLK eins hoch, bis TOP erreicht ist und 
ändert dann den Status vom Timerausgang OC1A. Dadurch wird eine 
Quarz-halbe Frequenz möglich.

Der Generator hat zwei Tasten, um den TOP-Wert zu vergrößern oder zu 
verkleinern. Umgekehrt ändert sich dann die Frequenz.

Wenn die Tasten länger gedrückt werden, vergrößert sich die Schrittweite 
(Schnellvorlauf).
Werden beide Tasten gleichzeitig länger als eine Sekunde gedrückt, 
schaltet sich der Generator von High auf Low und zurueck.

Dadurch wird der Prescaler von 1024 auf die Quarzfrequenz ein- und 
ausgeschaltet. Hiermit ist es möglich den großen Frequenzbereich 
abzudecken.

von siegmar (Gast)


Lesenswert?

Klasse Arne !!!!
Klein, aber fein !!
Vielleicht noch einen digitalen Frequenzzähler Eingang als Erweiterung ?

Noch einen schönen Tag
Gruß
Siegmar

von Arne G. (kywalda)


Angehängte Dateien:

Lesenswert?

Gute Idee,

da schau ich mal....

In dieser neuen Version wird die letzte Einstellung beim erneuten Start 
wiederhergestellt.

Falls sich im Betrieb die Einstellungen 10 Sekunden nicht ändern, wird 
diese im Eeprom gespeichert.

von Arne G. (kywalda)


Angehängte Dateien:

Lesenswert?

Oups - in der letzten Version habe ich vergessen, bei dem 
Eeprom-Data-Statement die Word-Variable als solche zu kennzeichen.
Es muss dort

Eeocr1a:
Data &HFFFF%

statt
Data &HFFFF

heissen.

von Arne G. (kywalda)


Angehängte Dateien:

Lesenswert?

Der Generator kann jetzt auch rudimentär Frequenzen zählen.

Danke Siegmar für die Idee.

Um in den Zählmodus zu gelangen, muss man beim Start die "Downtaste" 
gedrückt halten.

Der Zähler zählt dann für 2 Sekunden die Takte an PortD.5 (Pin 11 des 
Atmegas) und gibt das Ergebniss dann auf dem Display in Hz aus.

Dabei ist er erstaunlich genau: so 1% ungefähr. Bei hohen Frequenzen so 
ab 1MHz wird das allerdings schlechter.

von Manni (Gast)


Lesenswert?

Toller Beitrag --> simple und sehr effektiv.
Würde ihn noch heute Abend aufbauen, aber leider jedoch in Basic.
Wann wird diese Sprache denn endlich für tot erklärt ?

Gruß
Manni

von ... (Gast)


Lesenswert?

@Manni,

natürlich nicht, solange noch Lebenszeichen wahrnehmbar sind - und 
dieses Projekt ist ein kräftiges!

von Arne G. (kywalda)


Lesenswert?

Weniger ist mehr.

Die Ungenauigkeiten bei der Messung hoeherer Frequenzen lagen 
offensichtlich nicht an der Messung selbst, sondern daran, dass die 
Long- und Wordvariablen schlicht nicht gross genug für die Aufnahme so 
großer Zahlen waren.

Deshalb habe ich den Messzeitraum auf 1 Sekunde verkürzt (halbe 
Datenmenge). Der Erfolg kann sich sehen lassen:
Der Fehler liegt bei 4 Mhz immer noch unter 5%.
Ausserdem ist der Code etwas übersichtlicher und auf ein "FineTuning" 
kann jetzt auch verzichtet werden:
1
'------------------ Mode1 Frequenzzaehler -------------
2
Mode1:
3
4
' Timer1 als Counter einrichten
5
Config Portd.5 = Input : Portd.5 = 0
6
Config Timer1 = Counter , Edge = Falling , Prescale = 1
7
On Counter1 Ueberlauf Nosave
8
Enable Timer1
9
10
Do
11
Counter1 = 0
12
Overflows = 0
13
Enable Interrupts                           'Messung starten
14
Wait 1
15
Disable Interrupts                          'Messung beenden
16
Calclong = Overflows * &HFFFF
17
Frequenz2 = Calclong + Counter1
18
19
Print "f= " ; Frequenz2 ; " Hz"
20
Cls
21
Locate 1 , 1 : Lcd Frequenz2
22
Locate 2 , 1 : Lcd "Hz count"
23
Loop
24
25
End
26
27
Ueberlauf:
28
Incr Overflows
29
Return


Damit können Frequenzen von ca. 4 Hz bis 4 MHz recht genau gemessen 
werden.

PS. Bei meinem Lochrasteraufbau aus dem Foto ist die Empfindlichkeit des 
Eingangspins so gross, dass bei einer Berührung der allgegenwärtige 50 
Hz Elekrosmog gemessen wird...

von Avr N. (avrnix) Benutzerseite


Lesenswert?

Wenn du Lust hast kannst du gerne dein Projekt auf
http://www.comwebnet.de

veröffentlichen, Sind alles Bascom Projekte die Leben und zeigen das C 
nicht die einzige Sprache ist ;)

Infos noch hier:
http://comwebnet.weimars.net/index.php?option=com_content&task=view&id=5&Itemid=11

von kein_guter_nic_mehr_frei (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Arne,

wie geil ist das denn? Hab das ganze WE damit rumgemacht. Sowas hab ich 
gesucht. Danke.

Problemlos war die Sache nicht. Nachdem ich 'Nicht_BASCOM_Jünger' die 
IDE angeschmissen hatte gab's auch schon Gemecker bei der Deklaration 
von 'Ocr1a'. Was muss ich denn da einstellen, dass sowas nicht kommt? - 
Egal, wurde kurzerhand umbenannt. Weiter ging's mit den Tastern auf 
Int(). Mein Board(Microe Easyavr5) hat da die wildesten Sachen gemacht. 
Da war richtig Action auf'm Display... - hatte mir das Steckbrett 
dazugestellt und versucht zu entprellen, 2xC gegen plus und masse, noch 
nen R dran... ging dann so, war aber nicht sehr schön.

Dann hab ich alles umgebaut. Die Taster an normale Ports. Noch einen 
dazu für Low/High. Die Subs umgeschrieben(keine Ahnung von BASCOM - aber 
irgendwie ist alles gleich..), ein paar unnötige Variablen gekillt und 
für nen m88 mit 20MHz zurecht gemacht.(gibt es einen Q-Oszillator mit 
20,48MHz?) Mein Oszi zeigt mir bei 10MHz nen bescheidenen TTL-Pegel, ich 
werde versuchen eine Endstufe dranzuhängen.

Bild oben ist mein Versuchsaufbau. Alles kommt in ein kleines Gehäuse 
mit Batterie. Immer zur Hand um vergeigte Fuses zu richten :)

Vielen herzlichen Dank an 'Toolmaker' Arne - ich will mehr von son 
Zeuchs..

schöne Woche noch
bernd

von Avr N. (avrnix) Benutzerseite


Lesenswert?

Kannst ja mal deine Variante mal zeigen. Wegen den Fusebit reicht das 
hier auch
http://comwebnet.weimars.net/index.php?option=com_content&task=view&id=66&Itemid=49

oder nur ein Quarzoszilator.

von Arne G. (kywalda)


Lesenswert?

@bernd

> wie geil ist das denn? Hab das ganze WE damit rumgemacht. Sowas hab ich
> gesucht. Danke.

Das freut mich ja, dass das jemand gebrauchen kann ;-)

> Problemlos war die Sache nicht. Nachdem ich 'Nicht_BASCOM_Jünger' die
> IDE angeschmissen hatte gab's auch schon Gemecker bei der Deklaration
> von 'Ocr1a'. Was muss ich denn da einstellen, dass sowas nicht kommt? -

Da weiss ich auch nichts zu zu sagen - ging bei mir problemlos... Andere 
Version? Sind ja nur wenige Namen reserviert...

> Egal, wurde kurzerhand umbenannt. Weiter ging's mit den Tastern auf
> Int(). Mein Board(Microe Easyavr5) hat da die wildesten Sachen gemacht.
> Da war richtig Action auf'm Display... - hatte mir das Steckbrett
> dazugestellt und versucht zu entprellen, 2xC gegen plus und masse, noch
> nen R dran... ging dann so, war aber nicht sehr schön.

Da könnte ich mir vorstellen, dass dein Board die Tasten oder Eingänge 
extern High zieht.

Der Clou war ja gerade, die Tasten intern high auf einen Interrupt zu 
legen, um diesen Interrupt beim Auslösen (Kontakt mit GND) sich selbst 
abschalten zu lassen - sozusagen einen Selbstmord als Entprellung. Aber 
du hast es ja auch so hingekriegt, was sicher eine professionellere 
Lösung ist.

>
> Dann hab ich alles umgebaut. Die Taster an normale Ports. Noch einen
> dazu für Low/High. Die Subs umgeschrieben(keine Ahnung von BASCOM - aber
> irgendwie ist alles gleich..), ein paar unnötige Variablen gekillt und
> für nen m88 mit 20MHz zurecht gemacht.(gibt es einen Q-Oszillator mit
> 20,48MHz?) Mein Oszi zeigt mir bei 10MHz nen bescheidenen TTL-Pegel, ich
> werde versuchen eine Endstufe dranzuhängen.

Evtl. liegt das auch an deinem Board, das den Ausgangspin auch extern 
auf High oder Low zieht.

Bis 4 MHz habe ich noch den vollen Pegel mit Eingangsspannung. Nur bei 8 
MHz zeigt mein Oszi nur noch 4,5 der 6V an.

> Bild oben ist mein Versuchsaufbau. Alles kommt in ein kleines Gehäuse
> mit Batterie. Immer zur Hand um vergeigte Fuses zu richten :)

Viel Erfolg dabei und vielen Dank für dein Feedback,
arne

von siggo (Gast)


Lesenswert?

hallo arne
wirklich tolle arbeit hast du da
das ich mir nachbauen wollte allerdings gibt bascom mir beim 
convertriern
diesen fehler raus
Variable already dimensioned
"Dim Ocr1a As Word " sein schon dimensioniert wenn ich das richtig 
verstanden habe wurde die variable schon in deinem code definiert 
allerdings finde ich es nicht oder bin ich da auf dem holzweg
gruß
siggo

von Arne G. (kywalda)


Lesenswert?

Hallo siggo,

das war bernd ja auch schon passiert.
Vielleicht ist die Variable ja doch inzwischen reserviert... Ich benutze 
sie für den 16-bit Registerwert. Versuch doch bitte, die einfach an 
allen Stellen zu ersetzen, bspw durch "Vergleichsregister".

lg, arne

von Siggo (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Arne
Danke für die schnelle Antwort ich habe die Variable Ocr1a durch Ocr1a1 
im gesamten Code ersetzt. Jetzt meckert mein Bascom nicht mehr :-)
jetzt habe ich es auch mein Atmega8 aufspielen können, allerding 
Funktioniert es nicht so wie es sollte. Das ganze ist sehr träge wenn 
ich es einschalte kommt nach ca. 4sec. ein kleines p und danach geht es 
ca. 13.sec. bis auf der Anzeige 0,119209289 HZ Low steht.
wenn ich jetzt die Taste up oder down drücke geht garnichts.
kann es sein dass meine fusebit falsch eingestellt ist?
gruß
siggo

von Arne G. (kywalda)


Lesenswert?

Hallo Siggo,

ja - deine Fusebits sind nicht richtig fuer diese Anwendung. Sie sollten 
so sein:
1
1100 1001
2
1110 1111

Eine 1 bedeutet im Ponyprog KEIN Häckchen.
Eine 0 bedeutet ein gesetztes Häckchen.

Die beiden Zeilen stehen für die beiden UNTEREN Zeilen im Ponyprog, also 
von
RDISBL bis BOOTRST
BODLEVEL bis CKSL0

An der oberen Zeile braucht man eigendlich NIE etwas ändern.

lg,
arne

von Siggo (Gast)


Lesenswert?

Hallo Arne
Habe die Fiusebits so eingestellt wie du es gesagt hast jetzt zeigt das 
lcd beim einschalten nur noch ein p und bleibt so stehen
gruß
siggo

von Siggo (Gast)


Lesenswert?

ich verstehe es Ehrlich nicht habe es gerade aus meinem evaluierungs 
boad rausgenommen und auf meine platiene gesteckt und jetzt geht es 
warum auch immer :-) jetzt macht es wieder spaß gruß
siggo

von Siggo (Gast)


Lesenswert?

hallo ich noch einmal
wie bekomme ich eigenlich die erzeugte frequenz rauß
habe es so probiert aber es klappt nicht
Config Pinb.0 = Output
pinb.0 = frequenz
kann mir da jemand helfen
gruß
siggo

von kein_guter_nic_mehr_frei (Gast)


Lesenswert?

Hallo Siggo,

du musst PinB.1 nehmen, weil da der Ausgang von Timer/Counter 1 liegt.

von Siggo S. (siggo)


Lesenswert?

danke hat geklappt
gruß
siggo

von Bernd S. (wird_schon)


Angehängte Dateien:

Lesenswert?

Hallo alle,

ich habe versucht das mal nach C umzuschreiben. Es wäre schön wenn mal 
ein Profi nen Blick draufwerfen könnte. Bin da in der Syntax noch nicht 
fit.

Grundfunktion wie gehabt, mega88 mit 20MHz, 3 Taster an C0/1/2, Ausgang 
an B1, Hintergrundbeleuchtung LCD (mit transistor) an B3.

Ich habe vor das Ganze auf eine Platine zu bringen und in ein kleines 
Gehäuse einzubauen. Batteriebetrieben.

von Henrik W. (mookoo)


Angehängte Dateien:

Lesenswert?

Hallo allerseits,
ich hab mich als relativer AVR Neuling mal an diese Schaltung rangetraut 
und bin nun leider an einem Punkt, wo ich nicht weiter komme.
Beim Anmachen der Schaltung blinkt ein Cursor 2x an der 2. Position in 
der ersten Zeile und dann passiert nix weiter, außer, dass das LCD mit 
einem wandernden Flackern auf die Tasten reagiert (man sieht also, dass 
sich an sich was tut).
Auch wenn die Schaltung etwas chaotisch aussieht, denke ich, dass ich 
alles Richtig gebaut hab. Die einzige Veränderung meinerseit ist, dass 
ich einen Quarzoszillator (auch 16Mhz) nutze.
Kompilieren und Flashen war überhaupt kein Problem.
Die Fusebits sind:
1100 1001
1110 0000
Die 0000 weges des Oszillators.
Da ich grade überhaupt keine Idee mehr habe, woran es scheitert, würde 
ich mich über Input jeder Art sehr freuen!

Dank im Vorraus!
Henrik

von Arne G. (kywalda)


Lesenswert?

Hallo Henrik,

kann es sein, dass dein ext-osci nicht richtig angeschlossen ist? Auf 
dem Foto sieht es aus, als sei Pin 9 (XTAL1) nicht belegt. Dies ist der 
Eingang für eine externe Clock.

lg,

arne

von Henrik W. (mookoo)


Lesenswert?

Hallo Arne,
danke ersteinmal für die Antwort!
XTAL1 sollte über das lange, quer liegende, orange Kabel (und weiter 
durch braun, grau, gelb) an Pin 8 vom Oszillator angeschlossen sein - 
die Durchkontaktierung hab ich hier, wie auch an allen anderen Stellen 
getestet. XTAL2 ist nicht belegt - das sollte ja aber beim einem 
Oszillator so richtig sein?! Kann es vielleicht sein, dass die Leitung 
zum Quarz zu lang ist und sie einen zu hohen Widerstand bzw. 
Eigenkapazität hat?

LG, Henrik

von Bernd S. (wird_schon)


Lesenswert?

Hallo Henrik,

dieses 'Verrückspielen' auf dem LCD hatte ich auch. Schreib nach dem 
Init erstmal was auf's LCD und nimm alles Weitere raus. Damit dieses 
Thema erstmal erledigt ist.

Dann schauen wir weiter.

von Wolfgang S. (wsm)


Lesenswert?

Welche Frequenzstufen hat der Generator?

W.

von Avr N. (avrnix) Benutzerseite


Lesenswert?

Ist es eigentlich möglich die eingestellt Frequenz mit diesen 
Frequenzzähler zu messen?

von Henrik W. (mookoo)


Angehängte Dateien:

Lesenswert?

Hallo Bernd,
das Schreiben auf das LCD funktioniert super - ich hab mit einem anderen 
Atmega, der auf interne Clock gestellt ist mal versucht was auszugeben 
und siehe da (oder siehe Bild) - das funktioniert - Ich werde mal den 
Oszillator gegen einen normalen Quarz tauschen - vielleicht ist das die 
Quelle allen Übels...
Wenn noch weitere Ideen vorhanden sind, immer her damit :)

LG,
Henrik

von Bernd S. (wird_schon)


Lesenswert?

Hallo Henrik,

bei mir sitzt der Oszillator näher drann. Hab jetzt so in etwa den 
finalen Aufbau und bin gerade beim Platine malen.

Ich hatte am Anfang Probleme mit den Tastern. Das Ding ist 
unkontrolliert hoch und runter gelaufen.

von Manfred H. (manfred8bm)


Lesenswert?

Hallo Arne,

ich komme nicht drum rum mich zu bedanken.

Ich habe heute ein Behelfsboard umgestrickt.

Anzeige auf dem Display klappte fast sofort,
als ich endlich eingesehen habe das das erste
Display offensichtlich einen Schuss hatte.
(Sind alles recycled aus alten Telefonen (2*24....
Eine gewisse Hürde war dann noch der Output......
Den habe ich ums verrecken nicht aus portb.0 rausbekommen.....

Sollte ja auch Portb.0 sein....und siehe da,
kaum macht man es richtig und es geht.


Es war mir ein besonderes Vergnügen das Gerätchen mal zusammenzubraten.

Das ist ein tolles Gerät, das auch noch in ein Gehäuse kommt.

Ich sage mal einfach Danke !

mit freundlichem Gruß

Manfred8bm

von Andreas L. (andreasl)


Lesenswert?

Hallo,

ich hab den Generator auf meinem Pollin Board zusammen gesteckt, 
funkioniert auch gut. Die Sprünge sind ein bischen grob, z.b. 4 Mhz 
"Step" 8Mhz. Ist das so ok? Auch die letzte Einstellung wird nicht 
speichert und fängt immer ganz unten an.

Gruß
Andreas

von Andreas L. (andreasl)


Angehängte Dateien:

Lesenswert?

Hallo,

mit dem Autospeichern hat sich erledigt. Ich hatte mich mit den Fuses 
vertan.
Ich benutze das AVR Studio zum Brennen und habe die Einstellungen als 
GIF beigefügt.

Gruß
Andreas

von Andreas L. (andreasl)


Lesenswert?

Hallo,
manchmal sind die Speicherwerte wieder weg. Hat jemand diesen Effekt 
auch?

Gruß
Andreas

von Bernd S. (wird_schon)


Lesenswert?

Hallo Andreas,

ich benutze ein anderes Brennprogramm, hab aber die Option 'Eesave' 
angekreuzt. Außerdem kann ich das so einstellen, daß ich nur CODE 
programiere und kein DATA. Probier das mal aus.

von Philipp S. (Gast)


Lesenswert?

Hallo alle zusammen
cooles Projekt!
kann dieser Frequenzgenerator auch als Oszilator benutzt werden?
wenn ja muss das ganze potensialfrei aufgebaut werden?
grins (atmels sollte man glaube nicht übertakten) grins
schönen feiertag noch

von Kay R. (trafowickler)


Lesenswert?

Nettes Gerätchen!
Ich habe es auch nachgebaut und es hat auf Anhieb funktioniert. Bei mir 
läuft es auf 8Mhz intern, da ich noch auf mein Reichelt - Paket mit dem 
Quarz warte. Aufgebaut habe ich es auf LR - Platte (genau so groß wie 
das Lcd) mit dem LCD "Huckepack" obendrauf. Morgen kaufe ich mir ein 
Gehäuse dazu. (Das Teil ist so gut, das es ein schönes mit Lcd - Rahmen 
verdient!)

Gibt es eig. mittlerweile eine neue oder bessere Softwareversion? (Mich 
interessiert aber nur Bascom, vom Rest habe ich leider "0"Plan!)
Gruß Kay

von Erba57 B. (orfix) Benutzerseite


Angehängte Dateien:

Lesenswert?

hallo  Arne,

super programmm, funktioniert auch alles nur sporadisch werden am lcd 
wirre zeichen angezeigt, an der Serielle ausgabe ist die frequenz noch 
ok nach einen reset funktionierts wieder. Auch das abspeichern der 
Frequenz geht nicht, serielle sagt "save" aber nach ein / aus ist wieder 
die 0,239..Hz

möchte es nun auch auf einen atmega 32 brennen.
leider hab ich ein problem mit den timern, neuer ausgang ist doch dann 
D5 oder?

kannst du mir weiter helfen?

mfg

von Bernd S. (wird_schon)


Lesenswert?

Hallo,

ja OCR1A ist D5 beim mega32.

Ich hätte hier für mega48/20MHz und LCD 2x16/4-bit das Programm in 
Bascom mit Speichern aller Werte, LCD-Kontrast in Software, 
LCD-Backlight-Fade, 3 Taster für Up/Down/ChangeFlag. Schaltplan für 
Batteriebetrieb (4xMignon) flattert auch noch irgendwo rum.

von Erba57 B. (orfix) Benutzerseite


Lesenswert?

hallo  Bernd,

kannst du mir was zukommen lassen?

mfg

von Bernd S. (wird_schon)


Angehängte Dateien:

Lesenswert?

..leider völlig undokumentiert.

Timer0 ist für PWM Backlight, 1 für den Generator, 2 zum speichern der 
Werte und Ausschalten der Hintergrundbeleuchtung.
LCD in 4-bit auf D, 3 Taster an C3, C4, C5 zum hoch/runter und Flag. 
ausserdem wenn Flag und hoch/runter wird der Kontrast für's Display 
eingestellt (bei Batteriebetrieb von Vorteil). Alle Werte werden nach 
gewisser Zeit gespeichert. die Schritte hoch/runter erhöhen sich, wenn 
man langer drückt.

Wenn du Fragen hast versuche ich mich weiter. Muss da selber erstmal 
sehen, was ich geschrieben habe.. ;)

von Erba57 B. (orfix) Benutzerseite


Lesenswert?

hallo Bernd,

danke für dein mühe,

bei compile kommt "bootloader to long"


mfg

von Bernd S. (wird_schon)


Angehängte Dateien:

Lesenswert?

Irgendwas ist schief gelaufen. Bei mir kommt derselbe Fehler. Ich hänge 
die jetzt nochmal ran. Habe es eben nochmal kompiliert (Flash used: 
98%). Dazu mal das Hex-File. Mal sehn..

Edit sagt: schalte mal die Optimierung ein. (Output - Optimize Code)

von Erba57 B. (orfix) Benutzerseite


Lesenswert?

hallo Bernd,

danke für dein mühe,

leider das gleiche problem, hex nützt mir nichts hab einen atmega 32

mfg

von Klaus L. (Firma: Rentner) (veryoldman)


Lesenswert?

Hallo Leute,
tschuldigung, dass ich diesen Fred nochmal Aufleben lasse aber ich habe 
den Beitrag erst vor kurzem entdeckt. Sowas hab ich schon länger gesucht 
und hab ihn sofort in die Tat umgesetzt. Ich habe ein 20 x 4 Display an 
dem Mega8 angeschlossen. Mir fiel als Erstes auf, dass beim Hochzählen 
(Taste Up gedrückt) ziemlich große Sprünge (128030) gemacht werden! Ist 
das richtig? Ferner funktioniert das Abspeichern der letzten Einstellung 
nicht. Kann es richtig sein, dass bei dem Setzen der Fuses EESave nicht 
gesetzt werden muss? Meine Fuse Bit Einstellung : High = 0xC9, Low = 
0xEF . Ansonsten scheint alles zu Laufen.

Gruß
Klaus

von Michael D. (mike0815)


Lesenswert?

Hi...

schade, das dieses kleine Projekt nicht weitergeführt wird, gerade als 
es interessant wurde und es noch einige Bugs zu bereinigen gäbe...:-(

Gruß Michael

von Joe (Gast)


Lesenswert?


von Michael D. (mike0815)


Lesenswert?

nun ja, da geht es leider auch nicht viel weiter, schade!

Auch ich habe das Teil mal auf dem Breadboard aufgebaut und bin 
begeistert, was man aus so einem mega8 alles rausholen kann, ist schon 
beachtlich!
Das Rechteck ist bei 8MHz noch erstaunlich gut und die Frequenz bleibt 
absolut stabil.
Die Flanken können sich auch sehen lassen, bei Gelegenheit lade ich mal 
ein paar Oszimessungen hoch.

Die Idee wäre vielleicht noch eine Sweepfunktion mit einzubauen, wie 
wär's?

Gruß Michael

von Michael D. (mike0815)



Lesenswert?

Hi,

Hier mal die versprochenen Shots vom DSO.
Ich habe mal ein wenig experimentiert, da ich den Mega8 gerade mal 
verfused hatte (statt Crystal/Resonator), habe ich aus Versehen auf 
External gedrückt.
Da bot sich gerade die Gelegenheit ein wenig mit den Oszillatoren zu 
spielen...

1.Foto  16MHz Quarz mit 2x12pF
2.Foto  25MHz Oszillator...macht er locker mit!
3.Foto  28.322MHz Oszillator, hatte ich gerade da.
4.Foto  40MHz Oszillator, bis dahin ging er noch, das Display hat's aber 
nicht mehr mit gemacht, war klar!

Der Mega8 wurde dabei nicht mal warm.
beim 40MHz Oszi, bekam er etwas Temparatur.
Fazit: Bis 30MHz, könnte man den Mega8 takten, d.h. man könnte eine 
Frequenz von 15MHz mit einem akzeptablen Rechteck generieren.

Vielleicht möchte ja Jemand mal die Software dafür anpassen?
Arne wie wär's, ist ja dein Projekt?!?

Gruß Michael

von Charly B. (charly)


Lesenswert?

Toll gemacht Michael,

haste bei 40Mhz den Source mit $crystal = 40000000 neu kompiliert ?
denn damit werden auch die 'waits' fuer die LCD ausgabe berechnet


vlG
Charly

von Michael D. (mike0815)



Lesenswert?

Hi Charly, (war das jetzt Zynismus oder ehlich gemeint?) :-))

40MHz sind wohl doch etwas oversized, da streikt das Programm sowie das 
Display...zuviel des Guten. 30MHz ist die oberste Grenze nach meinen 
Tests zu urteilen!

Ich habe mal einen Oszilator(osc) mit 28.3220MHz, hatte ich gerade da, 
in den Takteingang des mega8.
Programmieren kann ich garnicht, mit Bascom ist es wohl nicht so 
schwierig, ist für mich aber trotzdem edwas undurchsichtig...egal...ich 
habe die Oszilatorfrequenz mal im Code angepasst und dann kompiliert.
Hat alles prima geklappt, das Display zeigt die exakten Werte an, ich 
bin begeistert!
Der mega8 bleibt eiskalt, muß also kein Kühlblech drauf :-)))

Mich würde jetzt interessieren ob die Frequenzmessung über 5MHz geht, 
vielleicht testet das mal Jemand?
Anbei mal die compilierte --bas-- und eine --hex-- mit 28322000Hz Takt, 
ist ja leicht anzupassen für 30MHz (dann hat man auch glatte Werte)

Gruß Michael

von Charly B. (charly)


Lesenswert?

Moin Michael

das war ganz ehrlich gemeint, wenn jemand sich die Arbeit macht
und das auch noch f. andere veroeffentlicht ist das doch eine
annekennung wert, wenn i was zu mekkern habe mach ich das auch
so ('ohne filter') das man es versteht :)

leider hab i im moment keine Zeit sonst wuerd i mit eimem
M88 das auch mal aufbauen, kommt aber bestimmt bald da i
ein sehr aehnliches projekt fast fertig habe, event. fliesen
hiervon die ein oder andre Idee dort mit rein.

vlG
Charly

von Michael D. (mike0815)


Lesenswert?

Hi Charly,

...ich habe hinter diese Bermerkung auch ein breites Lächeln hinterlegt.

Und stimmt, habe die ganze Nacht herum experimentiert und nur 4Std. 
Schlaf gehabt, hat aber Spass gemacht!
Natülich teile ich das gerne mit, denn Andere sollen ja auch was davon 
haben!
Kritik, Anregungen, sind doch immer willkommen, oder?

Ich finde die Kompilierung für den mega48-88 sehr komfortabel, könnte 
die mir Jemand für den Mega8 umprogrammieren?

Als nächstes nehme ich mir den mega88 vor, mal sehen, was da so geht.
Steht immer noch die Sweepfunktion im Raum, hast du (Charly) dazu eine 
Idee?

Noch was, man könnte doch das Ausgangssignal des mega8 in einen Sinus 
verbiegen aber da ist wohl bei 200kHz ende.

Gruß Michael

von Michael D. (mike0815)



Lesenswert?

Hi,
ich wollte einmal die Qualität der Ausgangs-Signale dokumentieren.
Getestet habe ich mit 1kHz am Osciloskope.

Verwendet habe ich 20MHz Quarze von unterschiedlichen Herstellern, 
jeweils mit externen Kondensatoren(22pF) und ohne, bzw. wurden die 
internen 36pF des mega8 aktiviert.
Die Ergebnisse sind erstaunlich, die Screenshots sind selbsterklärend, 
denke ich.

Gruß Michael

EDIT: Shot 3 u. 4 sind Quarze mit einer deutlich besseren Qualität

von Thorsten F. (tfol)


Lesenswert?

Hi,

gibt es eine einfache Möglichkeit das Tastverhältnis zu ändern?
50:50 ist für mich nicht ideal.

Ich benötige z.B.
1µs an und 100µs aus
21µs an und 74µs aus
8µs an und 85µs aus

ich mache es bisher mit PWM, aber da kann ich nur bestimmte Werte 
festlegen.

Habt ihr einen Tip wie ich es einfach mit Bascom realisieren kann?

Gruß
Thorsten

von Michael D. (mike0815)


Lesenswert?

Hi,

@Thorsten F.
> gibt es eine einfache Möglichkeit das Tastverhältnis zu ändern?
> 50:50 ist für mich nicht ideal.

Wäre ganz chic.
Möglich ist das bestimmt, nur wie man das realsiert, können nur die 
Programmierer beantworten.

Edit: das Abspeichern in das Eprom geht wohl von statten(im Display tut 
sich wohl was), leider werden die Frequenzeinstellungen nicht mit 
übernommen, nur LOW oder HIGH, könnte das man mal fixen?

Der Frequenzähler ist auch nicht sehr genau, mal zeigt er zuviel, mal zu 
wenig an...kann das Jemand bestätigen?

ansonsten, wünsche ich noch eine erfolgreiche Woche,

Gruß Michael

von Michael D. (mike0815)


Angehängte Dateien:

Lesenswert?

hm, die Resonanzen halten sich sehr in Grenzen, schade eigentlich!

Ich  habe mal von dem Speicherproblem der letzten Frequenzeinstellung 
einen Shot von der Terminalausgabe gemacht.
An der drittletzten Zeile kommt "saving..." ,  nach einem Reset wird die 
letzte Einstellung leider nicht gespeichert, wie man sieht.
Da meine Programmierkenntnisse nicht der reisser sind, stehe ich jetzt 
wohl ein wenig auf dem Schlauch...

Gruß Michael

von Arne Groh (Gast)


Angehängte Dateien:

Lesenswert?

@tfol
eine Version mit einstellbarem Tastverhältniss hatte ich mal gemacht. 
Leider habe ich den Quellcode verloren. Das HEX konnte ich aber noch 
auslesen - grrr.

Zum Einstellen des Tastverhältnisses, beim Boot beide Taster gedrückt 
halten.

lg,
arne

von Peter Z. (flexopete)


Lesenswert?

Hallo Arne,

ist das hex-file für einen Mega8?
Kann es mit AVR-Studio nicht flashen.
Meldung: zu groß

Gruss
Peter

von Michael D. (mike0815)


Angehängte Dateien:

Lesenswert?

...stimmt, passt auch nicht mit Xtrem Burner!
Schade, hätte das gerne mal getestet.

Hat denn jemand mal eine Idee mit der Frequenzspeicherung???

Gruß Michael

von Arne Groh (Gast)


Lesenswert?

@flexopete
das HEX ist mit PonyProg gemacht und schließt den eeprom-Bereich mit 
ein, -glaube ich-. Daher die Größe. Ja - ist für dem Mega8 mit 16 MHz- 
Resonator, wie ganz oben im Schaltplan.

P.S. Es muss beim Boot die zweite Taste (und nicht beide) gedrückt 
werden, um in den Modus für das Tastverhältniss zu kommen.

@mike0815
benutzt du auch 16 MHz und den Mega8? Falls nicht, kann mir vorstellen, 
dass das Speichern ins eeprom nicht klappt, weil evtl. die Werte die 
max. Variablengröße (ich glaube ich nutz da ein WORD) übersteigen.

lg,
arne

von Charly B. (charly)


Lesenswert?

mueste M88 oder M168 sein

von Peter Z. (flexopete)


Lesenswert?

@arne
habe extra mal Ponyprog auf einem alten Win 2K Rechner installiert
und meinen DT006 Prommer entstaubt. Flashbereich geht, EEPROM bringt
write error.
Könntest Du bitte mal hex und eep separat auslesen.
Danke

Gruss
Peter

von Michael D. (mike0815)


Angehängte Dateien:

Lesenswert?

...also die Hex und die Bin lässt sich flashen, habe sie auch mit 
Ponyprog konvertiert, allerdings stimmt warscheinlich die Portzuweisung 
für das LCD-Display nicht, ist wahrscheinlich gespiegelt...

Gibt's denn da keine Asm?

Gruß Michael

EDIT. wieso kann ich die Hex hier nicht hochladen?

von Arne G. (kywalda)


Lesenswert?

@Michael:

Die Portzuweisung ist so: (also für die HEX und deine BIN - danke):

'Fuer Lochrasterplatine - weniger Kreuzungen:
Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.1 , Db6 = Portc.2 , 
Db7 = Portc.0 , E = Portc.3 , Rs = Portc.5

lg,
arne

von Thorsten F. (tfol)


Lesenswert?

Arne Groh schrieb:
Das HEX konnte ich aber noch auslesen - grrr.

@kywalda

danke, aber ich benötige es in meinem Bascom-Programm, da hilft mir die 
Hex nicht weiter. Ich muss mal schauen wie ich es selber geproggt 
bekomme, hast du evtl. einen kurzen Ansatz, wie du es gemacht hast? PWM 
scheidet ja wohl aus.

Danke
tfol

von Peter Z. (flexopete)


Lesenswert?

@Michael

Kannst Du mir die Hex mal mailen

Gruss
Peter

von Arne G. (kywalda)


Lesenswert?

@tfol

Der Ansatz liegt hier:

Ocr1bh = &B0111_1111 : Ocr1bl = &B1111_1111                 'Register 
fuer Tastverhaeltniss (16 bit Wert 50%)


Ist ja schon das Fast-PWM aus dem Atmel Mega8 Datenblatt. 16 bit 
Variable über die Taster ändern und dann in High- und LowByte aufteilen 
und in die beiden Register schreiben...

&H00 : &H01 -> kleinste mögliche HighTime
&HFF : &HFE -> größte Hightime
&HFE : &HFF -> genau die Mitte ;-)

viel Erfolg, arne

von Thorsten F. (tfol)


Lesenswert?

Danke dir arne.

Gruß
tfol

von Michael D. (mike0815)


Lesenswert?

@Arne,
...bitteschön, die Bin funktioniert?

> benutzt du auch 16 MHz und den Mega8?
Den Mega8 ja, Quarz 16MHz nein! Ich habe einen 20MHz drinnen, da geht's 
dann also bis 10MHz!
Ich hatte da schon 25, 28 und 30MHz getestet. Wie schon weiter oben 
beschrieben sind die 28MHz schon Grenzwertig(machen auch nicht alle 
mega8 mit) die 20MHz gehen aber locker und sehr stabil.

Die Frequenzmessungen sind aber sehr ungenau, egal welchen Takt ich da 
fahre...


@Thorsten,
wenn das mit dem Tastverhältin bei dir funzt, kannst du dann die fertige 
Bas hier rein setzen?

Btw. kleiner Vorschlag am Rande, wie wäre es mit einem Drehgeber zur 
Frequenzauswahl, fände ich praktischer, als die Tastendrückerei?!?

Gruß Michael

von Arne G. (kywalda)


Lesenswert?

Michael D. schrieb:
> @Arne,
> ...bitteschön, die Bin funktioniert?

Habe ich noch nicht probiert - muss ich gestehen ---

>
>> benutzt du auch 16 MHz und den Mega8?
> Den Mega8 ja, Quarz 16MHz nein! Ich habe einen 20MHz drinnen, da geht's
> dann also bis 10MHz!
> Ich hatte da schon 25, 28 und 30MHz getestet. Wie schon weiter oben
> beschrieben sind die 28MHz schon Grenzwertig(machen auch nicht alle
> mega8 mit) die 20MHz gehen aber locker und sehr stabil.
>

Die Erfahrung habe ich auch gemacht: 20 MHz sind für den Mega8 kein 
Problem ( 
http://code.google.com/p/leuchtkanister/source/browse/trunk/trunk/TCL5940_base.bas?r=6 
)

> Die Frequenzmessungen sind aber sehr ungenau, egal welchen Takt ich da
> fahre...
>

Nuja - für so ein Minial-Project sind 5% Abweichung m.M. nach noch ok.

>
>
> Btw. kleiner Vorschlag am Rande, wie wäre es mit einem Drehgeber zur
> Frequenzauswahl, fände ich praktischer, als die Tastendrückerei?!?
>

Würde halt den 5-€-Rahmen sprengen...

Hier habe ich mich aber auch mal an dem Pollin-Panasonic-Drehencoder 
versucht: Beitrag "Zeitauslöser für Casio EX F1 mit attiny2313"
Vieleicht kannst Du ja was mit dem Code anfangen...

lg,
arne

von Peter Z. (flexopete)


Lesenswert?

@Michael
ich habe die .bin ausprobiert, ging nicht. Deshalb
die Frage nach der .hex.

Gruss
Peter

von Michael D. (mike0815)


Lesenswert?

@Arne

> Nuja - für so ein Minial-Project sind 5% Abweichung m.M. nach noch ok.

ich sag' ja schonn nix mehr. ;-(

> Würde halt den 5-€-Rahmen sprengen...

nun ja, wenn man ein Display vom Reichelt nimmt, sind die eh längst 
überschritten!
...währe aber trotzdem sehr komfortabel
In deinem Link hast du einen Zeitauslöser für die Casio gebaut...also,im 
Programmieren bin ich nicht so bewandert, ein paar Kleinigkeiten gehen 
noch, dann hört's aber auch schon auf...bin dann auf Andere angewiesen, 
die das am besten können!

@Peter
Das ist jetzt aber ärgerlich, dachte die funzt! Dann müssen wir auf den 
Thorsten warten ;-|

Gruß, Michael

von Arne G. (kywalda)


Angehängte Dateien:

Lesenswert?

Ich habe mit meinem Ponyprog auch mal den Flashteil als BIN exportiert. 
Vielleicht geht der ja...

arne

von Thorsten F. (tfol)


Lesenswert?

@Michael D.
> @Peter
> Das ist jetzt aber ärgerlich, dachte die funzt! Dann müssen wir auf den
> Thorsten warten ;-|

Da ich aber gar keinen Frequenzgenerator wie in diesem Beitrag baue, 
sondern es für einen Pulsgenerator benötige der in meiner Schaltung 
kurze Pulsfolgen erzeugen soll, kann ich euch leider keinen 
Frqeuenzgenerator-Code mit Pulsfolge geben. Es ist bei mir nur eine 
kleine Funktion, die bestimmte feste Pulse ausgeben soll und ich habe 
mir hier einen Denkanstoss erhofft und erhalten. Weiter bin ich trotzdem 
noch nicht.

Gruß
tfol

von Peter Z. (flexopete)


Lesenswert?

@Arne

habe es jetzt hinbekommen, die .hex Datei (Flash+EEPROM) zu flashen.
Dazu musste ich in der Ponyprog.ini SPI langsamer machen. Flash und
EEPROM separat exportiert --> dann ging es auch mit AVR-Studio.
Takt wird ausgegeben und das Tastverhältnis lässt sich verändern.
Mega8 mit 12MHz. Allerdings bekomme ich keine Anzeige auf dem LCD.

Das LCD ist nach Deinem post vom 3.5. angeschlossen. Ist zwar
ein 16x2, aber irgendetwas sollte man doch sehen können oder
ist das timing völlig anders?

Gruss
Peter

von Arne G. (kywalda)


Lesenswert?

@ Peter

Ja - spielt eigendlich keine Rolle, ob 16 oder 8 Zeichen pro Zeile...

evtl. vergessen, den RW auf GND zu legen? Geht denn die Kontrastregelung 
über den Poti?

lg, arne

von Peter Z. (flexopete)


Lesenswert?

@ Arne

RW ist auf GND und die Kontrastregelung geht.

Gruss
Peter

von Arne G. (kywalda)


Lesenswert?

Tja dann scheint das Display doch sehr sensibel auf falsche Timings zu 
reagieren. Die HEX war ja für 16MHz kompiliert (und das LCD-Timing wird 
ja aus der $crystal-Frequenz berechnet)...

von Peter Z. (flexopete)


Lesenswert?

@ Arne

hab´s eben noch mal durchgeklingelt: die Verdrahtung passt
zu Deiner config LCDpin. Das Display läuft auch in einer anderen
Schaltung. Da in der ersten Zeile der Balken bleibt, wird es wohl
nicht initialisiert.

Gruss
Peter

von Peter Z. (flexopete)


Lesenswert?

@ Arne

sehe gerade, dass ich 12 MHz geschrieben habe. Richtig ist 16 MHz

Gruss
Peter

von Arne G. (kywalda)


Lesenswert?

Dann weiß ich auch nicht weiter. Habe gerade meine Schaltung noch mal 
durchgemessen und die Belegung aus meinem Post stimmt.

Kann ich mir nur noch mit einer kalten Lötstelle oder so erklären 8-((

Tut mir leid...

von Peter Z. (flexopete)


Lesenswert?

@ Arne

das Display läuft jetzt. Kaum macht man es richtig, da funktioniert es.
Hatte mein Standard LCD nach den Pinnummern auf dem Stromlaufplan vom 
Frequenzgenerator verdrahtet...

Nochmal danke für das Projekt.

Gruss
Peter

von Michael D. (mike0815)


Lesenswert?

Das mit dem speichern der letzten einstellung klappt jetzt auch. Grund 
war das Kompilieren mit Bascom Ver.2050 bei der aber der USB-Asp 
unterstützt wird, was bei der Ver.11183 leider nicht der Fall ist!
Also mit der Ver.11183 kompilieren und mit dem Xtrem-Burner über USB 
programmieren, dann bleiben die Frequenzeinstellungen erhalten.

Ich habe da mal ein Anliegen: Könnte man die Frequenzsprünge, die im 
Moment sehr groß sind, vor-u. rückwärts in 1MHz oder 500kHz unterteilen?

Gruß Michael

von Arne G. (kywalda)


Lesenswert?

Feste Frequenzänderungen sind in sofern nachteilig, weil ja auch 
niedrige Frequenzen einstellbar sein müssen (500 KHz wären hier fatal). 
Eine prozentuale Änderung halte ich deshalb für sinnvoller. Meine 
Konzept ist ein Kompromiss zwischen schneller Erreichbarkeit einer 
Wunschfrequenz und des breiten Bereichs....

Falls du noch eine gute Idee hast, wie man beide Ziele mit nur 2 Tasten 
besser erreichen kann, würde ich mich freuen!

von Michael D. (mike0815)


Lesenswert?

moin Arne,
ich meine nicht das Hochzählen zur Maximalfrequenz, das ist ja ok, so 
wie es ist.
Wenn z.B. die max.Frequenz 10MHz erreicht ist und man rückwärts geht, 
dann springt man ja auf 5MHz, 2,5MHz etc. und umgekehrt. Das man hier 
evtl. noch einen Taster einbaut, der die großen Sprünge in kleinere 
aufteilt, d.h. von 10MHz runter auf 9, 8 ,7 etc... wäre das machbar?

Der Mega8 Produziert so steile Flanken, man könnte glatt eine Sinus, 
Sägezahn, Dreieckgenerator damit steuern und man hätte einen schicken 
Funktionsgenerator

Noch ein Vorschlag für den Frequenzzähler: Wie wäre es mit einem 
Vorteiler 74F73(HC) oder 74F74(HC), zum messen von höreren Frequenzen? 
Im Moment geht's ja nur bis 3MHz und ein wenig Feintuning für etwas 
genauere Werte wäre auch von Vorteil?!?
Jetzt dreht er ganz durch...:-)) aber warum nicht weiter spinnen? ;-\

Gruß Michael

Gruß Michael

von MWS (Gast)


Lesenswert?

Michael D. schrieb:
> der die großen Sprünge in kleinere aufteilt, d.h. von 10MHz runter
> auf 9, 8 ,7 etc... wäre das machbar?
Hast Du denn jemals selber etwas mit Timern & AVR gemacht ? Dann würdest 
Du erkennen, warum es technisch nicht möglich ist kleinere Schritte 
auszuführen. Denk mal über die Werte von OCR1A bei der Maximalfrequenz 
und dann absteigend nach.

Ihr unterhaltet Euch ja gut und was Arne da programmiert hat trifft ja 
auch auf Gefallen, beweist dennoch Folgendes:
1) Jeder kann mit Bascom programmieren
2) Obwohl der Code schlichtweg grauselig ist, kann er funktionieren

Übrigens kann das Setzen des OCR1B entfallen, der hat hier keinerlei 
Wirkung da der OC1A Pin getoggelt wird, Disable/Enable Interrupts wird 
in einer Interruptroutine auch nicht gebraucht, denn das macht der µC 
von selbst.

von Michael D. (mike0815)


Lesenswert?

> Hast Du denn jemals selber etwas mit Timern & AVR gemacht ?

Ich bin dabei einigermaßen da durchzusteigen, sonst würde ich ja nicht 
fragen, ob es möglich wäre!?!

> Dann würdest Du erkennen, warum es technisch nicht möglich ist kleinere > 
Schritte auszuführen. Denk mal über die Werte von OCR1A bei der
> Maximalfrequenz und dann absteigend nach.

Dann kläre mich doch mal auf.

> 1) Jeder kann mit Bascom programmieren
> 2) Obwohl der Code schlichtweg grauselig ist, kann er funktionieren

Dann bring doch deine Verbesserungvorschläge mit ein, wäre eine 
Bereicherung für Alle!

von MWS (Gast)


Lesenswert?

Michael D. schrieb:
> Ich bin dabei einigermaßen da durchzusteigen, sonst würde ich ja nicht
> fragen, ob es möglich wäre!?!
Ok. Bei Prescaler 1, OCR1A als Topwert von Timer1 und OCR1A = 0 wird 
OC1A bei jedem µC-Takt getoggelt und gleichzeitig Timer1 auf 0 
zurückgesetzt, der kann also gar nicht hochzählen, sondern bleibt in 
diesem Fall immer 0. Durch das Toggeln entsteht eine Ausgangsfrequenz 
von µC-Clock / 2.

Bei OCR1A = 1 wird bei jedem zweiten µC-Clock zurückgesetzt und 
getoggelt, Ausgangsfrequenz ist dann µC-Clock  2  2, usw.
Daraus ergeben sich die möglichen Frequenzen und das ist auch der Grund, 
warum 9MHz mit dieser Methode nie erreicht werden können.

Michael D. schrieb:
> Dann bring doch deine Verbesserungvorschläge mit ein, wäre eine
> Bereicherung für Alle!

Ein paar Dinge hab' ich genannt, die rausgenommen werden können.
Aber "verbessern" bedeutet Bestehendes verändern, hier würd' ich dagegen 
empfehlen den Code komplett neu zu schreiben. Du bist offensichtlich 
zufrieden wie's jetzt ist und somit war das mein Hinweis, daß man sich 
diesen Code möglichst nicht als gutes Beispiel nimmt.

Z.B.: Tasterabfrage per Interrupt & Delay, brrr, da schüttelt's mich. 
Auch die Über-/Unterlaufbehandlung ist recht "interessant" :D
Aber, es scheint zu funktionieren und das fand ich beachtlich.
Codegewordene abstrakte Kunst sozusagen :-)

von MWS (Gast)


Lesenswert?

MWS schrieb:
> ...ist dann µC-Clock  2  2,...
Irgendwas hat da die Forensoft verwurschtelt.
Bedeutet: ...ist dann µC-Clock durch 2,...

von Michael D. (mike0815)


Lesenswert?

Hi,

> Ein paar Dinge hab' ich genannt, die rausgenommen werden können.
> Aber "verbessern" bedeutet Bestehendes verändern, hier würd' ich dagegen
> empfehlen den Code komplett neu zu schreiben. Du bist offensichtlich
> zufrieden wie's jetzt ist und somit war das mein Hinweis, daß man sich
> diesen Code möglichst nicht als gutes Beispiel nimmt.

Ich habe diesen Code nicht geschrieben, das ist Arnes Ding.
Zufrieden ist relativ... ich habe wenig Ahnung vom programmieren und muß 
es so nehmen, wie es ist! Ich kann eben nur Vorschläge machen oder Ideen 
einbringen, die Umsetzung zecks programmieren ist Anderen vorbehalten

Ich stelle mir das nicht einfach vor einen Code zu schreiben, dir 
scheint das wohl leichter von der Hand zu gehen...

Gruß Michael

von MWS (Gast)


Lesenswert?

Michael D. schrieb:
> ich habe wenig Ahnung vom programmieren und muß
> es so nehmen, wie es ist!

Versuch's halt zu lernen, ist nicht so schwierig. Wenn Du das nicht 
möchtest, dann musst Du natürlich nehmen was Du bekommst. So gesehen 
kannst Du mit dem was Du von Arne bekommen hast, durchaus zufrieden 
sein.

Michael D. schrieb:
> Ich stelle mir das nicht einfach vor einen Code zu schreiben, dir
> scheint das wohl leichter von der Hand zu gehen...

Es fällt mir nicht schwer. Nur gegen dieses Prinzip des Timers, d.h. der 
groben Frequenzauflösung bei kleinen Comparewerten, könnte ich auch 
nichts machen. Da ist's egal, wie der Code geschrieben ist  :D

von Arne G. (kywalda)


Lesenswert?

MWS schrieb :

> Z.B.: Tasterabfrage per Interrupt & Delay, brrr, da schüttelt's mich.

Habe da viel mit verschiedenen Debounce-Mechanismen rumprobiert und 
diese funktioniert sehr zuverlässig...

> Auch die Über-/Unterlaufbehandlung ist recht "interessant" :D

Danke!

> Aber, es scheint zu funktionieren und das fand ich beachtlich.
> Codegewordene abstrakte Kunst sozusagen :-)

Komme auch aus dem Kunstsektor - schön dass das mal jemand merkt ;-)

> Übrigens kann das Setzen des OCR1B entfallen, der hat hier keinerlei

Das Register brauche ich, um das Tastverhältniss festzulegen. (kann sein 
dass ich in diesem Code einen anderen PWM-Mode als später genutzt habe) 
Aber das ist ja schon alles sooo lange her----

> Disable/Enable Interrupts wird
> in einer Interruptroutine auch nicht gebraucht, denn das macht der µC
> von selbst.

Bist du dir da sicher? Ich glaube, die Interruptbedingung wird sonst bei 
jedem Takt neu abgefragt und der Interrupt wieder ausgelöst - auch wenn 
die Routine noch nicht beendet ist...

@Michael:
mit der Schrittweite an den Grenzbereichen hat MWS recht: Mit dieser 
Technik sind kleinere Schritte technisch nicht möglich.

von Michael D. (mike0815)


Angehängte Dateien:

Lesenswert?

Hi,

> mit der Schrittweite an den Grenzbereichen hat MWS recht: Mit dieser
> Technik sind kleinere Schritte technisch nicht möglich.

Ich sehe es ja ein! ;-/
Ich finde es trotzdem beachtlich, was hier geleistet wird...noch mal ein 
dickes Lob an dieser Stelle

Wäre trotzdem praktisch das Teil vor einen Funktionsgenerator zu 
schalten, die Abstufungen bis 1MHz sind ja akzeptabel.
Mal schauen, ob ich am We. dazu komme das mal mit einem XR2206 zu 
testen.
Wenn es Recht ist, werde ich dann darüber berichten


EDIT:
Jetzt wollte ich mal den Mega88 ein wenig quälen und die Freqgen48.bas 
von Bernd S. Kompilieren, da schreit Bascom:
Program will overwrite Bootloader(24 too long)

Jetzt habe ich 2 Versionen von Bascom und hatte mich noch mal mit der 
Ver.2050 versucht...siehe da, kein gepöpel, komisch, wieso sind die 
Versionen so unterschiedlich mit dem Kompilieren?
Hat denn Jemand mal die Schaltung mit dem mega44er bzw.88er aufgebaut 
und mit dem Programm getestet?


Gruß Michael

von MWS (Gast)


Lesenswert?

Arne Groh schrieb:
> Komme auch aus dem Kunstsektor - schön dass das mal jemand merkt ;-)
:D

> Das Register brauche ich, um das Tastverhältniss festzulegen. (kann sein
> dass ich in diesem Code einen anderen PWM-Mode als später genutzt habe)
> Aber das ist ja schon alles sooo lange her----
Im Mode den Du benutzt toggelst Du den Pin, da ist das Tastverhältnis 
immer 50/50.

Würdest Du mit COM1B0..1 und Mode 15 eine Fast-PWM auf OC1B legen, dann 
wäre nach wie vor das OCR1A der Top-Wert, würde also die Frequenz der 
PWM bestimmen, während OCR1B im Bereich von 0 bis OCR1A das 
Tastverhältnis einstellen würde.

> Bist du dir da sicher?
Yep, bin ich.

> wird sonst bei jedem Takt neu abgefragt und der Interrupt wieder
> ausgelöst - auch wenn die Routine noch nicht beendet ist...
Genau damit das nicht passiert, sind Interrupts in einer ISR automatisch 
gesperrt. Man kann sie allerdings gezielt freigeben, nennt sich "Nested 
Interrupts", das machst Du sogar unbeabsichtigt durch das Enable 
Interrupts am Ende der ISR.

Damit erlaubst Du bereits vor dem Opcode RETI (der am Ende der ISR 
steht) die Interrupts wieder. Würdest Du ohne Nosave arbeiten, würde das 
einen erhöhten Hardwarestackbedarf zur Folge haben.

Du hast übrigens noch Glück, daß Deine Hauptschleife so klein ist und 
die Register dort offenbar von den ISRs nicht betroffen sind, denn Du 
verwendest eben "Nosave", was Du im übrigen gar nicht brauchst.

Bei Nosave werden die µC-Register bei der Interruptauslösung nicht 
gesichert und Code in der ISR kann damit die Inhalte dieser Register 
zerstören. Kannst Du Dir ja ausmalen, was dann passiert.

Sollte die Hauptschleife also ein wenig umfangreicher werden, dann denk 
daran das richtig zu machen.

von Bernd S. (wird_schon)


Lesenswert?

Michael D. schrieb:
> Jetzt habe ich 2 Versionen von Bascom und hatte mich noch mal mit der
> Ver.2050 versucht...siehe da, kein gepöpel, komisch, wieso sind die
> Versionen so unterschiedlich mit dem Kompilieren?

Ich habe eine DEMO von Bascom auf dem Rechner. Ver 1.11.9.5. Und ja, der 
48er ist nahezu 'vollgequetscht'. Evtl. sind in anderen Versionen die 
vorgefertigten Routinen anders? Kein Plan.

von Michael D. (mike0815)


Angehängte Dateien:

Lesenswert?

moin Bernd,

meine Ver.2050 ist auch eine Demo, wie auch immer, muß man halt zwischen 
2 Versionen hüpfen, ist halt so, wie es ist!
Gestern Abend habe ich die Schaltung mit dem Mega88 aufgebaut mit der 
Frqgen48.bas vorher aber den mega88 eingetragen.
Das Teil funktioniert totschick.
Was bosonders gut gefällt, ist die automatische Kontrastregelung und die 
Hz, kHz, MHz Anzeige.
Praktisch fände ich noch nach jeweils 3 Stellen, einen Punkt zu setzen, 
zur besseren Übersicht

Die Frequenzmessung fällt in dieser Schaltung weg.
Der Code scheint mir ganz anders aufgebaut als der von Arne, oder 
täusche ich mich da?

Man könnte für den Batteriebetrieb noch eine Spannungsüberwachung mit 
einbauen, die beim hochfahren kurz angezeigt wird.
Anbei mal die Schaltung, wie ich mir das vorstelle.

Gruß Michael

von Bernd S. (wird_schon)


Lesenswert?

Hallo Michael,

habe gerade versucht mit meiner DEMO einen 168er zu beschreiben um die 
Anzeige noch zu formatieren. Leider kommt die Meldung 'DEMO only 
supports 4096 bytes of code'. Wie gesagt, der 48er war schon bei 98%. Da 
bekomme ich nichts mehr rein.

Tut mir leid.
bernd

von Michael D. (mike0815)


Angehängte Dateien:

Lesenswert?

hallo Bernd,

was für eine Demoversion hast du denn? Evtl. kann ich dir was zukommen 
lassen, zum testen...
Hast du keinen 88er? Der ist gerade mal zur hälfte gefüllt, da geht noch 
Einiges rein.
Ich bin total begeistert, von der Funktion der Soft mit dem mega88! Das 
einzige was mich stört, ist aber nicht lebenswichtig, wäre noch ein 
Dezimalpunkt oder Komma, jede 3.Stelle.

Ansonsten rennt das Teil locker mit 32MHz ohne zu zicken
Könnte man die Freqgen88 für den mega8 umstricken? Dann könnte man das 
Kontrastpoti sparen u. hätte noch den Dimmer dabei. Beide sind ja 
Pinkompatibel nur die Programieradressen unterscheiden sich, ich hänge 
mal das PDF an.

Gruß Michael

EDIT: jetzt habe ich aus Versehen die Freqgen88_org.bas mit angehängt, 
vielleicht möchte sie ja Jemand testen.
Ich habe den Dimmer nicht ganz runter fahren lassen, da ich ein blaues 
Display habe und dann sieht man ja nüscht mehr...

Noch mal EDIT: Ich habe gestern Abend versucht, wie u. wo man noch einen 
Dezimalpunkt hinzufügen kann, Stunden sind vergangen, vielleicht kann 
mir mal Jemand einen Tip geben?

von Bernd S. (wird_schon)


Lesenswert?

Ich habe auch noch einen 88er gefunden. Der geht auch noch zu 
beschreiben. Mit dem 168er geht's dann nicht mehr(27%). Mein Problem ist 
aber die Beschränkung der Demo-Version auf 4kb Code. Mit dem 
FORMAT-Befehl aus Bascom wollte ich noch ein Hochkomma in den 
Dezimalstellen einfügen. Das meinst du doch? Denn als 
Dezimaltrennzeichen steht ja schon ein Punkt.

Gibt es denn kostenlose Versionen ohne die Beschränkung auf 4kb?

Grüsse
bernd

von Michael D. (mike0815)


Angehängte Dateien:

Lesenswert?

Hi Bernd,

> Mit dem FORMAT-Befehl aus Bascom wollte ich noch ein Hochkomma in den
> Dezimalstellen einfügen. Das meinst du doch? Denn als
> Dezimaltrennzeichen steht ja schon ein Punkt.

Genau, das meine ich!

> Gibt es denn kostenlose Versionen ohne die Beschränkung auf 4kb?

Ich habe die 2.0.5.0 auch als Demo, habe bis jetzt noch keine 
Beschränkung feststellen können, unterstützt einige USB-Programmer.
Die 1.11.8.3 habe ich als Vollversion, unterstützt aber leider weniger 
Programmer und pöpelt beim kompilieren von Arnes Code und schreit beim 
88er wie hier beschrieben:
Beitrag "Re: Einstellbarer Frequenzgenerator für 0.12 Hz - 8 MHz mit Atmega 8 und Bascom"

wie auch immer, welchen Programmer benutzt du denn?

Für die oben angegebene Spannungsanzeige(Schaltplan)bräuchte man noch 
einen ADC-Eingang. Frei wäre noch Port PC0 bis PC2. Anbei mal der 
Code(Schnippsel?), ist aber nicht in Bascom geschrieben und nicht von 
mir, läuft in meinem Transistortester!

Gruß Michael

von MWS (Gast)


Lesenswert?

Michael D. schrieb:
> Ich habe die 2.0.5.0 auch als Demo, habe bis jetzt noch keine
> Beschränkung feststellen können, unterstützt einige USB-Programmer.
> Die 1.11.8.3 habe ich als Vollversion, unterstützt aber leider weniger
> Programmer und pöpelt beim kompilieren von Arnes Code und schreit beim
Eigenartig...
Als Besitzer einer gekauften und nicht geklauten Bascom Vollversion 
bekommst Du jederzeit ein kostenloses Update von MCS auf die 2.0.5.0
1.11.8.3 ist uralt.

Sehr eigenartig, daß Du die Demo benutzt.

von Michael D. (mike0815)


Lesenswert?

Fehler von mir, ist genau umgekehrt, habe gerade noch mal nach gesehen. 
Ich habe die 1.11.8.3 dazu installiert, da es Probleme beim Kompilieren 
mit Arnes Code gab, dann wär das auch geklärt ;-)

die Nacht ist kurz...

von Michael D. (mike0815)



Lesenswert?

so, damit es hier nicht langweilig wird, möchte ich meine Experimente 
mit dem mega48 (gestern frisch eingetroffen) mitteilen.

Dafür habe ich gleich ein paar Oszillatoren mit bestellt: 30MHz, 32MHz 
und 36MHz. Ich wollte das erst mit Quarzen realisieren, dummerweise hat 
Reichelt ab 20MHz aufwärts nur Oberton-Exemplare, diese bevorzugen dann 
ihre Grundfrequenz :-(

Den 88er hatte ich ja schon mit 32MHz erfolgreich getaktet, jetzt wird 
der mega48 gequählt. Die 48er-Serie ist mit 1105A gekennzeichnet und 
scheint sehr willig zu sein.
Anbei mal ein paar Oszi-Shots mit 30MHz, 36MHz und dem Clockausgang von 
36MHz des mega48, dabei bleiben sämtliche Funktionen sowie das Display 
völlig stabil.
Gemessen wird hier mit einem Welec W2022 und einem 
Testec-Tastkopf(100MHz) 1:10.

Für so wenig Aufwand gibt's hier viel Leistung.

EDIT: Die Messungen habe ich auf dem Breadbordaufbau vorgenommen, also 
auf keinen Fall HF-gerecht!

Gruß Michael

von Bastler (Gast)


Lesenswert?

Tolles Projekt!

Wie groß sind den die Frequenzstufen? Ist das tastverhältnis Stabiel?
Würde sich soetwas als Oszillator für ein SDR-Radio eignen?
Mit eine PLL könnte man noch die Frequenz verdoppeln/vervierfachen.

von Michael D. (mike0815)


Lesenswert?

Bastler schrieb:
> Tolles Projekt!
Jo... und es lebt ;-)
>
> Wie groß sind den die Frequenzstufen? Ist das tastverhältnis Stabiel?
Absolut!
> Würde sich soetwas als Oszillator für ein SDR-Radio eignen?
keine Ahnung.
> Mit eine PLL könnte man noch die Frequenz verdoppeln/vervierfachen.
Geht auch, habe es selbst mit einem ICL511 Frequenzvervielfacher 
getestet, der geht auf das 8fache der Eingabefrequenz.

Gruß Michael

von Barney Geroellheimer (Gast)


Lesenswert?

Hallo,

ich hole das mal hoch, weil mir dieses Projekt gerade entgegen kommt.

Leider kann ich die beiden Files freqgen.bas oder freqgen1.bas nicht 
compilieren.

Meine aktuelle BASCOM Version (siehe unten) gibt folgende Fehler aus, 
womit ich nichts anfangen kann.

freqgen.bas

Error : 25    Line :   99    Variable already dimensioned [Variable 
already dimensioned]  , in File : C:\Desktop\AVR\freqgen.bas
Zeile 99 Dim Ocr1a As Word

Oder

freqgen1.bas

Error : 25    Line :   77    Variable already dimensioned [Variable 
already dimensioned]  , in File : C:\Desktop\AVR\freqgen1.bas
Zeile 77 Dim Ocr1a As Word

Was moechte der Compiler mir damit sagen ?

BASCOM

Compiler version :1.11.9.8
Compiler build   :1.11.9.8.001
IDE version      :1.11.9.8
Serial number    :Serial  DEMO
Windows OS       :Microsoft Windows XP
Windows SP       :Service Pack 3
Explorer         :8.0.6001.18702

von Charly B. (charly)


Lesenswert?

schreib ein rem vor die zeile, dann laesst es sich
zumindest compillieren

Ocr1a  ist bereits in den .def definiert ( "m8def.dat")


viel erfolg beim testen

vlG
Charly

von Paul Baumann (Gast)


Lesenswert?

Es liegt an der Zeile:
Dim Ocr1a As Word

Das geht nicht, weil Ocr1a ein Registername des Kontrollers ist und
nicht als Variable dimensioniert werden kann.

Ich habe hier die Version 1.11.9.5, aber normalerweise dürfte das so
nirgendwo gehen.

MfG Paul

von Barney Geroellheimer (Gast)


Lesenswert?

Hallo


Was ich aber jetzt nicht verstehe, ist wie haben denn die Anderen hier 
das compiliert bekommen, wenn es nicht geht ?
Hat der BASCOM Compiler von 2009 das einfach ignoriert ? Woher bekomme 
ich so eine alte BASCOM Version ? Google hilft da irgendwie nicht 
weiter, nur Verweise auf die aktuelle Version.

Das Problem ist, dass ich mir vielleicht mit einem LED Blinker helfen 
koennte, aber das Programm hier ist etwas zu kompliziert fuer mich. 
Vielleicht kann mir da jemand genauere Anweisungen geben.

von Paul Baumann (Gast)


Lesenswert?

Du kannst mal versuchen, die Variable im ganzen Quelltext umzubenennen.
Mit "Suchen und Ersetzen" geht das.

MfG Paul

von c fan (Gast)


Lesenswert?

hallo
bitte projekt in c übersetzen!

von Karl (Gast)


Lesenswert?

Schau mal weiter oben + Antworten


siggo schrieb:
> hallo arne
> wirklich tolle arbeit hast du da
> das ich mir nachbauen wollte allerdings gibt bascom mir beim
> convertriern
> diesen fehler raus
> Variable already dimensioned
> "Dim Ocr1a As Word " sein schon dimensioniert wenn ich das richtig
> verstanden habe wurde die variable schon in deinem code definiert
> allerdings finde ich es nicht oder bin ich da auf dem holzweg
> gruß
> siggo

von Karl (Gast)


Lesenswert?

c fan schrieb:
> hallo
> bitte projekt in c übersetzen!

Hmm, damals schien man noch aufgeschlossener zu sein, was andere 
Programmiersprachen angeht.

Übersetze es doch selbst. So viel ist das nicht...

von Charly B. (charly)


Lesenswert?

Paul Baumann schrieb:
> Du kannst mal versuchen, die Variable im ganzen Quelltext umzubenennen.
> Mit "Suchen und Ersetzen" geht das.
>
> MfG Paul

erklaer mir mal bitte was das bringen soll !?

oder :
http://www.youtube.com/watch?v=vNc6mIwH9lI

vlG
Charly

von Paul Baumann (Gast)


Lesenswert?

Charly B. schrob:
>erklaer mir mal bitte was das bringen soll !?

Gerne. Das soll bringen, daß sich das Programm fehlerfrei übersetzen 
läßt und sogar fehlerfrei läuft.

Weiter oben schrieb der Autor einem, dem das Gleiche passiert war:
>Hallo siggo,

>das war bernd ja auch schon passiert.
>Vielleicht ist die Variable ja doch inzwischen reserviert... Ich benutze
>sie für den 16-bit Registerwert. Versuch doch bitte, die einfach an
>allen Stellen zu ersetzen, bspw durch "Vergleichsregister".

>lg, arne

Nun noch ein guter Rat zum Wochenende von mir: Lege Dich rechtzeitig 
in's
Nest und schreib nachts um 1/2 12 Uhr keinen Schwachsinn mehr.

MfG Paul

von Gregor L. (tangerine_dream)


Lesenswert?

Hallo Arne!

Ich würde gerne dein generator kaufen.Würdest du für mich gegen 
bezahlung 3 stk bauen?

Wünsche dir Einen schönen Abend

Gruß

Gregor

von Barney Geroellheimer (Gast)


Lesenswert?

Ich würde ja einen bauen wenn ich den Quelltext kompiliert bekäme. Ob 
ich dann nun eine oder 4 Platinen ätzen muß, wäre mir egal. Wenn Du das 
mit der Software hin bekommst, mache ich die Platinen.

von Michael D. (mike0815)


Angehängte Dateien:

Lesenswert?

Was möchtest du denn kompilieren? Ich habe mal, so gut ich konnte, für 
den Mega8, eine Autorange eingebaut.
Die Hz, kHz, MHz Anzeige, war ursprünglich für den Mega48/88 geschrieben 
worden und nicht im Kompilat des Mega8 enthalten.
Mein Generator läuft übrigens mit einem 50MHz Oszillator, da werden dann 
auf dem Mega48 25MHz Rechteck ausgegeben.

Gruß Michael

von Barney Geroellheimer (Gast)


Lesenswert?

Hi,

die letzte aktuelle .bas Datei von Arne. Wenn man Deinen Quelltext mit 
der aktuellen Bascom Version kompilieren kann, dann natürlich lieber 
Deine Version.
Ich habe aber eben in den tiefen des Webs ein paar alte Bascom Versionen 
gefunden und direkt mal sichergestellt. Das kann ich aber erst morgen 
Abend ausprobieren, weil ich mir nichts einfangen möchte. Wenn das 
klappt, okay, wenn nicht, könntest Du mir dann helfen ?
Wäre ja schade wenn das schöne Projekt nur daran stirbt, weil der 
Compiler den Quelltext nicht mehr übersetzen will, bzw. wir keine Ahnung 
von BASCOM haben.

Dann würde ich mich mit Gregor Lisewski (tangerine_dream) auch irgendwie 
kurz schliessen und einige Platinen machen.

Wie hast Du den Bestückungsdruck gemacht ? Toner-transfer ? Hält das ?

von Rolle M. (rolle-m)


Lesenswert?

Barney Geroellheimer schrieb:
> Hi,
>
> die letzte aktuelle .bas Datei von Arne.

Hallo
leider ist der Thread recht unübersichtlich geworden.
Bitte poste doch mal die Version die du haben möchtest als 
Forum-Dateianhang ich sehe mir das dann mal an und sorge dafür das es 
sich kompilieren lässt. Danach kann ich die revidierte Version hier 
wieder posten, falsch gewünscht inklusive der .hex zum flashen.

Habe außer div. C compilern auch die Vollversion von Bascom installiert 
(legale gekaufte Lizenz!) Mann muß ja über den Tellerrand schauen. :-)

von Michael D. (mike0815)


Lesenswert?

Also, ich helfe...

Nochmal zur Info:
Die Mega8 Version geht mit der Bascom-Ver.11183 zu kompilieren,
hat aber keine Autorange(habe ich später ergänzt), keinen Auto-Dimmer, 
keinen Software-Kontrast und keinen extra Dip-Schalter für die 
Bereichsumschaltung (High Frequency, Low Frequency)

Die Mega48/88 Version geht mit der BascomVer.2050 zu kompilieren, ist 
aber ein ganz anderes Programm, hat aber alle oben angegeben Futures!

Und ja, Bestückungsaufdruck ist mit Tonertransfer gemacht und ist gerade 
mal 10min mehrarbeit! Er kommt auf alle meine Platinen drauf, spart eine 
Menge Zeit bei der Bestückung und Fehler sind "fast" ausgeschlossen.

Morgen Abend suche ich mal die Codes zusammen und schicke sie am besten 
dem Rolle, der kann sich dann dran auslassen, wenn er möchte!
Wenn du schon dabei bist, könntest du die Futures vom Mega48/88 auf das 
Mega8 Kompilat einfügen?

Gruß Michael

von Rolle M. (rolle-m)


Lesenswert?

Michael D. schrieb:
> Morgen Abend suche ich mal die Codes zusammen und schicke sie am besten
> dem Rolle, der kann sich dann dran auslassen, wenn er möchte!
> Wenn du schon dabei bist, könntest du die Futures vom Mega48/88 auf das
> Mega8 Kompilat einfügen?

Hallo,

ich versuche es gerne habe das Wochenende Frei und bin aus 
gesundheitlichen Gründen daheim. Da ich genug überstunden Habe beginnt 
das WE für mich am Freitag schon so gegen 12 Uhr mittags... :-)

von Barney Geroellheimer (Gast)


Lesenswert?

Hi,

ich möchte jetzt nicht unverschämt wirken, aber könnte man nicht noch 
das Tastverhältnis mit einbauen ? Denn dann wäre das Ding eigentlich 
perfekt.
Wenn ich dann ein gescheites Layout, passend zu einem billig Gehäuse und 
evtl. noch eine Endstufe mit einigen 100mA dran fummel, dann sollte das 
doch ein brauchbares Projekt für das Archiv sein.
Ich bin dann gerne bereit ein paar Platinen mehr zu ätzen, oder je nach 
Nachfrage eine Sammelbestellung zu organisieren und das alles in unser 
Wiki einzutragen. Wer mir hilft, dem helfe ich natuerlich auch.
Nur, allein kann ich das nicht. Eben wegen der Software.

von Michael D. (mike0815)


Lesenswert?

@Rolle M.
Gesundheit geht natürlich überalles...aber wenn du kannst, wäre das 
Todschick, dann kommt hier wieder Leben in die Bude!!! ;-)

Also Barnay, das ist ja wirklich eine Unverschämtheit...sowas :-)))
Ich wäre auf jeden Fall auch davon begeistert, der Vorschlag kam ja 
schon mal, ist dann aber wohl eingeschlafen.

Ich hätte da 2 verschiedene Layout's anzubieten. Beide können optional 
mit Quarz oder Oszillator mit Sockel über jumper bestückt werden, könnte 
ich dann zur Verfügung stellen, wenn Interesse besteht.

BtW. hatte ich mir schon mal überlegt, zur Ergänzung, einen Sinuswandler 
als Huckepack für den Frequenz Gen. zu bauen, hätte da Jemand schon eine 
Idee?
Ich würde natürlich das Layout dafür bauen.

Gruß Michael

von Starkstromer (Gast)


Lesenswert?

Wie läuft das hier, habe ich einiges übersehen? Mein derzeitiger 
Eindruck ist, verschiedene User haben die Idee und u.U. die Software von 
Arne Groh weiter entwickelt. Mir scheint, dies wurde nicht groß hier 
publik gemacht, somit können andere interessierte nicht mitmachen. Finde 
ich schade.

Übrigens, ich habe mal in den Code reingeschaut. Aufgefallen ist mir, 
der Registerinhalt von OCR1A wird in zwei Variablen zwischengespeichert.
Folglich ist nicht die Dimension von OCR1A falsch bzw unpassend, sondern 
die fehlende Dimensionierung der Variablen OCR1Aold1 und OCR1Aold2.
Hier die entsprechende Kopie der Zuweisung --> Ocr1aold = Ocr1a.
Entsprechendes hier --> Ocr1aold2 = Ocr1a.

Geändert werden müsste die Dim Anweisung von OCR1A as Word in OCR1Aold 
as Word und zusätzlich OCR1Aold2 as Word hinzu gefügt werden.

von Stephan H. (stephan-)


Lesenswert?

ein Zwischenstand mit realen Ergebnissen wäre nicht schlecht.
Wo liegt Ihr denn nun wirklich mit den Werten und Funktionen.
Ist ja ein richtig interessantes Projekt geworden.

Weiter so.

Gruß

Stephan

von Rolle M. (rolle-m)


Lesenswert?

Michael D. schrieb:
> Gesundheit geht natürlich überalles...aber wenn du kannst, wäre das
> Todschick, dann kommt hier wieder Leben in die Bude!!! ;-)

Klar, aber bei mir ist nur der Fuß etwas lädiert (bischen hart vom 
Motorrad abgestiegen...) nicht die Birne, die geht noch einwandfrei. :-)

Da ich ja sowieso nicht groß raus kann (da man dafür zwei Stück von den 
Intakten Stelzen braucht) kann ich etwas am PC sitzen.

von Michael D. (mike0815)


Angehängte Dateien:

Lesenswert?

Hallo Männer(u.Frauen natürlich)
Da hier die Nachfrage nach dem Code von mehreren Seiten kommt, stelle 
ich mal eine leicht modifizierte Code-Version für den Mega8 hier rein.
Es wäre um Einiges übersichtlicher für alle Beteiligten, wenn bei 
verändern des Codes, eine laufende Versionsnummer vergeben wird. ;-)

Da ich nicht so fit im Programmieren bin, bitte ich um Nachsicht für 
meine Leihenhaften Ergänzungen die in dem jetzigen Code sind.
Ich habe quasi versucht, eine Autorange einzufügen.
Ob ich da alles so richtig gemacht habe, können nur die Profis 
entscheiden.
Bei der alten Version gab es nur eine "Hz" Anzeige, sonst nüscht, fand 
ich sehr unpraktisch und hatte eben mein Bestes gegeben. Wie auch immer, 
jetzt werden beim Frequenzwechsel Hz, kHz und MHz angezeigt, ist aber 
noch nicht so das Gelbe vom Ei.

Also, im Anhang scon mal der Code mit der Versionsnummer:
-------------Freqgen-M8-Ver3.0_08-01-2012.bas---------------
für den Mega8 mit 20MHz Quarztakt

Gruß Michael

EDIT: Den richtigen Code für den Mega48/88, bin ich gerade noch am 
raussuchen.

von Michael D. (mike0815)


Angehängte Dateien:

Lesenswert?

So, hier der aktuelle Code für den Mega48/88/168
mit der Versionsnummer:

-------------Freqgen-M48-88-Ver.2.0_03-05-2012-50MHz.bas----------

Beinhaltete Futures sind:

Autorange(Hz, kHz, MHz),
Autodimmer per Software(über BC547 an Kathode der Displaybeleuchtung),
Kontrasteinstellung per Software,
3.Taster für die Bereichsumschaltung "High", "Low" Frequency
Auto-Save für die letzte Frequenzeinstellung(auch Mega8),
Indikator-LED am Signal-Output

Der Mega48 ist mit dem Code an seine Speichergrenze gelangt (100%)
Ich kann mir denken, das der Code im Assambler etwas kompakter wird?!?

hoffe, ich habe nichts vergessen...
Den Autor des Codes, weiß ich leider nicht mehr.

Gruß Michael

von Barney Geroellheimer (Gast)


Lesenswert?

Hallo zusammen,

leider bin ich eben erst nach hause gekommen und muss auch morgen 
ziemlich früh wieder raus. Ich komme also nicht dazu das heute noch zu 
testen. Morgen habe ich aber etwas Zeit, dann kann ich das mal auf dem 
STK500 grob zusammenfummeln, ob und wie es geht.

@Michael

Du hast nicht gaaaanz zuuufällig noch Schaltbild und Layout-Files ? Das 
würde mir einiges an Arbeit ersparen.

Starkstromer schrieb:
> Wie läuft das hier, habe ich einiges übersehen? Mein derzeitiger
> Eindruck ist, verschiedene User haben die Idee und u.U. die Software von
> Arne Groh weiter entwickelt. Mir scheint, dies wurde nicht groß hier
> publik gemacht, somit können andere interessierte nicht mitmachen. Finde
> ich schade.

Wie Du siehst geht es doch vorran. Mein Ziel ist erst mal die Software 
wieder an's rennen zu bekommen und ein Layout zu machen. Danach baue ich 
ein kurzes Wiki zusammen. Mehr kann ich nicht tun, da ich von BASCOM 
nicht die leiseste Ahnung habe. Eine blinkende LED ist das Maximum was 
ich damit zustande bekomme und auch das nur mit Gugel Hilfe.
Wenn der Quelltext von Michael funktioniert bin ich schon mal sehr 
zufrieden. Wenn die Anderen noch etwas daran rumfeilen und evtl. noch 
einen einstellbaren DutyCycle einbauen könnten, dann wäre ich 
begeistert. Und ich denke einige andere hier auch.

Natürlich bekomme ich das nicht bis übermorgen fertig, aber ich bin und 
bleibe dran, wie es meine Zeit her gibt.

@Rolle M. (rolle-m)

Gute Besserung und keine youtube Videos gucken sondern am Quelltext 
arbeiten ;) Bidde bidde...

von Barney Geroellheimer (Gast)


Lesenswert?

Ach man. Jetzt habe ich extra ein paar m88 besorgt und jetzt das

Error : 999 Line : 241 DEMO/BETA only supports 4096 bytes of code

von Michael D. (mike0815)


Angehängte Dateien:

Lesenswert?

Hier Barney, melde dich mal an...dann könntest du Pos bekommen!

Mit was für einer Bascom Version kompilierst du?
Der Code für den Mega48/88/168 ist mit der 2.0.5.0 geschrieben.
Ptobier mal:
"Options"--> "Compiler"--> "Output"--> dann Häckchen setzen, wie auf dem 
Screen-Shot, unter Anderem "Optimize Code"

BtW. hatte gerstern Abend noch mal auf meine Layout's geschaut, da muß 
noch was überarbeitet werden, kann ich nicht so rausgeben...

Wenn noch Jemanden was einfällt, baue ich das mit ein.
Evtl. könnte man noch die Pins anders schalten, so das man eine 
Terminalausgabe zur Verfügung hat, wie beim Mega8.

PIN3 (TXD/PCINT17) liegt zur Zeit an D6 vom Display. Zur Verfügung 
stünden noch PB2-PB5 !

Anbei mal der Grundschaltplan ohne Regler(optional) und ohne 
Verpolschutz(Shottky-Diode) usw.


...und Rolle, wie sieht's aus, kommst du zurecht?
Gruß Michael

von Barney G. (fuzzel)


Lesenswert?

Woher hast Du denn eine 2er Version ? Die Aktuellste habe ich vor ein 
paar Tagen erst runter geladen.

Compiler version :1.11.9.8
Compiler build   :1.11.9.8.001
IDE version      :1.11.9.8
Serial number    :Serial  DEMO
Windows OS       :Microsoft Windows XP
Windows SP       :Service Pack 3

Die Optimierung brachte nichts, selbe Fehlermeldung. Und zu allem Übel 
ist mir gerade das Netzteil für das STK500 verbrannt, da muss ich erst 
mal Ersatz basteln.

von Rolle M. (rolle-m)


Lesenswert?

Michael D. schrieb:
> ...und Rolle, wie sieht's aus, kommst du zurecht?

Ja bin dran, habe aber viertel vor neun etwas unterbrochen wegen 
fussball. Danach gehts weiter...

von Thorsten F. (tfol)


Lesenswert?

Barney Geroellheimer schrieb:
> Woher hast Du denn eine 2er Version ? Die Aktuellste habe ich vor ein
> paar Tagen erst runter geladen.

Direkt auf www.mcselec.com gibt es die Demo von BASCOM AVR 2.0.7.1

hier der direkte link: 
http://www.mcselec.com/index.php?option=com_docman&task=doc_download&gid=139&Itemid=54


Gruß
Thorsten

von Michael D. (mike0815)


Lesenswert?

moin, seid ihr noch am leben?

Ich habe schlechte Nachrichten, was da Kompilieren des Codes mit der 
Bascom-Ver.2.0.7.1 betrifft.
Nach dem Kompilieren der 
---Freqgen-M48-88-Ver.2.0_03-05-2012-50MHz.bas---
mit dieser Version, läuft irgendwas falsch, denn danach funktioniert der 
FreqGen nicht mehr richtig, bzw. das Display zeigt nichts mehr an und 
mir kommt es so vor, als würde dieses verkehrt initialisiert?!?

Wenn ich mit der Ver. 2.0.5.0 kompiliere, läuft alles einwandfrei!
Muß ich das jetzt verstehen?

Gruß Michael

von Barney G. (fuzzel)


Lesenswert?

Ich habe etwas trouble hier, bin aber da und lese auch mit.
Compillieren klappt nun mit dem Link, Danke. Weiter kam ich aber noch 
nicht.
Ich muss morgen erst mal richtig ausschlafen und alles ganz langsam 
angehen, ich bin tot. Denke aber das ich die Hardware bis Abends fertig 
habe und auch mal ein paar Ergebnisse posten kann.

So schoen ein Projekt auch sein mag, Famile und Job geht vor, ich denke 
das versteht jeder.

von Barney G. (fuzzel)


Angehängte Dateien:

Lesenswert?

So, kleiner erster Test. Alles funktionierte auf Anhieb ganz gut. Nun 
muss ich mich doch mal etwas mit der Software beschaeftigen um Quarz und 
Anzeigefrequenz anzupassen. Im Moment habe ich einen 16MHz Quarz dran, 
morgen probiere ich das mal mit einigen Quarzoszillatoren und 
verschiedenen m88.

von Michael D. (mike0815)


Lesenswert?

Moin Barney,
schön das die Software bei dir funktioniert. Wie ich sehe, ist das meine 
Modifikation vom Mega88. Mit welcher Bascom Version hattest du diese 
kompiliert? Ich frage, wegen dem oben angegebenen Problem mit dem 
kompilieren!

Gruß Michael

EDIT: hat das noch Jemand getestet?

von Barney G. (fuzzel)


Lesenswert?

Hi,

genau, ich nehme den m88, ist wohl die beste Alternative.
Kompiliert habe ich es mit der Version aus dem Link.
Optimierung eingeschaltet, obwohl es auch ohne funktioniert.

Compiler version :2.0.7.1
Compiler build   :2.0.7.1.001
IDE version      :2.0.7.1
Serial number    :Serial  DEMO
Windows OS       :Microsoft Windows XP
Windows SP       :Service Pack 3

Ich möchte jetzt noch etwas mit Quarzen und Quarzoszillatoren rumtesten, 
mal sehen wie weit man gehen kann, das es noch zuverlässig läuft. Und 
mir natürlich noch das Ausgangssignal ansehen.

von Barney G. (fuzzel)


Lesenswert?

Da es hier wohl doch niemanden so wirklich interessiert, habe ich das 
hex von oben mal geflasht. Funktioniert ganz gut. Nur blicke ich nicht, 
wie man die Frequenz speichert, um das Tastverhältnis zu ändern und 
umgekehrt.

von Michael D. (mike0815)


Lesenswert?

Das Tastverhältnis ist zur Zeit auf 50% und im Moment noch nicht 
einstellbar! Vielleicht wird's der Rolle richten?!?

Ich wollte mal wissen, ob das Problem mit dem Display nach dem 
Kompilieren
--- Beitrag "Re: Einstellbarer Frequenzgenerator für 0.12 Hz - 8 MHz mit Atmega 8 und Bascom" ---
auch bei Anderen auftritt oder eben nur bei mir?

Gruß Michael

von Barney G. (fuzzel)


Lesenswert?

Ich hatte doch geschrieben das ich das hex geflasht habe und da ist das 
Tastverhältnis einstellbar.
Beitrag "Re: Einstellbarer Frequenzgenerator für 0.12 Hz - 8 MHz mit Atmega 8 und Bascom"
Nein, tritt bei mir nicht auf, hatte ich aber auch geschrieben.
Beitrag "Re: Einstellbarer Frequenzgenerator für 0.12 Hz - 8 MHz mit Atmega 8 und Bascom"
Es wäre auch schön zu erfahren, was genau nicht geht.

von Michael D. (mike0815)


Lesenswert?

moin Barnay,
du hast die oben angegebene HEX geflasht und die geht? Bin mal kurz 
drüben gewesen und hab's mal überflogen, kann mich erinnern, das es da 
schwierigkeiten gab. Hast du für das Display Hardwremässig die 
Pinbelegung geändert?
Quellcode ist ja leider bnicht vorhanden.

Und ja, von dir weiß ich ja, das es mit dem Kompilieren bei dir klappt, 
wollte nur wissen, ob sonst noch Jemand das Ptoblem hat...

Gruß Michael

von Barney G. (fuzzel)


Angehängte Dateien:

Lesenswert?

Ja, die geht.
m8 / 16MHz, Belegung wie auf dem Original, siehe Bild. Fuses sollten 
klar sein.

von Interessent (Gast)


Lesenswert?

Ich bleibe an der Sache interessiert. Sie ist bereits weit 
fortgeschritten und manchmal schwer nach zu vollziehen. Barney bietet 
hier einen Hexfile an, der sich auf welchen Sourcecode bezieht?

Falls beim nachbau Fehler auftreten könnte so mancher vielleicht zurecht 
kommen, wenn er in die Quelldatei schauen könnte. Manches lässt sich 
aber auch besser verstehen bzw man kann einiges lernen, wenn man die 
Entwicklung eines Programmes verfolgen kann.

Sourcecode von dieser Hexdatei finde ich wo?

von Barney G. (fuzzel)


Angehängte Dateien:

Lesenswert?

Interessent schrieb:
> Barney bietet
> hier einen Hexfile an, der sich auf welchen Sourcecode bezieht?

Beitrag "Re: Einstellbarer Frequenzgenerator für 0.12 Hz - 8 MHz mit Atmega 8 und Bascom"

von Holger(R) (Gast)


Lesenswert?

Hey Barney
die Bascom Demo Version kann nur max 4.KB hex(en).
Gruß Holger(R)

von Michael D. (mike0815)


Lesenswert?

Interessent schrieb :
> Ich bleibe an der Sache interessiert. Sie ist bereits weit
> fortgeschritten und manchmal schwer nach zu vollziehen. Barney bietet
> hier einen Hexfile an, der sich auf welchen Sourcecode bezieht?
Der Sourcecode bezieht sich auf den Mega8! Leider existiert für die 
Modifikation des Tastverhältnisses "kein" Sourcecode, nur die HEX!
>
> Falls beim nachbau Fehler auftreten könnte so mancher vielleicht zurecht
> kommen, wenn er in die Quelldatei schauen könnte. Manches lässt sich
> aber auch besser verstehen bzw man kann einiges lernen, wenn man die
> Entwicklung eines Programmes verfolgen kann.
>
> Sourcecode von dieser Hexdatei finde ich wo?

Hier habe ich die aktuellsten Sources gepostet:
Beitrag "Re: Einstellbarer Frequenzgenerator für 0.12 Hz - 8 MHz mit Atmega 8 und Bascom"
für Mega8 sowie Mega48/88

@Rolle wollte sich mal dem Code annehmen und evtl. das veränderbare 
Tastverhältnis mit einbauen?!?

Gruß Michael

von daWühr (Gast)


Lesenswert?

Klasse Idee!
Will ich auch machen :-)
Was für ein LCD hast du verwendet?

von Michael D. (mike0815)


Angehängte Dateien:

Lesenswert?

das da:
http://cgi.ebay.de/ws/eBayISAPI.dll?ViewItem&item=250992793010&ssPageName=ADME:L:OC:DE:1123
gibt's für kleines Geld...

Displaytec 2x16 LED vom Reichelt ist auch im Einsatz

Gruß Michael

von Andi (Gast)


Lesenswert?

Danke !! 1A Lösung und ein Guter Frequenzgenerator

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.