Hallo Leute, nun ich hab folgendes Problem und hoffe ihr könnt mir weiterhelfen, da ich noch ein Einsteiger bin. Nun ich habe eine Schaltung mit dem ATMega16 aufgebaut (http://www.roboternetz.de/wissen/images/3/3c/Avrtutorial_grundschaltung_mittaster.gif) und mir ein ISP AVR programmierkabel bei ebay gekauft (selbstgebautes funktionierte nicht ;( ) naja, jetzt hab ich mittlerweile Zugriff auf den AVR aber mein Programm funkioniert nicht! ich will einfach nur eine LED einschalten! $regfile = "M16def.dat" $framesize = 16 $swstack = 16 $hwstack = 16 $crystal = 1000000 Config Portc.0 = Output 'Ein Pin wird aus Ausgang konfiguriert PC0 (also Pin0 von Port C) Portc.0 = 1 'Pin wird auf High, also 5V geschaltet End Die Led ist an PC0 und natürlich GND angeschlossen. In Basecom hab ich die Optionen alle eingestellt (STK 200/300) usw halt, wiegesagt kann ihn lesen usw. Aber ich muss ihn jedesmal im programmer neu auswählen und kann ihn auch nicht identifizieren :( hab echt alles probiert ich hoffe ich könnt mir kurz helfen, wäre echt nett. Mfg Lenox
Dein Problem ist also nicht dein Code, sondern der AVR selbst (im Zusammenhang mit Bascom und den Programmer). Was für ein Teil benutzt du denn? Hast du den Link zu Ebay oder andere brauchbare Daten? >$crystal = 1000000 Wie kommst du auf diesen Wert? Hast du die Fusebits auf eine externe Taktquelle umgestellt? Wieviel mA zeiht die LED? Hast du da noch einen Widerstand zwischen?
Schau mal unter Options-Programmer, ob was bei Dir als Ardesse für den Parallelport für den STK200/300 steht. Bei den meisten PCs geht 378. Wenn Du ein Notbook verwendest, dann hast Du gute Chancen mit 3BC. Unter Options-Compiler-Chip musst Du Deinen uC heraussuchen. >$regfile = "M16def.dat" Schön, dass das drin steht, muss aber nicht, wenn Dein Chip in Options-Compiler-Chip drin steht. >$framesize = 16 >$swstack = 16 >$hwstack = 16 ...verändert die Standardwerte, die unter Options-Compiler-Chip drin stehen. Nimm die Standardwerte, d.h. lass diese 3 Zeilen einfach weg. >$crystal = 1000000 ...ist hier völlig egal, kannst weglassen. Ist nur dann wichtig, wenn der UART verwendet werden soll. Im Auslieferungszustand sind übrigens alle AVRs mit internem R-C Takt eingestellt. Kurzum, der gesamte Overhead ist nichts nütze. Der Overhead ist nur dann wichtig, wenn die Standardwerte (Options-Compiler-Chip) nicht genommen werden sollen. Das was im Quelltext steht wird compiliert, ist da nichts, dann werden die Werte gemäß Options-Compiler-Chip etc. hergenommen.
>Unter Options-Compiler-Chip musst Du Deinen uC heraussuchen. wird mit >$regfile = "M16def.dat" automatisch überschrieben. Egal was man da eingestellt hat. Genauso mit Stack, Crystal, Baud, ... Die Direktiven stehen über den Compilersettings.
Hallo Leute, danke erstmal für eure Hilfe!! hab auch direkt probiert, also nur Config Portc.0 = Output 'Ein Pin wird aus Ausgang konfiguriert PC0 (also Pin0 von Port C) Portc.0 = 1 'Pin wird auf High, also 5V geschaltet End Aber dann bekomm ich 2 Erorrs 1. Varibale can not be uset with SET (DDRC) 2. Invailed datatype beim portc Hab ich vielleicht mal ein Beispielcode um die LED an PC0 anzuschalten? 1 K Wiederstand ist vorgeschaltet. Der Programmieradapter von ich ebay ist folgender http://cgi.ebay.de/ws/eBayISAPI.dll?ViewItem&ih=004&item=140037594733&rd=1&sspagename=STRK%3AMEWN%3AIT&rd=1 MFG Lenox
Hallo Lennox, mit Bascom kannst Du doch ganz einfach dein erstelltes Programm simulieren...... gruß
Hallo Bobbelsche, da ich kein Einsteig hab komm ich erst garnicht zum lernen! kannst du mir nicht einfach mal ein code für den Meta16 schreiben der die LED an PC0 einschaltet? Dürften ja nur ein paar Zeilen sein.. Achja ich verwende noch den internen takt, hab aber ein 16 MHz Quarz noch hier liegen, aber dazu muss ich ja die Fusebits umstellen deshalb hab ich es vorerst noch gelassen. Ist das normal das ich den Chip nicht "identifizieren" kann? bekomm dann imemr nen Fehler. Mfg Lenox
Ist der Parallelport denn richtig eingestellt? (Siehe Frage von Marc Meise) Welches Betriebssystem verwendest du? Was ist jetzt eigentlich dein Problem? Der Programmcode oder das die Hardware nicht erkannt wird? Hast du evtl einen Druckertreiber installiert, der auch versucht den LPT zu nutzen? Wenn du XP hast, hast du einen LowLevel Porttreiber installiert? Wie kommst du auf Crystal=10000000? Hast du die Lock- und Fusebits verändert? Wenn ja, welche auf was? ...
Solange du den Chip nicht identifizieren kannst, ist der Programmcode unwichtig. Und das es nicht geht ist logischerweise nicht normal! Wenn du die Fusebits nicht umgestllt hast muss es $Crystal=8000000 heissen. Aber das ist bei deinem Programm nicht ausschlaggebend. Wie wäre es mal hiermit: http://www.rowalt.de/mc/index.htm Dann kannst du das Programm auch selbst schreiben. Hast du die Spannung VCC am AVR mal gemessen?
unter "options-compiler-chip" m16def.dat einstellen.... dann diese Zeilen hier compilieren, und auf den Mega16 übertragen. Die LED an Port B1 blinkt jede Sekunde. $crystal = 1000000 Config Portb.1 = Output Portb.1 = 0 Do Portb.1 = 1 Waitms 100 Portb.1 = 0 Waitms 100 Loop Gruß.
So habs nochmal probiert (mit deinem Proggry), hab die Einstellungen auch übernommen. Complimiert. Run Programmer. Dann kommt ein Fehler " Could not identify chip with ID:000000" dann "Select chip and target chip do not match AT90S2313 <> Atmega16" ich benutze Win XP mit SP2, was für ein LowLevel Porttreiber? Spannung am AVR liegt an (Spannungsregler mit Kondensatoren vorgeschaltet, extakt 5 V. Mfg Lenox
Wenn die von Dir beschriebene Bascom-Meldung kommt, ist entweder kein oder ein defekter Programmer angeschlossen.
@ Lenox hab das Programm auf Port B0 umgeschrieben, und statt 100ms nun die Blinkfrequenz auf 1 sek. korrigiert. Bascom-File im Anhang.
>Die LED an Port B1 blinkt jede Sekunde. Sorry, tut sie nicht. Weil Crystal nicht stimmt und 100mS 0,1Sekunde ist und keine ganze ;) >unter "options-compiler-chip" m16def.dat einstellen.... Dann muss man aber auch so kensequent sein und da die Taktfrequenz und alles andere auch einzustellen. Man sollte sich angewöhnen, alles was geht im Programmcode einzustellen. Das Problem ist folgendes: Heute schreibt man ein Programm für einen M16. Compiliert es, probiert es aus und alles ist gut. Morgen steckt man einen M32 auf's Board, ändert noch eine Kleinigkeit und compiliert neu. Aber das compilierte ist immer noch für einen M16 und nicht für den M32! Man hat es einfach übersehen. Bascom wird zwar meckern und fragen was man denn für ein Volli.... ist. Aber spätestens wenn das Programm mal veröffentlich wird, damit andere es auch nutzen können oder andere Fehler suchen sollen, geht das große Raten los. Was für einen AVR benutz er? Schlimmer ist es aber noch mit der Taktfrequenz und den Stacks. Ein wintzig kleines Programm hat kein Platz für Variablen, weil der Stack für ein anderes Programm noch viel zu hoch eingestellt war. Da meckert Bascom nicht! Ein waitms 100 dauert auf einmal 120mS. Für ein blinken nicht schlimm, aber die Zeiten können auch mal wichtige Funktionen übernehmen. Wenn der AVR mit 16MHz läuft aber man hat ihn für ein anderes Projekt in den Settings noch auf 8MHz stehen, geht alles auf einmal doppelt so schnell. Mal ganz davon abgesehen, das das Timing für RS232 absolut nicht mehr passt! Jeder kann natürlich so verfahren, wie er möchte. Das will ich niemanden vorschreiben. Aber einen Anfänger zu raten was in den ettings einzustellen ohne das er weiss, was das bewirkt und wie da überhaupt die Zusammenhänge sind finde ich verantwortungslos.
Hallo Marco, hatte meinen Fehler mit den 100ms erkannt und dies auch gepostet. ....wahrscheinlich eine Überschneidung. Lenox will sich möglicherweise erst in die AVR einarbeiten. Und da ist es doch schön, wenn man schon mal ein kleines Erfolgserlebnis hat.
Ich will nicht meckern, aber waitms 1000 erzeugt einen kleineren Code (weniger Speicherbedarf) als Wait 1. Lenox, was für ein Board verwendest du für den M16? Ein gekauftes oder selbstgebautes? Gehen VCC und GND auch zum Programmieradapter? Sicher, das alles richtig verdrahtet ist?
so habs probiert, musste wieder den Atmega16 in dem Pulldown menü auswählen, den Chip löschen ging (laut anzeige) aber flash schreiben wiederrum nicht "Write buffer to Flash ROM" der macht einfach nichts, wenn ich dann abbreche ließt er schnell und zeigt "Difference at 0000" an. "Red flash ROM into buffer " geht aber bekomm nur Nullen. Bin echt ratlos... :( Was für ein Treiber meintest du? geht aber auf meinem Laptop (WIN 89) auch nicht. PonyProg gibt mir "Communication Port not available (-16) als Fehler.
...unter "OPTIONS-Programmer" den passenden Programmer auswählen !
http://cgi.ebay.de/ws/eBayISAPI.dll?ViewItem&ih=004&item=140037594733&rd=1&sspagename=STRK%3AMEWN%3AIT&rd=1 Einstellungen auf STK200/300
hast du denn einen solchen Programmer ? Ansonsten mit den Einstellungen experimentieren.
Ja kla den hab ich ja hier! ich weiß nicht was ich einstellen soll, hab folgendes gemacht http://www.roboternetz.de/wissen/index.php/Bascom_-_Erstes_Programm_in_den_AVR_Controller_%C3%BCbertragen und jetzt halt noch unter "options-compiler-chip" m16def.dat eingestellen.
hast Du evtl. Skype ? Dann könnte man sich unterhalten. Mache jetzt Feierabend. Ab Mittwoch guck ich wieder hier rein. Bis bald.
kla grade nicht installiert aber ist kein Problem, icq skype msn alles Hauptsachte ich bekomm das mal hin, ist echt sehr Ärgerlich ;) wollte jetzt auch mal Schluss machen für Heute. kannst mir ja dein Skype Nickname o.ä. mal zukoommen lassen wäre sehr nett. Bis bald Lenox
@Lenox Mal angenommen, dass Dein Programmer i.O. ist, solltest Du folgendes überprufen: 1) BASCOM braucht den Parallelport im ECP-Mode, in der Windows-Systemsteuerung-System-Hardware-Gerätemanager-Anschlüsse kontrollieren, ob LPT als ECP eingestellt ist und was die LPT-Adresse ist. 2) wenn EPP oder was anderes angezeigt wird: Ins BIOS gehen und den Parallelport auf ECP einstellen, dann klappt es auch mit dem ISP (bei mir geht es z.B. nur auf ECP) Sonst (nach 2 Minuten Googeln): http://www.roboternetz.de/wissen/index.php/RN-Board_FAQ-Seite#Wie_muss_Bascom_eingestellt_werden.2C_damit_der_ISP-Programmierdongle_richtig_funktioniert.3F
"Config Portb.1 = Output" muss config PINB.1 = output heissen Beste Gruesse
danke erstmal, der LPT Anschluss ist erkannt und die Adresse stimmt auch. Kann allerdings als "Ressourcenmöglichkeiten" folgendes eistellen: 1. Interrup möglichst nie verwenden 2. Interrup nie verwenden (eingestellt) 3. Jeden dem Anschluss zugewiesenen Inerrup verwenden und dann kann ich noch eine "Legacyererkennung für plug & Play aktivieren" So ich guck jetzt aber nohmal im BIOS nach! Mfg Lenox
So hab jetzt von Normal auf ECP eingestellt. Dann gibt es noch folgende Einstellmöglichkeiten: ECP DMA: 1. DMA0 2. DMA1 3. DMA2 4. DAM3 (eingestellt) und parallel Port IRQ: 1. IRQ5 2. IRQ7 (eingestellt) kann ihn noch immer nicht identifizieren, auch nicht mit Ponyprog
Ansonsten mal im Geraetemanager schauen, was bei dir an der rot markierten Stelle steht. Dieser Wert muss in den Bascom Einstellungen bei "LPT-address" rein. So wie auf dem Bild sollte es bei den meisten aussehen, aber bei dir koennte u.U. irgendein exotischer Wert dastehen. Beste Gruesse
Adresse usw stimmt, aber hab grad etwas erschreckendes herausgefunden, die Steckerbelegung der programmieradapters ist genau umgekehrt!!!! Stand extra dabei aber hab mic hgrad gewundert warum an einem Pin Kein GND war, es war AVV, hab daraufhin alle überprüft, der Stecker wurde wohl genau falschrum angebracht, klasse jetzt war natürlich alles falsch angeschlossen ;( habs direkt umgebaut, aber geht noch imemr nicht, ist jetzt vllt schon der Chip kaputt? war wirklich alles vertauscht, GND Mit VCC MOSI RST SCK MISO alles andersrum, oh man ey wie kann man sowas nur verkaufen 8die lötstellen sehen aus wie schelcht per hand gelötet, das gibt ne tolle Bewertung, bin echt n bisschen sauer :(.
>oh man ey wie kann man sowas nur >verkaufen 8die lötstellen sehen aus wie schelcht per hand gelötet, Was erwartest du??? Schau dir mal den Preis an. Schau dir mal den Preis für den Bausatz an. Schau dir mal die Werbung auf der Ebay-Seite an. Überleg selbst mal, was das Material kostet, wieviel Lohn man haben will und bedenke den logistischen Aufwand. Außerdem habe ich gestern schon gefragt, ob alles richtig angeschlossen ist!
Ja aber den Wannenstecker falsch auf das Flachbandkabel printen ist schon n blöder Fehler, naja jetzt steht ich da.. alles könnte kaputt sein nur ich weiß nicht was. Ja ich hatte die Schaltung überprüft aber nicht den Programmieradapter, ich ging davon aus das sowas überprüft wird. Oh man
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.