Hallo, ich bin absoluter Neuling in Sachen MicroController. Hab schon sehr viel gelesen. Erfolgreich erledigt habe ich folgendes: AVR Testboard von silvotronic aufgebaut. Einen Attiny2313 mit einem aus dem Internet geladenen Hex file (Blink1,hex) mit ponyprog programmier (LPT1) Alles Wunderbar!! PortB0 blinkt. Das Testprogramm ist in arm programmiert! Jetzt wollte ich gerne das ganze in C realisieren. AVRStudio 4.13 und dieses AVR2007 aus dem Internet geladen. Dank vieler Beiträge hier bin ich jetzt soweit das er meinen Quellcode compilieren möchte. Un da hakt es. siehe folgende Zeilen: **************************Mein QuellCode: //mein erstes Blink Programm //blink2.c #include<io.h> #include<portpins.h> void main (void) { unsigned int i; while(1) { PORT0=0x00; for (i=0;i<30000;i++); PORT0=0x01; for (i=0;i<30000;i++); } } ******************Die Fehlermeldung: Build started 17.11.2007 at 10:51:24 (Grün)avr-gcc.exe -I"C:\winAVR-200700525\avr\include\avr" -mmcu=attiny2313 -Wall u.s.w..... (gelb)../blink.c:6: warning: return type of 'main' is not 'int' (Rot)../blink.c: In function 'main': (rot)../blink.c:10: error: invalid lvalue in assignment (rot)../blink.c:12: error: invalid lvalue in assignment make: *** [blink.o] Error 1 Build failed with 2 errors and 1 warnings... ******************************************************************* Ja und nun bin ich erstmal am Ende. Weiß einfach nicht mehr weiter. Vielleicht kann mir einer mal etwas Starthilfe erteilen. MfG Baddy
Schau mal was in Zeile 10 und 12 steht. Ich vermute mal das sind die Ports. Diese Bezeichnungen vergleichst du mit denen aus dem Datenblatt.
jo dat funzt. Danke. Die Warnung war das ich void main (void) genommen habe. wenn ich int main(void) schreibe dann ist auch die warnung weg. Werd das gleich mal in den µC schreiben. mal sehen ob es blinkt. Vielen lieben dank. Gruß Baddy.
Hm?? Es scheint etwas mit der Zeitschleife nicht zu stimmen. Die Diode leuchtet nur ganz schwach. Wenn ich die 30000 vergrößere dann leutet sie gar nicht.
Mit welchem Takt läuft der µC überhaupt? 30000 Takte sind je nach CPU-Takt immer noch ne verdammt kurze Zeit, und dann blinkt die LED so schnell, dass es nicht mehr fürs Auge erkennbar ist. Abgesehen davon: Leere for-Schleifen sind Freiwild für den Optimizer des Compilers. In diesem Fall werden sie zwar offensichtlich nicht wegoptimiert, aber möglicherweise hast Du das Programm auch mit -O0 compiliert... Nimm entweder nen Timer oder die Funktionen aus der util/delay.h (die laufen aber nur mit eingeschaltetem Optimizer korrekt und sind in ihrer Maximalverzögerung begrenzt, Doku lesen!)
Warscheilich wird deine Warteschleife wegoptimiert. Ändere mal "unsigned int i;" in "volatile unsigned int i;". Zu "volatile" siehe das Tutorial.
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.