Hallo. Bin blutiger Änfänger was AVR+GCC abgeht ;-)
Möchte diese beiden Projekte nachbauen:
http://instruct1.cit.cornell.edu/courses/ee476/FinalProjects/s2004/kfm9/index.htmhttp://instruct1.cit.cornell.edu/courses/ee476/FinalProjects/s2005/gts7/index.html
Habe winavr 4.1.1 installiert. Die Examples /twitest lassen sich ohne
Probleme compilieren. Installation sollte also ok sein..
Ich habe den Makefile aus dem sample Ordner verwendet (mcu, f_cpu,
target angepasst ;-).
Aber ich bekommen eine 'Haufen' Fehlermeldungen.. #pragma ?? v1 v2
undefined?
Fehle da was? Ist das evtl. für einen anderen C-Compiler geschrieben?
Ich bin zu blöd (ziemlich sicher)
Wäre toll, wenn mir da wer weiterhelfen könnte.
Danke, Peter
Jo, das ist definitiv nicht für den AVR-GCC-C-Compiler geschrieben.
Allein die #includes sind schon falsch. Könnte CodeVision sein, andere
kommerzielle Compiler für AVR kenne ich allerdings nicht und kann sie
deshalb auch nicht ausschließen.
Zitat:
"For all examples, be sure to set the CodeVision compiler controls (in
the Project:Configure... menu) to:..."
Einfach nicht nur saugen, sondern auch mal die Links abklappern :-)
Joachim
ok, sorry. Das habe ich auch jetzt beim 2ten schauen immer noch nicht
gefunden..?
Habe mir mal die Eval. Version geladen. Läßt sich compilieren ohne
Error's..
Habe die Codesize liegt natürlich über den 2kb..
Und 90€ sind mir leider etwas zu viel..
Kann mir hier jemand das durch einen registierten CodeVision Compiler
jagen und mir die HEX-Dateien senden (ATmega32 16MHz)?
Kann man das rel. leicht nach winavr umsetzen?
Danke, Peter
Hups.. Für ATmega reicht ja noch nicht einmal die Light Version.. Also
Standard = 150 Teuro's - Wahnsinn..
Bin bereit einen kleinen Obulus für fertige HEX Dateien zu entrichten..
Trotz NTSC müßte ich doch eine S/W Darstellung sehen können..?
Peter
Peter Sieg wrote:
> Trotz NTSC müßte ich doch eine S/W Darstellung sehen können..?
Naja, NTSC ist ja nicht alles. Es gibt ...zig verschiedene
Basis-Fernsehnormen, die sich insbesondere in den Bild- und
Zeilenfrequenzen unterscheiden.
Hmm. Habe jetzt fertige HEX-Dateien erzeugt. Wenn die nächste Reichelt
Lieferung kommt, werde ich mal kurz aufbauen und einfach probieren, ob
ich ein Bild bekomme... berichte dann an dieser Stelle wieder..
Danke+Gruß Peter
//cycles = 63.625 * 16 Note NTSC is 63.55
//but this line duration makes each frame exactly 1/60 sec
//which is nice for keeping a realtime clock
Das sagt eigentlich alles. Die 63.625 µs wären sicher verkraftbar
(wir arbeiten mit 64 µs offiziell), aber 60 Hz Bildwiederholfrequenz
wird deine Glotze wahrscheinlich nicht können. 50 Hz sind bei uns
die Norm. Kann sein, dass es genügt, das hier anzupassen:
if (LineCount==231)
Hmm, knapp 3800 Zeilen Code in einer C-Datei, ist erstaunlich, dass
da noch einer durchgeblickt hat.
//but this line duration makes each frame exactly 1/60 sec
3
//which is nice for keeping a realtime clock
4
5
Das sagt eigentlich alles. Die 63.625 µs wären sicher verkraftbar
6
(wir arbeiten mit 64 µs offiziell), aber 60 Hz Bildwiederholfrequenz
7
wird deine Glotze wahrscheinlich nicht können. 50 Hz sind bei uns
8
die Norm. Kann sein, dass es genügt, das hier anzupassen:
9
10
if (LineCount==231)
11
12
Hmm, knapp 3800 Zeilen Code in einer C-Datei, ist erstaunlich, dass
13
da noch einer durchgeblickt hat.
Nun, da ich auf reichelt warte, dachte ich mir ich könnte schon mal in
den C-Code schauen.. falls ich doch von NTSC auf PAL umstellen
muß/möchte..
Lt. wikipedia:
NTSC - PAL
60Hz - 50Hz
525Z - 625 Zeilen
was soll die cycles = 63.625 * 16 bedeuten?
63.625 = Zeitdauer für 1 Fernsehzeile in us.
* 16 ??? von 16MHz, mit dem der AVR betrieben wird?
Gesetzt wird die Variable: linetime=1018 mit dem Ergebnis aus 63.625*16
Für 64us * 16 würde sich hier 1024 ergeben..? Wäre das an dieser Stelle
zu setzen für PAL?
---
Dann kommt wohl die Stelle 'if (LineCount==231)' ab der unter anderem
die Synchronisierung für die Fernseh-Seite generiert wird. Dies passiert
wohl für NTSC alle 1/60 s. Aber wo wird das gesteuert? Da müßte doch ein
Timer oder sowas getriggert werden..?
Warum müßte ich linecount==? verändern? Dann vermutlich höher, damit der
Aufbau 1 Seite länger dauert (eben nicht 1/60s, sondern 1/50s)?
(Ja, ja.. schon wieder so ein Dummy, der lieber mal RTFM sollte ;-)
Peter
Peter Sieg wrote:
> Nun, da ich auf reichelt warte, dachte ich mir ich könnte schon mal in> den C-Code schauen.. falls ich doch von NTSC auf PAL umstellen> muß/möchte..> Lt. wikipedia:> NTSC - PAL> 60Hz - 50Hz> 525Z - 625 Zeilen
Naja, die Überschrift "NTSC vs. PAL" stimmt nicht ganz, es ist eher
Norm B vs. Norm M:
http://de.wikipedia.org/wiki/Fernsehnorm#Schwarzwei.C3.9F
Aber ansonsten stimmt das.
> was soll die cycles = 63.625 * 16 bedeuten?> 63.625 = Zeitdauer für 1 Fernsehzeile in us.> * 16 ??? von 16MHz, mit dem der AVR betrieben wird?
Ja, du hast also 16 CPU-Takte pro Mikrosekunde. Das ist der Wert, der
irgendwo dann in einen Timer gefüttert wird. Der liefert dann den
Horizontal-Synchronimpuls, d. h. damit beginnt eine neue Zeile.
> Für 64us * 16 würde sich hier 1024 ergeben..? Wäre das an dieser> Stelle zu setzen für PAL?
Ja, kannst du probieren.
> Dann kommt wohl die Stelle 'if (LineCount==231)' ab der unter> anderem die Synchronisierung für die Fernseh-Seite generiert> wird. Dies passiert wohl für NTSC alle 1/60 s. Aber wo wird das> gesteuert? Da müßte doch ein Timer oder sowas getriggert werden..?
Es genügt, einen Teil mit dem Timer zu steuern, also die
Zeilenfrequenz. Danach musst du nur noch die Zeilen zählen, damit
ergibt sich die Bildsynchronisation von allein.
Zu beachten ist, dass diese einfachen BAS-Generatoren keinen
Zeilensprung generieren (englisch: interlace), daher sind die
Zeilenzahlen in diesen Rechnungen nur halb so groß wie die, die der
Fernsehnorm zu Grunde liegen. Das Norm-M-Bild hat als hier 262 Zeilen
(zwischen den Vertikal-Synchronimpulsen), daher beginnt bei Zeile 231
die Bildaustastlücke (da wird für den Strahlrücklauf nach oben dunkel
getastet). Das Norm-B-Bild hätte 312 Zeilen, da musst du nun (zum
Beispiel empirisch nach ,,Aussehen'' -> kein schwarzer Balken oben
oder unten) ermitteln, ab welcher Zeile die Austastlücke beginnt.
Wenn ich mich dunkel an die alte selbstgebaute Bildschirmsteuerung
meines ersten Eigenbau-Computers erinnere, so begann dort die
Austastlücke nach 256 Zeilen (was sehr praktisch für den Aufbau des
Bildwiederholspeichers war).
Ich weiß nicht, ob sich der Rest dann von selbst ergibt in dem
Programm. Kann natürlich sein, dass er einfach nicht in der Lage ist,
die Zeilen von 231 bis 256 mit irgendwelchen Inhalten zu füllen, d. h.
das Bild wird bei dir ein wenig ,,gequetscht'' aussehen. Du kannst
auch probieren, die Bildwiederholfrequenz ein wenig nach oben zu
ziehen, musst halt gucken, wie viel die Synchronisation deiner Glotze
noch gewillt ist mitzugehen. Alte Glotzen mit von außen zugänglichem
Vertikalfrequenzsteller sind da natürlich ein wenig im Vorteil.
Gewissermaßen poor man's Multinorm-Fernseher. ;-)
Danke ersteinmal für die prompten und ausführlichen Antworten!
Das macht mich doch zuversichlicht, das hin zu kriegen..
Ich habe den code jetzt mal so umgestellt und eine HEX Datei damit
erzeugt:
(Die Variablen TV_xxx habe ich natürlich weiter unten im code eingefügt
und die Konstanten ersetzt ;-)
//need to adjust screen painted area to the middle by adding 50/2=25 lines to top and bottom
25
#define ScreenTop 55
26
#define ScreenBot 255
27
//NTSC value +50
28
#define TV_BOT 281
29
#define TV_VSS 298
30
#define TV_VSE 301
31
#define TV_SNF 313
32
#endif
Mal sehen.. kann ich leider erst probieren, wenn die Hardwareteile da
sind..
Evtl. bekommt ja hier jemand Lust, sich die Teile auch nachzubauen..
Peter
Kurzer Zwischenstand.
Gerät ist aufgebaut und geht. NTSC Version läuft am CBM BAS Grünmonitor.
Bei der versuchten PAL Version ist die Bildschirmanzeige ca. 3-5cm nach
oben verschoben und der untere Bildschirm enthält 'Schmutzzeilen' etc.
Da muß ich also noch mal schauen.. genauso wie mir das Ganze am TV
anzusehen..
Peter
So.. auch am PAL TV läuft die NTSC Version ohne jedes Problem..?
Ist ein älteres 37cm TV. Anschluß über Cinch-Scart Adapter..
Hmm.. also geht bei mir zumindestens ohne Softwareanpassungen..
Peter