Achso richtig, F_CPU wird schon in der Asuro Bibliothek benötigt (also vor deinem Code).
Am besten ist es sowieso, wenn man das in dem Makefile einstellt, so wie hier: http://www.mikrocontroller.net/artic...spiel_Makefile
Achso richtig, F_CPU wird schon in der Asuro Bibliothek benötigt (also vor deinem Code).
Am besten ist es sowieso, wenn man das in dem Makefile einstellt, so wie hier: http://www.mikrocontroller.net/artic...spiel_Makefile
Danke rXenon,
also ich hab mir das mal angeguckt und wenn ich das recht verstehe muss ich einfach in das Makefile F_CPU = 8000000 schreiben oder?
Danke
Mfg Florian
Init() vergessen.
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
Danke radbruch, ich vermute du meinst im Code. Aber leider löst das mein Problem nicht wirklich.
Und das F_CPU = 8000000 im Makefile hat mir leider auch nicht geholfe die Fehlermeldung bleibt immernoch bestehen.
Trozdem Danke
Mfg Florian
Hallo
"Du kannst also einfach in deine .c Datei folgendes hinter den includes schreiben:" dürfte ja wohl zu spät sein, wenn die Definition in asuro.c fehlt. Vielleicht hilft es auf die schnelle F_CPU in der Zeile 145 in asuro.c zu ersetzen. Vermutlich werden an dieser Stelle einmalig die Werte für die Baudratenregister des USART berechnet. Das könnte man auch von Hand erledigen und die Werte direkt im Code eintragen. Dann würde es wieder weitergehen...
https://www.roboternetz.de/community...53308-AsuroLib
Gruß
mic
Geändert von radbruch (10.06.2012 um 05:40 Uhr)
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
Hallo,
ich hoffe ich nerve jetzt nicht aber es funktioniert immernoch nicht.
Ich hab alle ausprobiert was hier gesagt wurde, ich hab es ins Makefile geschrieben und in asuro.c in die Zeile 145 F_CPU = 8000000 geschrieben (Was zu nem ganzen haufen Fehlern geführt hat).
Und F_CPU = 8000000 ganz einfach in mein Programm zuschreiben hat auch nicht fuktioniert.
Danke
Hallo
Keine Ahnung was du damit meinst. Der betreffende Bereich in asuro.c sieht so aus:in asuro.c in die Zeile 145 F_CPU = 8000000 geschrieben (Was zu nem ganzen haufen Fehlern geführt hat).
Zeile 145 ist rot markiert. Hier ersetzt du F_CPU durch 8000000 oder rechnest den Wert für das jeweilige Register selbst aus:Code:/* Die serielle Schnittstelle wurde waerend der Boot-Phase schon programmiert und gestartet. Hier werden die Parameter auf 2400 1N8 gesetzt. */ #if defined(__AVR_ATmega168__) UBRR0L = (uint8_t)(F_CPU/(BAUD_RATE*16L)-1); UBRR0H = (F_CPU/(BAUD_RATE*16L)-1) >> 8; UCSR0B = (1<<RXEN0) | (1<<TXEN0); UCSR0C = (1<<UCSZ00) | (1<<UCSZ01); #else UBRRH = (((F_CPU/BAUD_RATE)/16)-1)>>8; // set baud rate UBRRL = (((F_CPU/BAUD_RATE)/16)-1); UCSRB = (1<<RXEN)|(1<<TXEN); // enable Rx & Tx UCSRC = (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0); // config USART; 8N1 #endif
UBRRH = (((8000000/2400)/16)-1)>>8; // set baud rate
UBRRL = (((8000000/2400)/16)-1);
Oder du verwendest direkt den Wert für UBRR aus dem Datenblatt unter "Examples of Baud Rate Setting"
UBRRH=0; // set baud rate
UBRRL=207;
Das funktioniert aber nur, weil der asuro alle seine Zeiten selbst berechnet und nicht delay.h verwendet.
Gruß
mic
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
Danke,
jetzt weiss ich wass du meinst, und ich habs genaus so gemacht, aber dann kommen nurnoch mehr Fehler.
Der Code aus asuro .c:
Das führt zu diesen Fehlern:Code:#else UBRRH = (((8000000/2400)/16)-1)>>8; // set baud rate UBRRL = (((8000000/2400)/16)-1); UCSRB = (1<<RXEN)|(1<<TXEN); // enable Rx & Tx UCSRC = (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0); // config USART; 8N1 #endif
Danke für die Gedulttest.o: In function `main':
C:\Users\Grau\Desktop\Asuro/test.c:8: undefined reference to `EncoderInit'
C:\Users\Grau\Desktop\Asuro/test.c:10: undefined reference to `GoTurn'
C:\Users\Grau\Desktop\Asuro/test.c:11: undefined reference to `GoTurn'
asuro.o: In function `__vector_4':
C:\Users\Grau\Desktop\Asuro/asuro.c:225: undefined reference to `count36kHz'
C:\Users\Grau\Desktop\Asuro/asuro.c:225: undefined reference to `count36kHz'
C:\Users\Grau\Desktop\Asuro/asuro.c:226: undefined reference to `count36kHz'
C:\Users\Grau\Desktop\Asuro/asuro.c:227: undefined reference to `timebase'
C:\Users\Grau\Desktop\Asuro/asuro.c:227: undefined reference to `timebase'
C:\Users\Grau\Desktop\Asuro/asuro.c:227: undefined reference to `timebase'
C:\Users\Grau\Desktop\Asuro/asuro.c:227: undefined reference to `timebase'
C:\Users\Grau\Desktop\Asuro/asuro.c:227: undefined reference to `timebase'
asuro.o:C:\Users\Grau\Desktop\Asuro/asuro.c:227: more undefined references to `timebase' follow
asuro.o: In function `__vector_4':
C:\Users\Grau\Desktop\Asuro/asuro.c:228: undefined reference to `Ovr2IntFunc'
C:\Users\Grau\Desktop\Asuro/asuro.c:228: undefined reference to `Ovr2IntFunc'
C:\Users\Grau\Desktop\Asuro/asuro.c:229: undefined reference to `Ovr2IntFunc'
C:\Users\Grau\Desktop\Asuro/asuro.c:229: undefined reference to `Ovr2IntFunc'
asuro.o: In function `__vector_3':
C:\Users\Grau\Desktop\Asuro/asuro.c:242: undefined reference to `count36kHz'
C:\Users\Grau\Desktop\Asuro/asuro.c:242: undefined reference to `count36kHz'
C:\Users\Grau\Desktop\Asuro/asuro.c:243: undefined reference to `count36kHz'
C:\Users\Grau\Desktop\Asuro/asuro.c:244: undefined reference to `timebase'
C:\Users\Grau\Desktop\Asuro/asuro.c:244: undefined reference to `timebase'
C:\Users\Grau\Desktop\Asuro/asuro.c:244: undefined reference to `timebase'
C:\Users\Grau\Desktop\Asuro/asuro.c:244: undefined reference to `timebase'
C:\Users\Grau\Desktop\Asuro/asuro.c:244: undefined reference to `timebase'
asuro.o:C:\Users\Grau\Desktop\Asuro/asuro.c:244: more undefined references to `timebase' follow
asuro.o: In function `__vector_2':
C:\Users\Grau\Desktop\Asuro/asuro.c:269: undefined reference to `switched'
C:\Users\Grau\Desktop\Asuro/asuro.c:269: undefined reference to `switched'
asuro.o: In function `__vector_14':
C:\Users\Grau\Desktop\Asuro/asuro.c:303: undefined reference to `AdcIntFunc'
C:\Users\Grau\Desktop\Asuro/asuro.c:303: undefined reference to `AdcIntFunc'
C:\Users\Grau\Desktop\Asuro/asuro.c:304: undefined reference to `AdcIntFunc'
C:\Users\Grau\Desktop\Asuro/asuro.c:304: undefined reference to `AdcIntFunc'
asuro.o: In function `Init':
C:\Users\Grau\Desktop\Asuro/asuro.c:181: undefined reference to `FrontLED'
C:\Users\Grau\Desktop\Asuro/asuro.c:182: undefined reference to `BackLED'
C:\Users\Grau\Desktop\Asuro/asuro.c:183: undefined reference to `BackLED'
C:\Users\Grau\Desktop\Asuro/asuro.c:184: undefined reference to `StatusLED'
C:\Users\Grau\Desktop\Asuro/asuro.c:186: undefined reference to `MotorDir'
C:\Users\Grau\Desktop\Asuro/asuro.c:187: undefined reference to `MotorSpeed'
C:\Users\Grau\Desktop\Asuro/asuro.c:189: undefined reference to `autoencode'
C:\Users\Grau\Desktop\Asuro/asuro.c:189: undefined reference to `autoencode'
C:\Users\Grau\Desktop\Asuro/asuro.c:191: undefined reference to `Ovr2IntFunc'
C:\Users\Grau\Desktop\Asuro/asuro.c:191: undefined reference to `Ovr2IntFunc'
C:\Users\Grau\Desktop\Asuro/asuro.c:192: undefined reference to `AdcIntFunc'
C:\Users\Grau\Desktop\Asuro/asuro.c:192: undefined reference to `AdcIntFunc'
Lesezeichen