Bitte bei der Verwendung der _delay_ms und _delay_us darauf achten, dass die nur eine begrenzte Zeit (F_CPU/irgendwas) warten können. Wie lange, steht im header.
Danke. Die Funktion in der include-Datei kannte ich nicht.
Gruß
Stefan
Bitte bei der Verwendung der _delay_ms und _delay_us darauf achten, dass die nur eine begrenzte Zeit (F_CPU/irgendwas) warten können. Wie lange, steht im header.
nochmal zu einer meiner Anfangsprobleme:
Also den das Hello world für AVRs habe ich jetzt mal nach hinten gestellt, ich such jetzt nach einer Möglichkeit, einfach nur über Tastendruck eine LED einzuschalten. Ich habe im Netz übrigens noch eine Blinky-hex-Datei gefunden, die vom Speicher selber her um Einiges weniger belegt (ca. 1 1/2 Zeilen, im Gegensatz zu der anderen aber funktioniert.
Wenn ich jetzt an der RN-Control Taster 1 drücke soll LED 1 leuchten, bei T2 LED2 usw... wie würde der Quelltext aussehen?
Ein Anfangsproblem war außerdem, dass ich nur einen ATMega16 beschreiben konnte, nicht aber den ATMega32. Schuld war meine Ponyprog-Version, da war eine Aktualisierung notwendig.
Außerdem hab' ich das mit den Fuse-bits gecheckt, die AVRs sind jetzt mit Quarz betreibbar. Schön zu sehen, wie sich die Blinkfrequenz mit der Quarzfrequenz verlangsamt. (an irgendeinem Erfolgserlebnis muss ich mich ja orientieren)
vielleicht erbarmt sich jemand und hackt ein paar anschauliche Zeilen zusammen
da ich noch ganz dumm bin hab' ich mal folgendes versucht, funktioniert aber nicht... es sollten die ersten 2 LEDs des Ports leuchten... ich kann eine andere hex-file laden (Blinky von vorhin) die geht... die hier lässt sich compilieren und rüberschaufeln, funktioniert aber nicht auf dem ATMega
wo liegt mein Fehler?Code:#include <avr/io.h> int main(void) { /* Setzt das Richtungsregister des Ports C auf 0xff (alle Pins als Ausgang): */ DDRC = 0xff; while (1) { /* Setzt PortC auf 0x03, Bit 0 und 1 "high", restliche "low": */ PORTC = 0x03; } }
edit: äh hab' was doof formuliert
was heißt geht, compilliert aber nicht ?die hier geht compiliert aber nicht!
Das Programm muß sich doch kompilieren lassen...
Der einzigste Fehler, den ich sehe ist, wenn Du eine Funktion schreibst, die ein int zückgeben soll, mußt Du das auch tun...
int main(void)
und wo ist hier ein return???
Wie gut kennst Du Dich überhaupt mit C aus ?
Gruß Sebastian
ok schmeiß noch ein return 0; nach das ist ja nicht das Problem...
c an sich kann ich schon rel. gut ( hab' darin auch Vordiplom geschrieben usw, das sagt aber wieder weniger aus)
Wir haben eben nur Konsolenanwendungen geschrieben, wie die Ports vom AVR geschrieben werden usw ist mir noch nicht klar. Außerdem haben wir kein einziges mal was mit Interrupts gemacht!
dass sich das Programm kompilieren lässt ist klar, auch in Hex umwandeln ist nicht das Thema, in den AT schaufeln auch nicht... nur es leuchtet keine LED auf... hab' auch schon die Ports geändert, alle 4 Ports zusammen auf high gesetzt usw... irgendwo hab' ich da einen Denkfehler drin...
Naja, soweit ich weiß sind die LEDs gegen VCC geschaltet, mithin müsstest Du die Ports auf LOW setzten, sehe Schaltplan, ich hoffe, das wars...alle 4 Ports zusammen auf high gesetzt usw
Gruß Sebastian
hm bleibt sich egal ob man die LEDs von vcc auf Pin oder von Masse auf Pin setzt man muss nur die Stromflussrichtung beachten... das eine mal leuchten sie halt wenn Port auf "0" und das andere mal bei "1" ... da aber am PortC nur die ersten 2 Pins anders sind als der Rest müssten die LEDs einfach unterschiedlich on oder off sein, wie ist mir jetzt noch egal, hauptsache es leuchtet irgendwas! Es tut sich aber nix! Ich hab' das Gefühl, dass ich irgendwo vom compilieren her einen Fehler drin hab... ich erstelle mit AVR-GCC ein Hex-file das ich dann mit Ponyprog in den µC lade. Ich glaube nicht, dass der Fehler an Ponyprog liegt, da ich ja das Blink-Hex auch übertragen kann und es funktioniert.
Ich geb' also in der Kommandozeile ein avr-gcc leucht.c -o leucht.hex -mmcu=atmega32 -g -Os -Wl,--oformat=ihex
Liegt da evtl der Fehler?
Funktioniert das Beispiel aus dem Wiki inzwischen?
Ich kann den Code ja nicht auf allen möglichen Controllern mit allen Denkbaren Compiler-Versionen testen. Evtl. müsste das Beispiel dan korrigiert werden, falls es einen Fehler gibt.
Disclaimer: none. Sue me.
Lesezeichen