Show Posts
Pages: [1] 2 3 4
1  Using Arduino / Displays / Graphics Chip SSD1963: White (0xFFFF) issue on: October 26, 2013, 12:04:23 am
Graphics Chip SSD1963: White (0xFFFF) issue

Hi guys,
I'm running an Taijiuino Due clone with a SSD1963 272x480LCD in 16-bit mode.
Most of the colors I have tested are fine except white (0xFFFF in 565-RGB mode) which often is replaced by black (0x0000) or its previous color of the pixel. I also tested several fonts which all work fine without the white hiccup.

The copper enamel wires are about 12..15 cm long which is abt. 4-5 in. During the first placing into operation I inadvertently hooked up the panel to 5V instead of 3.3V. Did this crash the chips?

My actual hardware connectivity is not exactly like the Henning Karlsen version but very similar and also I understood his register settings during initial phase which I tested later on - produces the same erronous result. Instead of C++ and the Ardino IDE I use C with AS 6.1.

Does one have an idea? 
2  Products / Arduino Due / Re: Please help identify a manufacturer PN for a Due part... on: October 10, 2013, 03:33:41 pm
I assume it is a PTS820 with 3.9 x 2.9 mm footprint from www.ck-components.com.
http://www.digikey.com/product-detail/es/PTS820%20J15MP%20SMTR%20LFS/PTS820%20J15MP%20SMTR%20LFS-ND/4142172
or:
http://de.mouser.com/Search/Refine.aspx?Keyword=PTS820
3  Products / Arduino Due / Re: Building a CAN API for Arduino DUE on: October 10, 2013, 03:05:04 pm
Hi,
there are a lot of possibillities to do trigger a time event on the CAN-bus.
You can use the rtc,  one of the timers or simply use the standard Cortex system timer - which is by far the most easy-to-use timer as it is always scintillating in the background of the core. Have you installed the Atmel Software framework yet? There are plenty of examples and many of them use this particular system timer, for example in the "Getting-Started Application on SAM - Arduino Due/X" - which by the way use TC0 additionally (at least I think so), too.


Hope this helps,

Joachim
 
4  Products / Arduino Due / Re: 7-segment design safe for Due outputs? on: October 01, 2013, 11:10:32 pm
No prob. Your buffer stage is just fine. You can use any sort of buffering I/O, eg. TTL '373 or whatever. Btw, I have never experienced any sort of flashover from collector to base as long as the drivers operating within their specs. Even a in a damaged transistor I think this case is very rare. But beware of metallic tools and wires on your bench, they are a real threat during initial operation.
5  Products / Arduino Due / Re: Arduino Due and CAN on: September 30, 2013, 02:30:16 pm
Don't understand this, too. The SAM3X is a gorgeous machine with two CAN modules and 8 mailboxes each. Against all that comfort the stone-age old 2515 is really a weak machine (I have some PIC18F458 which has the exact same CAN engine).
And don't forget: It is by no means sure that your Uno code is running on the Due without additional, well, sometimes hair scuffling modfications.
Wether you use the 230, 231 or 234 CAN transceiver is almost unimportant. They only differ in minorities like chip enable line or loopbck mode. Even the MCP2551 (with some tweaks) can be used.
6  Products / Arduino Due / Re: Building a CAN API for Arduino DUE on: September 24, 2013, 02:27:35 am
Hi guys,
I think I need a idea.

I try to communicate with my OBD simulator with 29-bit EX-ID frame. 11-bit mode work fine but in 29-bit mode the sim doesn't resond. I looked on my scope and I saw the exact time for 29bit frame with 8byte payload which I calculated before. But the sim plays possum.

Here is a chunk of my code which derived from the Atmel Code example. It works fine for 11bit frame mode (I send/receive with CAN_0). Did I forget something?

Code:
void getECUData(can_mb_conf_t *p_sc_mailbox_rx, can_mb_conf_t *p_sc_mailbox_tx) {
can_reset_all_mailbox(CAN0);
reset_mailbox_conf(p_sc_mailbox_rx);

/* Init CAN0 Mailbox 1 to Reception Mailbox. */
p_sc_mailbox_rx->ul_mb_idx = TEST1_CAN_COMM_MB_IDX + 1;  //mailbox 1
p_sc_mailbox_rx->uc_obj_type = CAN_MB_RX_MODE;
p_sc_mailbox_rx->ul_id_msk = CAN_MAM_MIDvA_Msk | CAN_MAM_MIDvB_Msk; //CAN 2.0A + B
if (!eepromData[EEPROM_CAN_11_29_BIT_ID]){
p_sc_mailbox_rx->ul_id = CAN_MID_MIDvA(0x7E8);  //get 7E8 from engine control module
p_sc_mailbox_rx->uc_id_ver = 0; // 0/1: standard/extended frame
}
else  {
p_sc_mailbox_rx->ul_id = CAN_MID_MIDvB(0x7E8);  //get 7E8 from engine control module
p_sc_mailbox_rx->uc_id_ver = 1; // Ver. A/B 0/1: standard/extended frame
}
can_mailbox_init(CAN0, p_sc_mailbox_rx);

// problem starts here ---------------------------------------

/* Init CAN0 Mailbox 0 to Transmit Mailbox. */
p_sc_mailbox_tx->ul_mb_idx = TEST1_CAN_COMM_MB_IDX; //mailbox 0
p_sc_mailbox_tx->uc_obj_type = CAN_MB_TX_MODE;
p_sc_mailbox_tx->uc_tx_prio = TEST1_CAN0_TX_PRIO;
if (!eepromData[EEPROM_CAN_11_29_BIT_ID]){
p_sc_mailbox_tx->uc_id_ver = 0; // 0/1: standard/extended frame
}
else {
p_sc_mailbox_tx->uc_id_ver = 1; // Ver. A/B 0/1: standard/extended frame
printf ("DEBUG: in getECUData(); 29bit frame mode\r\n");
}
p_sc_mailbox_tx->ul_id_msk = CAN_MAM_MIDvA_Msk | CAN_MAM_MIDvB_Msk; //CAN 2.0A + B
can_mailbox_init(CAN0, p_sc_mailbox_tx);

/* Write transmit information into mailbox. */
if (!eepromData[EEPROM_CAN_11_29_BIT_ID]){  //EEPROM_CAN_11_29_BIT_ID, bit0:  0: 11bit, 1: 29bit
p_sc_mailbox_tx->ul_id = CAN_MID_MIDvA(0x7DF);  // engine control module
}
else {
p_sc_mailbox_tx->ul_id = CAN_MID_MIDvB(0x7DF);  // engine control module
printf ("DEBUG: in getECUData(); 29bit frame mode\r\n");
}
//p_sc_mailbox_tx->ul_datal = ...; set by caller
//p_sc_mailbox_tx->ul_datah = ...;
p_sc_mailbox_tx->uc_length = MAX_CAN_FRAME_DATA_LEN; // 8bytes
can_mailbox_write(CAN0, p_sc_mailbox_tx);

// problem ends here ---------------------------------------

can_enable_interrupt(CAN0, CAN_IER_MB1);

/* Send out the information in the mailbox. */
can_global_send_transfer_cmd(CAN0, CAN_TCR_MB0);

/* Wait until TX Mailbox empty. */
while (!(CAN_MSR_MRDY == (CAN_MSR_MRDY &
can_mailbox_get_status(CAN0, TEST1_CAN_COMM_MB_IDX))));
}
7  Products / Arduino Due / SAM3: How many clock cycles per instruction? on: September 19, 2013, 01:28:03 am
Hi guys,
after looking in the data sheet for a whole while I still haven't figured out how many clock cycles per instruction are needed by the ARM core. All I found is the statement "3-stage pipeline" in the chapter about the Cortex implementation.
So is this three cycles for a "NOP" instruction? And what about the different memory access instructions?

As far as I know the PIC uC need 4 osc cycles per instruction, the AVRs only one. Does that mean the SAM3 when handling byte-size content with 84MHz (divided by three) is only abt. 30% faster as our ould friend, the 328P at 20MHz?
8  Products / Arduino Due / Re: Building a CAN API for Arduino DUE on: September 16, 2013, 08:42:31 am
Hi guys,
today I compiled the due_can project the first time with Visual Micro + AS6.1. The second example from Collin brought:

Compiling 'Arduino_Due_CAN_Sample_2' for 'Arduino Due (Programming Port)'
Binary sketch size: 73052 bytes (used 14% of a 524288 byte maximum) (11,29 secs)

which is a huge amount of code for this little example. Even my complete CAN OBD-II project (with a small GUI and an estimated far more than thousand lines of code) written in pure C is only 43k in size. I wonder what's going on here. Also the Visual Micro hides all compiler warnings which yield additional confusings when debugging. I haven't found any settings for tweaking the IDE yet. Don't know if it is really that useful for developing CAN stuff...
 
9  International / Deutsch / Re: Schiebe register on: September 14, 2013, 11:36:00 pm
Eine kleine Anmerkung von mir:

Wie so oft ist das Wichtigste genau das, was die geringste Aufmerksamkeit auf sich zog: Das Datenblatt des '595 (die Gebrauchsanweisung) bzw die dort enthaltene Logiktabelle. Dort steht alles drin was an dieser Stelle wichtig ist. Hol dir ne Cola, lehn' dich zurück, mach die Musik aus und schau dir genau an was diese kleine Bestie macht:




Der '595 hat:
Q_A ... Q_H - Ausgänge
Q_H' - Ausgang des Schiebetakts
SI - Serial in (für die Daten)
SCK - Clock in (Datentakt)
/SCLR - Schieberegister löschen (aktiv bei "0")
/G - Ausgänge aktiv (aktiv bei "0")
RCK - Takteingang des Speicherregisters


Immer wenn am Takteingang das Signal von "0" auf "1" wechselt (steigt), ein Bit an SI als logische "1" erkannt wird, und der Löscheingang /SCLR brav auf "0" liegt wird eine "1" eingeschoben. Die ist an den Ausgängen aber noch nicht sichtbar (das wäre schlecht da immer ein 8 Bit Paket eingeschoben werden muß, was zur Folge hätte, daß kurz alle Ausgänge kuzzeitig scheinbar undefiniert aufblitzen würden).

Nachdem die 8 Bits eingetaktet sind werden mit einer positiven Flanke an RCK die Daten übernommen und sind an den Ausgängen sichtbar, vorausgesetzt der Eingang /G zum aktivieren der Ausgänge liegt auf "0" - das darf er übrigens die gesamte Zeit über, also auch während des Taktens.

Wenn du verstanden hast wie ein Schieberegister funktioniert, ist der Sprung zu drei hintereinander geschalteten Registern nicht mehr schwierig. Auch alle andere Varianten die es so gibt funktionieren im Prinzip ähnlich, man kann zB auch umgekehrt, also Daten die parallel ankommen mit einem '164 mit fast dem gleichen Prinzip in einen seriellen "Datensttrom" verwandeln (zB. um bei einem größeren Projekt Porteingänge zu sparen).

10  Products / Arduino Due / Re: ATMEL Studio 6.1 + VISUAL MICRO for DUE on: September 14, 2013, 06:49:10 am
Hi,
I looked at the Visual Micro forum and found other people have the same prob as well. Fortunately there is a update to version 1309.11 available (wich came out some days ago) with runs straight out of the box. Great!


11  International / Deutsch / Re: CAN BUS Datalogger für Rennwagen ECU on: September 13, 2013, 01:36:56 pm
Den Due mit der Arduino-IDE zu programmieren ist kein Zuckerlecken. Ich mache das mit Atmel-Studio, allerdings ohne Zugriff auf den Arduino-Code, da das Plugin bei mir nicht funktioniert. Ich hatte ein Example für einen anderen Prozessor aus dem Framework etwas angepasst und ein bisschen Code dazugestrickt, dann kam das hier raus:
http://imageshack.us/f/707/glhn.jpg/
12  International / Deutsch / Re: Wie kann ich die DAC´s auf einem Mega2560 ansprechen? on: September 13, 2013, 01:28:25 pm
ich habe nur noch ein kleines Problem. Wenn das ganze ca. 10-15 Min läuft nimmt der eine DAC den wert vom anderen DAC an.?!?!

D.h., du mußt mindestens zwei ICs an den Arduino angeschlossen haben - denn ein PCF8591 hat nur _einen_ DAC. Das kann eigentlich nur sein wenn versehentlich einer der beiden ICs mit der falschen Adresse angesprochen wird oder wenn sich die Adresskombination die über die Pins erkannt wird, sich aus irgendeinem Grund ändert.

Oder meinst du ADC? Was die Eingänge machen weiß natürlich außer dir niemand...
13  International / Deutsch / Re: leds am schieberegister blinken on: September 13, 2013, 01:06:02 pm
>Vielleicht hilft ein schnellerer Takt ein wenig.
Hihi. Ja - man muß so schnell eintakten, daß die Leds so träge werden, daß sie nicht mehr schnell genug einschalten können. Das sollte so ab etwa 2MHz funktionieren...



Ok. Jetzt zum Ernst der Sache:
Schau dir mal das Datenblatt zum '164 an. Dort findest du eine Wahrheitstabelle - schau sie dir ganz genau an. In ihr sind alle relevanten Kombinationen dargestellt sind.

Wenn du Pin 8 (/CLEAR) auf high legst während du die Daten auf die fallende Flanke eintaktest dann ändern die Ausgänge ihre Pegel nicht.

Allerdings hätte ich wie ein Vorredner schon vermerkt, ebenfalls einen '595 genommen. Kostet bei Reichelt ein paar Cent. Bei denen ist Schiebe- und Speicherregister sauber getrennt. Und Abschalten kann man die Ausgänge auch noch.
14  International / Deutsch / Re: Wie oft kann ein Arduino Nano programmiert werden? on: September 13, 2013, 12:44:01 pm
Ich sag mal so: Die Lebensdauer von 10.000 x flashen muß nicht der Minimalwert sein, es kann auch statistische Ausreißer geben.

Mir ist mal ein Atmega 1284P (der große Bruder des 328P der auf der Ardino-Platine sitzt) kaputtgegangen - er ließ sich mitten im Code schreiben einfach nicht mehr flashen. Erst dachte ich es liegt an meinem chaotischen Versuchsaufbau, aber nach dem ich ne Stunde lang rumgetestet hab, ich ihn runter warf, einen neuen in TQFP-44 auflötete und dann alles auf Anhieb ging, gehe ich davon aus, daß der Flash-Speicher in diesem Fall frühzeitig seine max. Zyklen-Lebensdauer erreicht hat. Waren vielleicht ein paar tausend Flash-Zyklen bei denen ich sehr viele kleine Routinen getestet hab die sich in Bruchteilen von Sekunden mit dem ISP (1Mibt/sek) sehr bequem einflashen ließen (kein Vergleich zum Arduino-IDE Gedöns... )
15  International / Deutsch / Re: CAN BUS Datalogger für Rennwagen ECU on: September 13, 2013, 12:27:35 pm
Funktioniert ein Code?
Ich hab hiern Due den ich an nen Peugeot 207 angeschlossen hab. Anschließen kam n böser Fehler auf dem Display des Bordrechners, "ESP defekt" oder sowas. Ich hab noch nen Simulator von Ozen Elektronik, an dem funktioniert das Auslesen einwandfrei. Grummel.
Pages: [1] 2 3 4