Beste tweakers,
Ik heb een probleem met mijn code wat ik op een atmega328P draai.
Ik heb in C++ een driver geschreven voor de w5100 (ethernet), echter als ik in mijn code een socket aan maak.
Server sock0(o);
Dan gebeuren er rare dingen, oa wordt de code die er boven staat niet meer helemaal uitgevoerd.
De fout zit dus waarschijnlijk in de constructor van mijn server class, ik heb echter niet zoveel ervaring met classes (dit is de eerste keer dat ik het een beetje serieus gebruik), dus zou iemand hier even naar kunnen kijken?
Een paar dingen wat ik al heb geprobeerd:
Flammert
Ik heb een probleem met mijn code wat ik op een atmega328P draai.
Ik heb in C++ een driver geschreven voor de w5100 (ethernet), echter als ik in mijn code een socket aan maak.
Server sock0(o);
Dan gebeuren er rare dingen, oa wordt de code die er boven staat niet meer helemaal uitgevoerd.
De fout zit dus waarschijnlijk in de constructor van mijn server class, ik heb echter niet zoveel ervaring met classes (dit is de eerste keer dat ik het een beetje serieus gebruik), dus zou iemand hier even naar kunnen kijken?
C: main
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
| #include "spi.hpp" // mijn librarys #include "ethernet.hpp" // mijn librarys void setup(){ pinMode(7, OUTPUT); pinMode(5, OUTPUT); melodi(); // piep toontje (tijdelijk) delay(1000); Serial.begin(115200); Serial.println("We just rebooted!!!!\n"); // hierna herstart hij ( de volgende regel wordt dus niet uitgevoerd), mits ik onderin de socket aan maak. Serial.println("\t Start init"); spi.init(); delay(1); } void loop() { Serial.println("\t begin setIpData"); wiz.setIpData(); Serial.println("\t sock init"); Server sock0(0); // ----------------------- als dit in mijn code staat Serial.println("end sock"); while(1); } |
C: Header
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
| class Server{ public: uint8_t buffer[bufferSize]; //Server(uint8_t number); Server(int number); void setPort(); void setPort(uint8_t laag); void setPort(uint8_t hoog, uint8_t laag); void setPort(uint16_t getal); void setPort(int x); int start(); // initalizatie int listen(); // luisteren voor binnen koment verkeer int checkEstablished(); // is er een verbinding tot stand gekomen? uint16_t receivedData(); // data ontvangen? void receivingData(); // er komt data binnen, nu verwerken int sendData(uint8_t data[], uint16_t length); // verstuur data void gotFin(); // fin: einde verbinding ontvangen? void closed(); // verbinding is verbroken (denk ik) int timeout(); // Timeout in de verbinding void close(); // sluit de verbinding uint8_t getStatus(); void disconnect(); // sluit de vebinding netjes af private: struct MODE{ const static uint8_t MULTI = 1<<7; const static uint8_...... // en nog veel meer constanten }SR; uint8_t sNr, number; // socket nummer }; |
C: cpp include
1
2
3
4
5
| Server::Server(int Number){ /// oorspronkelijk stond hier meer code in, maar dat heb ik er even uit gelaten (krijg het zelfde probleem hier mee) sNr=4; Number = 0; } |
Een paar dingen wat ik al heb geprobeerd:
- Alle functies leeg halen
- controlleren of de voeding spanning niet inzakt
- Andere(grote) microcontroller
- Controle of het geheugen niet vol loopt, (volgens de compiler niet)
Flammert
[ Voor 64% gewijzigd door flammert op 23-05-2015 12:51 ]