Show Posts
Pages: [1] 2 3 ... 26
1  International / Deutsch / Re: Zugriff auf PROGMEM-Array on: August 30, 2014, 05:41:49 pm
Ach so, da gehts um die Größe des PROGMEM-Blocks. Ich dachte es geht um die Größe des Flash.
2  International / Deutsch / Re: Zugriff auf PROGMEM-Array on: August 30, 2014, 05:24:22 pm
Der Unterschied zwischen near und far ist nur relevant wenn man Flash Daten über die 64kB Grenze schreibt. Dann wird es wirklich kompliziert, da ein 16-Bit Zeiger nur 32 64k adressieren kann und man noch ein paar extra Tricks braucht um das zu umgehen.

Das heisst, ich kann eine Software mit PROGMEM-Elementen vom Uno nicht auf dem Mega verwenden? 32K Flash <-> 256k Flash
Oder kümmert sich da der Compiler drum?
3  International / Deutsch / Re: Zugriff auf PROGMEM-Array on: August 30, 2014, 04:05:11 pm
Hi Serenifly,

du bist wieder meine Rettung.

Das hatten wir doch schon ein paar mal smiley

Aber du hast recht. Letzes mal waren es Strings. Dachte mit Integer geht das ganz anders.
Das werd ich wohl nie so richtig verinnerlichen (Schäm)

Mit deinen Infos hab ich auch jetzt die PROGMEM-Referenz gefunden.

Noch zwei Fragen:
A.)
Gibts da einen Unterschied: pgm_read_word() <-> pgm_read_word_near()
B.)
Quote
As mentioned above, it is important to use the datatypes outlined in pgmspace.h.
Also besser so definieren?
Code:
    const prog_uint16_t Code17[] PROGMEM ={
    135,57,17,16,17,51,17,16,17,16,17,16,17,16,17,16,17,16,17,16,
4  International / Deutsch / Zugriff auf PROGMEM-Array on: August 30, 2014, 02:59:38 pm
Hi,
um RAM zu sparen hab ich ein int-array in den Flash "verbannt".
Bloss wie kann ich jetzt aus meiner Funktion darauf zugreifen?

Da steh ich jetzt aber voll auf dem Schlauch.

Hier dazu der entsprechende Code

Ohne PROGMEN läuft er einwandfrei. Mit PROGMEM bekomme ich keine Daten
Code:
   const int Code17[] PROGMEM ={
    135,57,17,16,17,51,17,16,17,16,17,16,17,16,17,16,17,16,17,16,
    17,16,17,16,17,16,17,16,17,51,17,16,17,16,17,16,17,16,17,16,
    17,16,17,16,17,51,17,51,17,51,17,16,17,16,17,51,17,16,17,16,
    ....}

void SendPanasonic17b() {
  Serial.println("SendPanasonic17b");  
    for(int x=0; x <= 133; x=x+2) {
        pulseIR(Code17[x]*26);          
        delayMicroseconds(Code17[x+1]*26);
    }
}

gruß/hk007
5  International / Deutsch / Re: Screw shield für Mega gesucht on: August 24, 2014, 05:28:46 pm
Hat das schon jemand vorgeschlagen?
http://www.aqualedsource.com/shop/product_info.php?cPath=1_5&products_id=31

Ich hab mir die Version mit TFT-Connector für ein 7" Display gegönnt.
6  International / Deutsch / Re: Sketch Upload mit 20m active repeater Kabel klappt nicht on: August 24, 2014, 12:10:40 pm

Und die 20m überbrücken? Da fällt mir nur Funk oder Netzwerk ein, ich glaube
aber nicht, das der Arduino sich so programmieren läßt.
Mit 2 XBee und relativen Zwischenplatinen ist das ohne Aufwand möglich.
Grüße Uwe

Aufhorch! Interesse geweckt! Hast du dazu nen Link o.ä.?
7  International / Deutsch / Re: Wieder mal ein Problem mit const char on: August 22, 2014, 06:16:28 pm
Hi,
danke. Hast mir mal wieder den eleganteren Weg gezeigt :-)

Wäre auch schön gewesen, wenn das ether.dnsLookup() nicht nur mit dem Hostnamen, sondern auch mit der IP-Adresse arbeiten würde. Dann hätte alles von selber gepasst.
8  International / Deutsch / Re: Wieder mal ein Problem mit const char on: August 22, 2014, 05:48:58 pm
So, Kommando zurück.
Kein Problem mit dem String, sondern durch das Wechseln auf die feste IP, hab ich den DNSlookup rausgenommen. Aber der liefert als Ergebnis eine ether.hisip und die ist anscheinend notwendig für das Senden.
@Serenifly. Hast schon recht, mit der Frage nach vernünftiger Doku.
So wirds jetzt was:
Code:
const char website[] PROGMEM = "192.168.1.2";
//  if (!ether.dnsLookup(website))
//    Serial.println(F("DNS failed"));
//    ether.printIp("SRV: ", ether.hisip);
ether.hisip[0] = 192;
ether.hisip[1] = 168;
ether.hisip[2] = 1;
ether.hisip[3] = 2;

   ether.browseUrl(startphp, phpstring, website, my_callback);

Wie könnte ich jetzt die ether.hisip dynamisch aus meiner website[] füttern?
Das klappt nämlich nicht:
Code:
ether.hisip[0] = website[0];
Edit: Oh mann wie doof. Kann ja auch nicht, das Eine sind Zahlen, das andere ASCII-Zeichen...

Das wäre wohl der hölzerne Weg??
Code:
ether.hisip[0] = (website[0]-48)*100 + (website[1]-48)*10 + (website[2]-48);
9  International / Deutsch / Re: Wieder mal ein Problem mit const char on: August 22, 2014, 05:03:31 pm
Eine vernünftige und ausführliche Doku von browseUrl() wäre da nicht schlecht.
Ja, zu der Lib find ich im Inet keine Referenz o.ä.
Evtl. das?
http://jeelabs.net/pub/docs/ethercard/index.html
Und reverse-engineering der library ist über meinen Fähigkeiten.
Hilft das weiter:
Code:
   /**   @brief  Prepare HTTP request
    *     @param  urlbuf Pointer to c-string URL folder
    *     @param  urlbuf_varpart Pointer to c-string URL file
    *     @param  hoststr Pointer to c-string hostname
    *     @param  callback Pointer to callback function to handle response
    *     @note   Request sent in main packetloop
    */
    static void browseUrl (const char *urlbuf, const char *urlbuf_varpart,
                           const char *hoststr,
                           void (*callback)(uint8_t,uint16_t,uint16_t));

Edit: Selbst wenn ich die IP aus dem Flash ins RAM nehme (also ohne PROGMEM deklariere), funzt es nicht.
10  International / Deutsch / Re: Wieder mal ein Problem mit const char on: August 22, 2014, 04:58:39 pm
Nope,
mit Komma gehts nicht. Kein Telegramm in Wireshark
11  International / Deutsch / Wieder mal ein Problem mit const char on: August 22, 2014, 04:47:58 pm
Hi,

die C-Strings werden wohl nie meine Freunde. Mir wurde hier im Board schon so toll geholfen. Aber aktuell hakts wieder mal bei mir.
Momentan geht es darum mittels der Ethercard-lib ein "Telegramm" abzusenden. Dazu nutze ich den Befehl Ether.browseUrl.
Im Demosketch wird dazu der Hostname verwendet.
1.) Das hier funktioniert:
Code:
const char website[] PROGMEM = "file-server";
ether.browseUrl(startphp, phpstring, website, my_callback);

2.) Wenn ich anstelle des Hostnames die IP-Adresse eingeben will, dann klappt es nicht:
Code:
const char website[] PROGMEM = "192.168.1.2";
ether.browseUrl(startphp, phpstring, website, my_callback);

3.) Schreibe ich die IP-Adresse aber direkt in den Befehl, dann funktioniert es auch wieder:
Code:
ether.browseUrl(startphp, phpstring, "192.168.1.2", my_callback);

Wo ist jetzt aber der Unterschied zwischen 2 und 3 ?
12  International / Deutsch / Re: Arduino UNO <-> NANO, Software mit INT0 läuft nur auf UNO --> gelöst :-) on: August 21, 2014, 11:50:18 am
Das mit dem Shield hattest Du nicht gesagt  smiley-confuse
Ja ich weiss, das klebt so schön unter dem Nano, dass ich es total vergessen habe. Mea culpa, mea maxima culpa  smiley-roll-sweat

Quote
und Danke für den Link zum Shield - kannte ich noch nicht und ist sehr interessant
Ist halt kein Wiznet, sondern "nur" ein ENC28j60. Ne Lib gibts ja dafür und reicht mir für meine Belange vollkommen aus.
Bei Interesse suche ich noch mal den Link fürs Schaltbild.
13  International / Deutsch / Re: Arduino UNO <-> NANO, Software mit INT0 läuft nur auf UNO on: August 21, 2014, 06:28:53 am
Hi,

an einen defekten Nano, oder ne kalte Lötstelle hab ich auch schon gedacht.

Aber manchmal ist man wie vernagelt. Ich hab auf dem Nano noch ein Ethernetshield drauf gesteckt : http://www.ebay.de/itm/Ethernet-Shield-for-Arduino-Nano-UNO-R3-work-as-ENC28J60-RJ45-Webserver-/111242798349?pt=Wissenschaftliche_Ger%C3%A4te&hash=item19e696650d. Auf dem UNO hatte ich ein anderes, das ich selber verdrahtet hatte.

War immer der Meinung, das nutzt nur die Ports D10/11/12/13.
Irgendwann so um 3:45 Uhr hab ich dann so weit rückwärts gebaut bis es funktionierte. Und siehe da. Das Shield war der Übeltäter. An und für sich ist das Shield eine super Sache, klein und direkt auf den nano steckbar. Allerdings hab ich dann ewig im Inet nach nem Schaltplan gesucht, und siehe da: Der Pin D2 wird auf dem Shield mit dem /INT des ENC28J60 verdröselt. Da das Shield auch ohne das Signal läuft, häng ich den jetzt am Shield einfach ab und hab wieder meine 2 Interrupt-Pins.

So long /hk007
14  International / Deutsch / Re: Arduino UNO <-> NANO, Software mit INT0 läuft nur auf UNO on: August 20, 2014, 04:12:07 pm
Polung passt. Bin ich mir sicher :-)

Edit:
Hab mal umgebaut auf D3 (Int 1) Da läuft es :-)
Da hats wohl jetzt was mit dem Pin D2.... Mal suchen
15  International / Deutsch / Arduino UNO <-> NANO, Software mit INT0 läuft nur auf UNO --> gelöst :-) on: August 20, 2014, 04:02:39 pm
Hi,

jetzt bin ich mit meinem Latein am Ende.
Habe auf einem UNO mit 328 DIL-Chip eine Software entwickelt, die auf PinD2 (= INT0) die Signale eines S0-Zählers aufnimmt und die Zeit zwischen 2 Signalen berechnet. Aufbau wie folgt: PinD2 mit 4k7 gegen 5V. dann PinD2 mit dem optokoppler des S0-Zählers gegen Masse. Klappt prima und bringt auch plausible Werte.

Nachdem die Softwareentwicklung abgeschlossen ist, wollte ich das Programm auf einem Nano (Platzproblem) portieren. Auf dem Nano ist ja auch ein 328er. Zwar eine andere Bauform, aber das sollte m.E. unkritisch sein.

Allerdings bekomme ich hier auf D2 keine stabilen Signale rein. Normal erwarte ich alle 10 Sekunden einen Impuls. Aber auf dem Nano flattert das Signal richtig. Ich hab die Schaltung jetzt schon 3 mal neu auf einem Breadboard aufgebaut, aber immer das selbe Ergebnis.

Hab ich irgendwas übersehen? Sind die beiden Chips doch nicht identisch?
Wäre um jede Hilfe dankbar. Aktuell hab ich keine Idee mehr

Gruß/hk007
Pages: [1] 2 3 ... 26