Hi,
ich versuche derzeit mittlerweile ein wenig verzweifelt den uIP auf
einem Atmega zum laufen zu bekommen. Habe mittlerweile ein Stück Code,
welches auf wunderbar läuft. Mittlerweile ist es zu Testzwecken arg
abgespeckt. Es gehört dazu prinzipiell ein UART, SPI für den eth28j60
usw.
1 | #include <avr/io.h>
|
2 | #include <stdint.h>
|
3 | #include <inttypes.h>
|
4 | #include <stdio.h>
|
5 | #include <util/delay.h>
|
6 |
|
7 | #include "uart.h"
|
8 | #include "spi.h"
|
9 | #include "config.h"
|
10 | #include "network.h"
|
11 | //#include "uip/uip/uip.h"
|
12 | //#include "uip/uip/uip_arp.h"
|
13 | //#include "uip/uip/timer.h"
|
14 |
|
15 | #define BAUD 103
|
16 |
|
17 | static FILE mystdout = FDEV_SETUP_STREAM(uart_putchar,NULL,_FDEV_SETUP_WRITE);
|
18 |
|
19 | int main(void){
|
20 | DDRD = (1 << DDD7) | (1 << DDD6) | (1<< DDD5) | (1<< DDD4) | (1<< DDD3) | (1<< DDD2);
|
21 | PORTD = 0x00;
|
22 | PORTD &= ~(1 << PD7);
|
23 | stdout = &mystdout;
|
24 | PORTD &= ~(1 << PD6);
|
25 | //uip_ipaddr_t IpAddr;
|
26 |
|
27 | //Initialisierungen
|
28 | uart_init(BAUD);
|
29 | PORTD &= ~(1 << PD5); uint16_t i = 0;
|
30 | uint16_t stat = 0;
|
31 |
|
32 | PORTD &= ~(1 << PD4);
|
33 | while(1){
|
34 | //printf("Der Controller laeuft...\n");
|
35 | uart_write('a');
|
36 | i = 0;
|
37 | while(i <= 100){
|
38 | _delay_ms(10);
|
39 | i++;
|
40 | }
|
41 | if(stat == 1){
|
42 | stat = 0;
|
43 | PORTD |= (1 << PD4);
|
44 | }
|
45 | else{
|
46 | stat = 1;
|
47 | PORTD &= ~(1 << PD4);
|
48 | }
|
49 | }
|
50 | return 0;
|
51 | }
|
das ist das was übrig ist. Wenn ich dieses Programm kompiliere läuft es
auch wunderbar. Auch der UART. Sowohl für den 644 als auch den 32er
(nach Änderung der UART-Register).
Nun zu meinem Problem. Wenn ich nun zusätzlich die Quellen des uip
mitkompiliere (noch gar nicht einbinde), dann läuft gar nichts mehr.
Nichteinmal all die schönen LEDs gehen an. In der Simulation mit
AVRStudio läuft das aber alles sehr schön durch. Kann mir jemand einen
Tipp geben, wo ich ansetzen muss um dieses Problem zu beheben? Wo ist
mein Denkfehler? Was übersehe ich? Wo habe ich welche Doku nicht
vollständig gelesen? Wie kann so ein bissel uIP-Kram das alles plötzlich
zerstören? Bin derzeit ein wenig verwirrt.
Gruß
Schmidti