Hallo Wissende, ich bin absoluter Anfänger daher vorab.......tschuldigung. Ich habe mit einem Lernpaket von Franzis angefangen http://www.franzis.de/elektronik/lernpakete-elektronik/lernpaket-mikrocontroller-technik-mit-bascom Die Sache interessiert mich sehr und ich möchte gern weitermachen. Übermütiger Weise habe ich mir das STK500 zugelegt, um die selben Dinge aus dem Lernpaket auf die DIL Atmegas zu flashen. Von Bascom habe ich die DEMO Version (war im Lernpaket dabei). Das Lehrboard hat einen Schnittstellenwandler und einen Bootloader vorinstalliert und man kann damit direkt in Bascom loslegen. Jetzt habe ich den Programmer in Bascom vom MCS Bootloader auf das STK500 umgestellt. Beim flashen eines .bas Programms reagiert das STK500 genau so wie es soll: Led 3,4 und 5 flackern, die Statusled wechselt von rot nach gelb nach grün. Aber danach passiert nix mehr. Ich dachte das nun das Programm ausgeführt wird, Hier der .bas Code: 'Blinken $regfile = "m88def.dat" $crystal = 8000000 $baud = 9600 $hwstack = 32 $swstack = 32 $framesize = 40 Config Portb.6 = Output Config Portb.7 = Output Led1 Alias Portb.7 Led2 Alias Portb.6 Do Toggle Led1 Waitms 50 Toggle Led2 Waitms 50 Loop aber nix passiert auf dem STK500. Nun habe ich ja einen Taufrischen Atmega88 aufgesteckt. Muss der vorbereitet werden? Kann mir jemand Haarklein erklären, wie ich mit einem "frischen" Chip umgehen muss, damit er das geflashte Programm ausführt? STW: Bootloader usw. Bitte entschuldigt die etwas verwirrende Fragestellung, aber noch kenne ich mich mit nix so richtig aus. Gruß Peter
Hi Willkommen in der Welt der Zeitlosen.... Da hast du dir ein schönes Hobby ausgesucht, Freizeit ade. Wollen mal sehen. Der Schreibvorgang hat deiner Meinung nach funktioniert? Sind die LED's richtig gepolt? Sind Vorwiderstände eingebaut, sonst besteht die Gefahr, das diese nur einmal (kurz ) aufleuchten. Nach dem Basic-Code kann ich nicht gehen, dafür kenne ich zu wenig. Wenn du aber aus einem Lehrbuch ein Beispiel genommen hast, denke ich, das es nicht am Programm liegt. Nun zu 50 ms. Das ist eine sehr kurze Zeit, darüber solltest du dir im klaren sein. Da ist es möglich, das du kein Flackern siehst, sondern ein gleichmäßiges Leuchten oder Glimmen. Du solltest dir grundsätzlich bewußt sein, paßt das Programm zu dem, was du erwartest. Gruß oldmax
Hallo oldmax, die "Grundlagen" der Elektronik habe ich drauf, also Vorwiderstand bei Led kenne ich. Ich meine aber hier die LED's auf dem STK500. Die 10pol. Kabel für LED's und Switches sind gesteckt. Wenn ich den im STK500 mitgelieferten ATM8515 einstecke, läuft das Demoprogramm einwandfrei. Da werden die LED's auf dem Board binär gezählt usw. Wenn ich aber meinen gekauften ATM88 einstecke und ein Programm drauf flashe passiert mit den LED'S auf dem STK500 nix, obwohl diese lt. Programm heftig blinken müssten. Nun denke ich, dass der "frische" Chip erstmal irgendwie vorbereitet werden muss um überhaupt ein Programm abzuarbeiten. Als Anfänger sage ich mal so eine Art "Formatierung"? Da weiss ich aber nix genaues nicht. Gruß Peter
Hallo Peter. 1.) Der ATMEGA88 ist im Auslieferungszustand auf den internen Oszillator mit 8er-Vorteiler gefust. Er laeuft demnach mit 1MHz internem Takt. Die Zeile
1 | $crystal = 8000000 |
macht also schonmal nicht so viel Sinn. Stell die Fuses mal auf externen Takt ohne Vorteiler und benutz den Takt des STK500 2.) Wozu wird
1 | $baud = 9600 |
gesetzt? 3.) Die Portpins B6 und B7 sind ungluecklich gewaehlt. Diese Pins sind beim MEGA88 ausgerechnet die Pins fuer den externen Takt! Volker
Peter, > macht also schonmal nicht so viel Sinn. Stell die Fuses mal auf externen > Takt ohne Vorteiler und benutz den Takt des STK500 Lass als Anfänger die Finger vom Umstellen der Clock Fuses, verkompliziert die Geschichte nur, der M88 läuft auch mit internem Takt. Die falsche Einstellung von $crystal = 8000000 hat nur zur Folge, daß Waitms 50 in Wirklichkeit 400ms dauert. Solange die Ports nicht anders definiert sind, kannst Du PortB.6/7 problemlos nehmen. Durch die Zeile $Baud = xxx wird allerdings das UART eingeschaltet, PortD.0/1 ist damit nicht anders verwendbar. Hast Du den richtigen Sockel im STK500 benutzt, Green, 2, SPROG2 ? Und vor allem, ist PortB.6/7 auch per Jumperkabel mit den Statusleds des STK500 verbunden ? Sonst bleibt's dunkel :D Dein Code läuft übrigens.
MWS schrieb: > Peter, > >> macht also schonmal nicht so viel Sinn. Stell die Fuses mal auf externen >> Takt ohne Vorteiler und benutz den Takt des STK500 > > Lass als Anfänger die Finger vom Umstellen der Clock Fuses, > verkompliziert die Geschichte nur, der M88 läuft auch mit internem Takt. Natuerlich laeuft der auch mit internem Takt, dafuer ist er ja da. ;) Das hindert das STK500 jedoch nicht, den Takt an genannten Pins zur Verfuegung zu stellen. Dafur muesste man es um-jumpern, was in etwa so schwierig sein duerfte, wie eine Fuse zu setzen... > Die falsche Einstellung von $crystal = 8000000 hat nur zur Folge, daß > Waitms 50 in Wirklichkeit 400ms dauert. Richtig... und dass er schon ganz bald wieder nachfragt, weil er die UART benutzen will... :) > Solange die Ports nicht anders definiert sind, kannst Du PortB.6/7 > problemlos nehmen. Durch die Zeile $Baud = xxx wird allerdings das UART > eingeschaltet, PortD.0/1 ist damit nicht anders verwendbar. Wie oben geschrieben, kommt der Takt vom STK500 auf B6/7 an, egal wie die Fuses im uC gesetzt sind, es sei denn man jumpert das STK500 um. Volker
Hallo MWS, die Clock Fuse habe ich im AVR-Studio geändert. Ich habe NUR die CKDIV8 deaktiviert. Damit sollte der A88 auf 8 MHz laufen. MWS schrieb: > Hast Du den richtigen Sockel im STK500 benutzt, Green, 2, SPROG2 ? > > Und vor allem, ist PortB.6/7 auch per Jumperkabel mit den Statusleds des > > STK500 verbunden ? Sonst bleibt's dunkel :D Green 2 und SPROG 2 sind klar, aber was für ein Jumperkabel ????? Das 10 pol. Kabel von PORTB -> LED's und das 10 pol. Kabel PORTD-> Switches steckt, aber das sind doch keine Jumper?? VTARGET, AREF, RESET, XTAL1, OSCSEL, BSEL2 und PJUMP habe ich nicht angetastet, die sind so wie im Auslieferungszustand gesteckt. Gruß Peter
Peter Bednarz schrieb: > Hallo MWS, > > die Clock Fuse habe ich im AVR-Studio geändert. > Ich habe NUR die CKDIV8 deaktiviert. Damit sollte der A88 auf 8 MHz > laufen. OK > Green 2 und SPROG 2 sind klar, aber was für ein Jumperkabel ????? > Das 10 pol. Kabel von PORTB -> LED's und das 10 pol. Kabel > PORTD-> Switches steckt, aber das sind doch keine Jumper?? Doch. > VTARGET, AREF, RESET, XTAL1, OSCSEL, BSEL2 und PJUMP habe ich nicht > angetastet, die sind so wie im Auslieferungszustand gesteckt. Wenn Du unbedingt den internen Takt des uC verwenden willst, dann zieh den Jumper XTAL1... Volker
> Wie oben geschrieben, kommt der Takt vom STK500 auf B6/7 an, egal wie > die Fuses im uC gesetzt sind, es sei denn man jumpert das STK500 um. Letzter Teil des Satzes ist ausschlaggebend, natürlich muss das STK500 für den jeweiligen µC entsprechend konfiguriert sein, für internen Takt dann die OSCSEL eben ungejumpert. > PORTD-> Switches steckt, aber das sind doch keine Jumper?? Peter, mit Jumperkabel hab' ich Verbindung der Leds mit PortB bezeichnet. > VTARGET, AREF, RESET, XTAL1, OSCSEL, BSEL2 und PJUMP habe ich nicht Volker schrieb's schon, nimm' den externen Clock weg. Zur Sicherheit alle Jumper laut DB mit Deinem STK500 verglichen ?
MWS schrieb: > Letzter Teil des Satzes ist ausschlaggebend, natürlich muss das STK500 > für den jeweiligen µC entsprechend konfiguriert sein, für internen Takt > dann die OSCSEL eben ungejumpert. Dann haengt der Pin allerdings immernoch rueckwaerts am Spannungswandler. Also besser XTAL1 ent-jumpern. ;) Volker
Hallo Volker, ich will nicht unbedingt den internen Takt verwenden. Mir gehts um folgendes: Ich möchte auf dem STK500 erreichen, dass nach dem flashen des A88 auf dem STK500 die LED's so blinken wie sie es lt. Programm sollten. Quasi ein "visuelles Erfolgserlebnis" für: alles richtig gemacht. Das Blinkerprogramm ist nur ein Test, sonst nichts....... Der mit dem STK mitgelieferte A8515 spielt ja sein Testprogramm (LED 0 - 7 werden über Taster binär hochgezählt usw.). Nur wenn ich meinen "frischen A88" mit meinem "Blinker" flashe tut sich auf dem STK500 nix, außer das er mir den Flashvorgang erfolgreich meldet. Ich sitze erst heute Abend wieder vor meinem STK500. Frage: Muss die UART denn nicht angesprochen werden? Dann würde ich $baud 9600 einfach weglassen? Hauptsache die LED's blinken erst einmal. Welche PORTS könnte ich denn bedenkenlos für OUTPUT nehmen? Gruß Peter
> Ich möchte auf dem STK500 erreichen, dass nach dem flashen des A88 auf > dem STK500 die LED's so blinken wie sie es lt. Programm sollten. > Quasi ein "visuelles Erfolgserlebnis" für: alles richtig gemacht. > > Das Blinkerprogramm ist nur ein Test, sonst nichts....... Dann benutze andere Pins als PB6 und PB7 Wenn du in Zukunft einen Portpin benutzen willst (ok, ok, irgendwann kennt man die auswendig), dann schau zuerst im Datenblatt nach, ob dieser Pin eine Doppelbelegung hat und welche das ist. Das ist einer der wichtigen Punkte: Sich klar machen, dass nicht jeder Pin für jede Aufgabe gleich gut geeignet ist, dass einige Pins durch ihre Spezialfunktionen einem das Leben extrem erleichtern können und das einige Pins überhaupt nicht benutzt werden können während einige andere eine Defaultbelegung haben, die man mit einer Fuse auch umstellen kann. > Ich sitze erst heute Abend wieder vor meinem STK500. > Frage: Muss die UART denn nicht angesprochen werden? Gegenfrage: Gibt dein Programm etwas über die UART aus oder empfängt sie etwas? Nein?` Wozu willst du die UART dann initialisieren? > Welche PORTS könnte ich denn bedenkenlos für OUTPUT nehmen? Port B ist schon ok. Aber eben nicht diese beiden Pins. Ansonsten: Hol dir das Datenblatt von Atmel, dort ist am Anfang eine schöne Graphik deines Prozessors mit allen Pins und ihrer Belegung. Du wirst es sowieso brauchen. Also hol es besser gleich.
Peter Bednarz schrieb: > Hallo Volker, > > ich will nicht unbedingt den internen Takt verwenden. > Mir gehts um folgendes: > Ich möchte auf dem STK500 erreichen, dass nach dem flashen des A88 auf > dem STK500 die LED's so blinken wie sie es lt. Programm sollten. > Quasi ein "visuelles Erfolgserlebnis" für: alles richtig gemacht. > > Das Blinkerprogramm ist nur ein Test, sonst nichts....... Ja, war mir schon klar. Mit internem Takt und XTAL1 gezogen muesste es gehen. Ansonsten zum Testen einfach mal Pins B0 und B1 verwenden. > Ich sitze erst heute Abend wieder vor meinem STK500. > Frage: Muss die UART denn nicht angesprochen werden? Dann würde ich > $baud 9600 einfach weglassen? Hauptsache die LED's blinken erst einmal. Fuer's Blinkenlassen brauchst Du die UART nicht, also die Zeile einfach weglassen... ;) > Welche PORTS könnte ich denn bedenkenlos für OUTPUT nehmen? Siehe oben. Sogenannte "Alternativfunktionen" haben jedoch alle Pins. Siehe Datenblatt unter "Pin Configuration" oder "Pinout". Volker
Hallo, Peter! Tu dir selbst einen Gefallen und verzichte auf Bascom. Programmiere deinen Controller in Assembler. Nur so lernst Du ihn wirklich richtig kennen (auch wenn es sehr kompliziert erscheint). Schau dir dazu einfach das AVR-Tutorial an. Später kannst Du dann auf C umsteigen. Ich möchte hier keine Diskussion über Bascom/nicht Bascom starten, ist nur ein gut gemeinter Rat von mir.
Hallo, mannoman geht das hier schnell........:D Man kommt ja mit dem Antworten gar nicht mehr nach..:D Also der OSCSEL steckt zur Zeit auf PIN 2-3 (Auslieferzustand 1-2=3) Muss der OSCSEL ganz weg oder auf 1-2 gesteckt werden? Werd ich heute abend direkt mal ausprobieren. Vielen Dank erst mal an alle bis hierher, wenn es funzt werde ich es berichten. Gruß Peter
Hallo Peter, am besten nicht einfach nur nachmachen, was hier geschrieben wird. Versuche es zu verstehen. Guck Dir den Schaltplan vom STK500 an, dann werden Dir die Bedeutungen der Jumper schnell selbst klar. Wenn Du auf andere Pins ausweichst, ist es egal wie der Jumper steckt, dann kommts nur auf die Fuses an.
> Muss der OSCSEL ganz weg oder auf 1-2 gesteckt werden?
Volkers Rat ist hier besser, unjumpere XTAL1.
Zu $Baud, sobald Bascom das findet, wird das UART initialisiert, also
lass es raus.
Hallo zusammen, bin jetzt zuhause an mein STK500 und.............ES FUNKTIONIERT !!!!! Ich habe den XTAL1 entjumpern müssen UND PORTB.0 und PORTB.1 genommen. SUPER............ Was hab ich daraus gelernt ? 1. Hier wird mein Stammforum 2. Interner Takt wird mit FUSE CKDIV8 ein oder ausgeschaltet 3. Bevor man anfängt, erst den MC und seine Pins studieren. 4. Jumper Tabelle für STK500 auswendig lernen. 5. Werde den Rat von Chris und Tom ernsthaft befolgen. 6. Ich habe ein tolles Hobby gefunden. Nochmals vielen Dank an alle Beteiligten. P.S. Werde euch noch oft genug löchern :D Gruß Peter
Hi >2. Interner Takt wird mit FUSE CKDIV8 ein oder ausgeschaltet Nein. >4. Jumper Tabelle für STK500 auswendig lernen. Oder auf der Unterseite des STK nachsehen. MfG Spess
spess53 schrieb: >>2. Interner Takt wird mit FUSE CKDIV8 ein oder ausgeschaltet > > Nein. Genau... mit CKDIV8 wird der interne Takt-Teiler geschaltet. Volker
Volker Schulz schrieb: > spess53 schrieb: >>>2. Interner Takt wird mit FUSE CKDIV8 ein oder ausgeschaltet >> >> Nein. > > Genau... mit CKDIV8 wird der interne Takt-Teiler geschaltet. Naja, sagen wir mal "voreingestellt". Denn man kann auch per Firmware den Takt-Teiler verändern, was die Voreinstellung der Fuse überschreibt. Ich bevorzuge deshalb die Einstellung per Software. > > > Volker ...
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.