Hi, es ist zum Haare-grauwerden-und-dann-ausrupfen! Jetzt habe ich gerade meinen ATMega128 programmieren können, und schon wieder taucht ein wirklich nerviges Problem auf! Ich habe (in Bascom, aber eigentlich irrelevant) ein kleines Testprogramm geschrieben, was nichts weiter macht, als eine LED immer ein- und wieder auszuschalten. Dazu ändere ich am Port C einfach die Schaltzustände. Das scheint auch soweit zu funktionieren, denn: 1. Programm - LED nur ein - GEHT! 2. Programm - LED nur aus - GEHT! 3. Programm - Wechsel an aus - GEHT (LED leuchtet mit halber Lichtstärke...) Nun habe ich BASCOM-tyische Routinen benutzt, um zu warten (WAIT oder DELAY), mit einem anderen uC (2313) geht das auch wunderbar, aber nicht mit dem Mega128! Der scheint dann gar nichts mehr zu machen, sobald er an diesem "Befehl" angelangt ist. Das gleiche Programm läuft aber an einem 2313er. Das einzige, was bei meinem Prozessor nicht so ganz zu stimmen scheint, ist der externe Takt. Ich habe einfach einen Quarz mit zwei Kondensatoren gegen Masse auf XTAL1 und XTAL2 gelegt. Da ich die FuseBits aber gar nicht gesetzt habe, sollte der mit seinem internen Takt laufen. Oder kann es sein, dass der Quarz die Funktion "stört"? Ich könnte es zwar einfach ausprobieren, aber dann müsste ich wieder rumlöten, und ich weiss nicht, wie lange die Platine das noch mitmacht... Irgend jemand eine Idee? Gruß Sebezahn
ok, ich habs nun probiert und den Quarz ausgelötet, ebenso die Kondensatoren. Gebracht hats nix. Hat vielleicht irgendwer ein kleines Assembler-Programm, das den kompletten Portc auf output schaltet und dann im Abstand von einer Sekunde von High auf Low und umgekehrt setzt? HEX-Files bekomme ich eingespielt, nur Assembler bekomme ich nicht hin... Gruß Sebezahn
bevor man asm programme in den avr brennen kann müssen die compiliert werden. das ist eine übersetzung der text symbole (mov call usw.) in die Hexzahlen, die der avr dann erkennt. man macht sowas zB mit dem avr Studio, den es for free bei www.atmel.com gibt. programm kann ich dir schreiben, hab jetz aber keine zeit mehr (spät, spät...) hast du denn ein oszi, dann kannst du wenigstens die signale sehen, die an den pins liegen, oder muss das wirklich 1ne sekunde sein, wegen multimeter? welchen tackfrequenz hast du, ich muss ja die wait-schleife berechnen
Hi, ich arbeite mit dem internen Takt, sprich 1MHz. Einen Oszi habe ich leider nicht. Und ob der im Abstand von 3 Sekunden oder einer halben Sekunde ein- und ausschaltet, ist mir völlig egal ;-) Ich vertraue nur gerade meinem BASCOM nicht ganz. Gruß und vielen Dank! Sebezahn
Hast Du denn überhaupt eine Verzögerung programmiert? Ich meine, es gäbe einen "Wait" Befehl in Bascom. Dieses "halbhell" kommt daher, daß die LED so schnell ein- und ausgeschaltet wird, daß Du es nicht sehen kannst. Bedenke: Du hast kein Microsoft-Betriebssystem als Bremse im Hintergrund ;)
Vielen Dank! Es klappt!!! Auf Dauer werde ich wohl auf Assembler umsteigen... Gruß Sebezahn
dann liegt es also an bascom.
>...auf assembler umsteigen
ich möchte ja nicht über die vor und nachteile streiten, aber:
...besser ist dat. :)
nun also feuer frei für das Menue?! auch schon in asm? müsstest dich ja
erstmal eingewöhnen
Hi, jo, auf gehts. Werde heute nacht mal ein wenig proggen. Allerdings denke ich, ich bleibe vorerst bei BASCOM. Das Problem war weniger die Programmiersprache als vielmehr die Fusebits. Aus irgendeinem Grund war der eine Chip von Werk aus als simulierter 103er geliefert worden, und da lief nix so wie es sollte. Wahrscheinlich, weil BASCOM den Code für einen M128 aufbereitet hat. Aber dein Programm und ein anderer Foreneintrag haben mich drauf gebracht. Also, ich werde dann mal offline gehen und mich in meine stille Programmierecke verziehen. Wenn ich was brauchbares für ein Menü habe (schätzungsweise morgen ;-)), poste ich es im Menü-Thread. Gruß Sebezahn
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.