Hallo, nachdem ich mich jetzt stundenlang um den Verstand gelötet habe, möchte ich nun meine Schaltung auch auf Herz und Nieren testen. Darum habe ich zunächst eine LED an den Port PB0 gehängt. Mir fehlt jetzt eigentlich nur noch der passende Assemblercode, um diese LED zum blinken zu bringen. Es wäre nett von euch, wenn ihr hier ein kleines Beispielprogramm posten könntet, dass meine LED alle 5sek. aufleuchten lässt für etwa 1sek. Ich benutze übrigens einen 4MHz Oszillator. Vielleicht gibt es ja sogar einen Code, bei dem das Blinken nach einiger Zeit immer schneller wird... Danke, schon mal im Voraus!
Dir ist aber schon bewußt, daß Assemblercode prozessorspezifisch ist? Mit welchem Werkzeug möchtest du denn den Assemblercode übersetzten? Und mit welchem Werkzeug bekommst du die Binärdateien in deinen Prozessor?
Also ich benutze AVRStudio in der Version 4.11 Die Binärdatei möchte ich ganz normal mit dem ISP übertragen.
Blink etwas schneller aber sollte reichen ansonsten noch ne warteschleife drüber;-)
Nachdem ich die Hex-Datei geflasht habe, startet das Programm dann eigentlich sofort oder muss ich erst noch ein RESET durchführen?
Hi, normalerweise setzt der Programmer RESET und gibt's nach dem Programmieren wieder frei, so dass das Programm ansich gleich beginnt. Die Funktion des Programms hängt allerdings doch davon ab, welchen µC du verwendest und welcher da drinnen steht...
Sollte eigentlich sofort starten aber ein Reset schadet auch nicht. Habe es eben bei mir Probiert und da hatt es prima gefunzt... Habe allerdings angenommen das du einen Mega8 benutzt...
Eventuell reicht es bei nem anderen ATMEL die m8def.inc in die Passende Datei abzuändern....
Mmmmhh, also das flashen meines AtMega8 funktioniert anwandfrei. Doch irgendwie bekomme ich kein High-Signal am PB0-Port heraus? Woran könnte das liegen? Die Versorgungsspannung von 5V habe ich auch überall überprüft, sonst würde das Schreiben/Auslesen ja auch nicht funktionieren. Ich bin am Verzweifeln... An meinem PB0-Port liegt ein 470Ohm wiederstand, dann kommt meine LED und das ganze liegt dann an Vcc. Das ist doch so richtig oder? Oder mache ich beim assemblieren irgendwie einen Fehler? Ich lade halt immer die .hex-Datei, die mir AVRStudio 4 herausgibt mit PonyProg2000 hoch. Und wie gesagt, da bekomme ich immer ein successful. Helft mir bitte... DANKE
Was ich auch nicht ganz verstehe. Wenn ich den Quellcode mit AVRStudio simuliere, dann gehen alle PB-Port auf HIGH und verharren in diesem Zustand. Sprich: Es findet überhaupt kein blinken statt. Stimmt das denn so?
Ja bei der Simulation wird kein Blinken statfinden. Durch die Schleifen die zur erzeugung der Pause dienen bleibt die LED beim Simulieren solange an bis du 0xFF*0xFF mal die Schleife durchlaufen hast. Eventuell mal mit nen Messgerät überprüfen was ausm PORT rauskommt.
Sicher dass du PortB hast? Beachte: der ist beim Mega 8 ziemlich "zerstückelt" verteilt. Hast du die LEDs richtig angeschlossen?
Also die LED habe ich ganz links unten (PIN 14) angeschlossen. Wie gesagt erst Widerstand 470Ohm und dann LED zu Vcc hin...
Vorschlag: Versuch, folgende beiden noch wesentlich einfacheren Programme zu Laufen zu bringen: Programm A: --------------------------------------- .include "m8def.inc" ldi r16,0xFF ;PortB als Ausgang out DDRB,r16 clr r16 ;AN out PORTB,r16 loop: rjmp loop --------------------------------------- Programm B: --------------------------------------- .include "m8def.inc" ldi r16,0xFF ;PortB als Ausgang out DDRB,r16 ldi r16,0xFF ;AUS out PORTB,r16 loop: rjmp loop --------------------------------------- Nach dem Starten der Programme solltest Du den entsprechenden Pegel an den Pins von Port B mit einem Multimeter messen können (wenn nicht, wurde das Programm nicht korrekt übertragen oder der Controller ist defekt). Ist das der Fall, klemmst Du die LED an. Leuchtet daraufhin die LED ordnungsgemäß (bzw. nicht je nach Programm), kannst Du Dein Blink-Programm flashen. Wenn die LED dann nicht blinkt, weißt Du, daß es am Programm liegen muß.
Noch ein Tip: Rechne mal aus, wie schnell Dein Testprogramm die LED blinken läßt. Wenn die LED nämlich 1000 mal pro Sekunde blinkt, dann blinkt sie, aber Du siehst sie nicht blinken (sondern konstant mit etwas verminderter Helligkeit leuchten). Blinkt die LED dagegen mit einem Takt von 5 min, dann blinkt sie auch, aber das siehst Du nur, wenn Du mindestens 10 min draufgeguckt hast. Fazit: Es ist sinnvoll, sich vorher zu vergewissern, daß die Blinkfrequenz im Sekundenbereich liegt.
Muss ich das eigentlich als Intel-HEX oder als Generic-HEX assemblieren? Oder kann es vielleicht sein, dass ich irgendwie vergessen habe einen PORT zu beschalten? Was ist eigentlich mit dem RESET-Eingang vom Atmega8? Das ist denn so richtig, dass der andauernd auf HIGH liegt? Wofür ist der 47pF-Kondensator in der Schaltung?
>Was ist eigentlich mit dem RESET-Eingang vom Atmega8? Das ist denn so >richtig, dass der andauernd auf HIGH liegt? Der RESET-Pin liegt andauernd auf High, aber wenn Du Dich nicht der Möglichkeit der ISP-Programmierung berauben willst, ist es empfehlenswert, ihn nicht direkt, sondern z. B. über einen 10 kOhm-Widerstand auf 5 V zu legen. >Wofür ist der 47pF-Kondensator in der Schaltung? Er dient zur Unschädlichmachung hochfrequenter Störsignale, falls es solche gibt. Für die grundsätzliche Funktion der Schaltung ist er nicht erforderlich. Sein Fehlen dürfte bei Deinem Aufbau nichts ausmachen.
ES FUNKTIONIERT !!! BIN TOTAL AUS DEM HÄUSCHEN ! Also an der Schaltung hat es nicht gelegen, die war einwandfrei. (was ich eigentlich gar nicht fassen kann, bei den ganzen Lötungen) Ich hatte beim kompilieren eine falsche Option angeklickt und immer den falschen Code hochgeladen ich Dussel. Da sitzt man stundenlang am löten und basteln und dann sowas. Echt bescheuert... Auf jeden Fall blinkt die LED jetzt lustig vor sich hin... Ich danke euch für eure zahlreichen Postings... PS: Ich mach jetzt erst mal ne Flasche Sekt auf...
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.