Ja du benötigst einen Level Converter da du das Board unbedingt mit 5V versorgen da U1 nur ab 4.5V funktioniert.
Du würdest z.B: so ein Level Converter brauchen Level Converter
Wichtig dabei ist das er Bidirektioal ist.
Nachdem Verkabeln einfach mein Tutorial hier im Forum durcharbeiten :thumbs1:
Posts by petit_miner
Registriere dich jetzt, um exklusive Vorteile zu genießen! Als registriertes Mitglied kannst du Inhalte herunterladen und profitierst von einem werbefreien Forum.
Mach mit und werde Teil unserer Community!
Mach mit und werde Teil unserer Community!
-
-
Ein normales Sketch kann ich genauso wenig flashen. Hier die Fehlermeldung:
EDIT:
Ich bin ja auch blöd wenn man mit einem USBtinyISP etwas hochladen will muss man unter dem Reiter Sketch hochladen mit Programmer auswählen.
Aber trotzdem kann ich keine Sketche hochladen, dies ist die neue Fehlermeldung:Code
Display MoreUsing Port : usb Using Programmer : usbtiny avrdude: usbdev_open(): Found USBtinyISP, bus:device: 007:004 AVR Part : ATmega328P Chip Erase delay : 9000 us PAGEL : PD7 BS2 : PC2 RESET disposition : dedicated RETRY pulse : SCK serial program mode : yes parallel program mode : yes Timeout : 200 StabDelay : 100 CmdexeDelay : 25 SyncLoops : 32 ByteDelay : 0 PollIndex : 3 PollValue : 0x53 Memory Detail : Block Poll Page Polled Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- --------- eeprom 65 20 4 0 no 1024 4 0 3600 3600 0xff 0xff flash 65 6 128 0 yes 32768 128 256 4500 4500 0xff 0xff lfuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00 hfuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00 efuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00 lock 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00 calibration 0 0 0 0 no 1 0 0 0 0 0x00 0x00 signature 0 0 0 0 no 3 0 0 0 0 0x00 0x00 Programmer Type : USBtiny Description : USBtiny simple USB programmer, http://www.ladyada.net/make/usbtinyisp/ avrdude: programmer operation not supported avrdude: Using SCK period of 10 usec avrdude: initialization failed, rc=-1 Double check connections and try again, or use -F to override this check. avrdude done. Thank you.
Momentan kann ich keine Sketche und keinen Bootloader auf den Arduino UNO flashen.
Lustigerweise kann ich ohne Probleme den Bootloader und auch Sketche auf meinen "selbstgebauten Arduino" übertragen. -
Wenn ich die IDE 1.6.5 mit Root Rechten starte und dann versuche einen Bootloader zu installieren bekomme ich folgendes:
Code
Display MoreArduino: 1.6.5 (Linux), Platine: "Arduino/Genuino Uno" /home/marcel/software/arduino-1.6.5-r5/hardware/tools/avr/bin/avrdude -C/home/marcel/software/arduino-1.6.5-r5/hardware/tools/avr/etc/avrdude.conf -v -patmega328p -cusbtiny -e -Ulock:w:0x3F:m -Uefuse:w:0x05:m -Uhfuse:w:0xDE:m -Ulfuse:w:0xFF:m avrdude: Version 6.0.1, compiled on Apr 14 2015 at 18:03:40 Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/ Copyright (c) 2007-2009 Joerg Wunsch System wide configuration file is "/home/marcel/software/arduino-1.6.5-r5/hardware/tools/avr/etc/avrdude.conf" User configuration file is "/home/marcel/.avrduderc" User configuration file does not exist or is not a regular file, skipping Using Port : usb Using Programmer : usbtiny avrdude: usbdev_open(): Found USBtinyISP, bus:device: 007:003 AVR Part : ATmega328P Chip Erase delay : 9000 us PAGEL : PD7 BS2 : PC2 RESET disposition : dedicated RETRY pulse : SCK serial program mode : yes parallel program mode : yes Timeout : 200 StabDelay : 100 CmdexeDelay : 25 SyncLoops : 32 ByteDelay : 0 PollIndex : 3 PollValue : 0x53 Memory Detail : Block Poll Page Polled Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- --------- eeprom 65 20 4 0 no 1024 4 0 3600 3600 0xff 0xff flash 65 6 128 0 yes 32768 128 256 4500 4500 0xff 0xff lfuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00 hfuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00 efuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00 lock 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00 calibration 0 0 0 0 no 1 0 0 0 0 0x00 0x00 signature 0 0 0 0 no 3 0 0 0 0 0x00 0x00 Programmer Type : USBtiny Description : USBtiny simple USB programmer, http://www.ladyada.net/make/usbtinyisp/ avrdude: programmer operation not supported avrdude: Using SCK period of 10 usec avrdude: initialization failed, rc=-1 Double check connections and try again, or use -F to override this check. avrdude done. Thank you. Fehler beim Brennen des Bootloaders.
Scheinbar wird der USBtinyISP erkannt, notfalls kann ich den Attiny2313A (Der auf dem USBtinyISP) ja mit dem UNO neu programmieren -
Hallo,
ich habe momentan das Problem das mein USBtinyISP Programmieradapter unter Xubuntu nicht erkannt wird.
Bzw. wird der Treiber nicht geladen.dmesg:
Code[ 71.820042] usb 7-1: new low-speed USB device number 2 using uhci_hcd [ 71.984280] usb 7-1: New USB device found, idVendor=1781, idProduct=0c9f [ 71.984284] usb 7-1: New USB device strings: Mfr=0, Product=2, SerialNumber=0 [ 71.984287] usb 7-1: Product: USBtinyISP
lsusb:
Code
Display MoreBus 002 Device 002: ID 0644:0200 TEAC Corp. All-In-One Multi-Card Reader CA200/B/S Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 007 Device 002: ID 1781:0c9f Multiple Vendors USBtiny Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 006 Device 003: ID 413c:3012 Dell Computer Corp. Optical Wheel Mouse Bus 006 Device 002: ID 413c:2105 Dell Computer Corp. Model L100 Keyboard Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 001 Device 002: ID 05e3:0716 Genesys Logic, Inc. USB 2.0 Multislot Card Reader/Writer Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Überall steht das man für Linux keine Treiber benötigt und sonst hatte noch nie jemand ein Problem damit.
Zudem taucht in der IDE kein Port auf der benutzt werden könnte. -
Hatte jetzt mal was Zeit mit dem ENC28J60 zu spielen.
Am wichtigsten war natürlich der Speedtest
Dafür das der ENC über SPI angeschlossen ist sind die Werte beachtlich :):thumbs1:CodeRetrieving speedtest.net configuration... Retrieving speedtest.net server list... Testing from Deutsche Telekom (93.232.209.36)... Selecting best server based on latency... Hosted by hotspot.koeln (Cologne) [28.18 km]: 38.547 ms Testing download speed........................................ Download: 4.11 Mbit/s Testing upload speed.................................................. Upload: 3.27 Mbit/s
-
Wurde jetzt bei den DT Overlays fündig:
Github
Mithilfe 3 Overlay Dateien kann man problemlos alle SPI Schnittstellen am PI aktivieren.QuoteName: spi2-1cs
Info: Enables spi2 with a single chip select (CS) line and associated spidev
dev node. The gpio pin number for the CS line and spidev device node
creation are configurable.
N.B.: spi2 is only accessible with the Compute Module.
Load: dtoverlay=spi2-1cs,<param>=<val>
Params: cs0_pin GPIO pin for CS0 (default 43 - BCM SPI2_CE0).
cs0_spidev Set to 'disabled' to stop the creation of a
userspace device node /dev/spidev2.0 (default
is 'okay' or enabled).
Jetzt muss ich nur noch die .dts Datei für den ENC28J60 bearbeiten, so dass dieser auch an SPI2 funktioniert. :thumbs1:
Vielen Dank für eure Hilfe -
Vielen Dank für das umfangreiche Dokument :thumbs1:
Wie sieht es jetzt mit der zweiten und sogar der dritten SPI Schnittstelle am Pi aus?
Ich habe vor eine eigene Platine mit dem Compute Modul zu erstellen.
Am Compute Modul sind 3 seperate SPI Schnittstellen vorhanden.
Wie finde ich weitere Infos zu den Schnittstellen?
Und was muss ich am Kernel verändern so dass ich SPI1 und SPI2 als Schnittstelle verwenden kann?
Wenn ich 2 unterschiedliche und separate SPI Schnittstellen verwende dürften sich die beiden Chips ja nicht in den Weg kommen.
Pinout Compute Modul -
Ok Danke für die Info.
Und wie sieht es so mit der Geschwindigkeit aus?
Der PI arbeitet nur als IOT Gerät und braucht eigentlich nur eine geringe Bandbreite. -
Guten Abend,
ich habe mal eine Frage bezüglich des SPI Busses am PI.
Ich hatte vor einen MCP2515 und einen ENC28J60 am PI anzuschließen.
Beide Chips können ganz einfach über den Devicetree eingehangen werden.
Aber wie wird das mit dem Chipselect geregelt?
Woher weiß der Devicetree welcher Chip an welchem Chip Select hängt?
Und wie schnell ist der ENC28J60 am PI?
Verringert sich die Geschwindigkeit wenn gleichzeitig der MCP2515 verwendet wird?
Meine Idee wäre es jetzt den MCP2515 an den anderen zweiten separaten SPI Bus des PI's anzuschließen.
Wie müsste ich dann die Devicetree Datei verändern? -
Mir ist jetzt erst klar geworden das beide CAN Bus Controller nicht gleichzeitig Daten an den PI versenden können, da beide ja an dem gleichen SPI Bus hängen.
An den neuen PI's (die mit den 40 Pin Header) gibt es 2 SPI Busse die getrennt voneinander arbeiten.
Du müsstest dafür die Device Tree Datei ein wenig verändern um die zweite SPI Schnittstelle zu verwenden. -
Ich vermute mal das hier was mit dem SPI CE nicht stimmt.
Hast du auch beide DT Overlays Can0 und Can1 hinzugefügt?
Und hast du an die 2 unterschiedlichen Interruptlinien gedacht?Gesendet von meinem GT-I9305 mit Tapatalk
-
Guten Abend,
Ich habe eine Frage bezüglich des Compute Moduls,
Normalerweise hat der Pi ja 2 seperate SPI Bus Linien.
Wie bekomme ich die zweite SPI Linie per Software aktiviert?
Am Ersten SPI Bus ist ein CAN Bus Controller angeschlossen.
Am Zweiten SPI Bus ist ein Ethernet Chip angeschlossen.
Was müsste ich am Device tree verändern das ich auch den Zweiten SPI Bus verwenden kann?
Vielen Dank im voraus -
Rom's werden auch nicht am gleichen Tag kompiliert
:thumbs1:
-
Ich schaue mal Heute Abend nach wo der Fehler liegt und versuche ihn zu reproduzieren.
Gesendet von meinem GT-I9305 mit Tapatalk
-
Am besten ignorierst du die Anleitung von Canberry und schaust mal meine hier Forum an.
Da ich gerade unterwegs bin kann ich leider nicht mit einem Link dienen.
Aber ein Suchen bei Google wird genauso erfolgreich sein
Raspberry Pi Can Bus
Der Vorteil bei meiner Anleitung ist das man kein spezielles Image braucht.Gesendet von meinem GT-I9305 mit Tapatalk
-
Du könntest mal versuchen die 2 Widerstände an Chip select und INT wegzulassen und ganz normal mit dem PI zu verbinden.
Zudem könntest du versuchen den MCP2551 erstmal komplett wegzulassen.
Den dieser wird nur für das Versenden bzw. Empfangen benötigt.
Sonst wäre es noch gut den Schaltplan (Das was du wirklich aufgebaut hast) mal mit Fritzing zu zeichnen oder das Steckbrett mindestens 15mal zu überprüfen
Manchmal schleicht sich auch ganz schnell ein Fehler ein.
Interessant wäre auch noch die Ausgabe vonum etwaige Softwareprobleme mit dem Devicetree auszuschließen.
Zudem wären viele Zusatzinfos gut: wie z.B: Welchen Kernel verwendest du ? welchen PI verwendest du? -
Dafür gibt es viele Fehlerquellen da hier die Hardware in die Software übergeht.
Du musst uns schon sagen was du für Can Bus Chips bzw. welches Board du verwendest.
Wenn du das ganze selbst auf einem Steckbrett aufgebaut hast wäre ein Schaltplan bzw. Ein Plan mit Fritzing von Vorteil.Gesendet von meinem GT-I9305 mit Tapatalk
-
Ich habe nur 2 Nodes und habe einfach das gemacht was im Sketch als Bemerkung steht.
Quote* This is an example of how to use the RF24 class. Write this sketch to two
* different nodes. Put one of the nodes into 'transmit' mode by connecting
* with the serial monitor and sending a 'T'. The ping node sends the current
* time to the pong node, which responds by sending the value back. The ping
* node can then see how long the whole cycle took.
*/
Nachdem ich im Seriellen Monitor bei einem UNO "T" eingebe und den anderen Seriellen Monitor des anderen UNO's über Minicom öffne kommt nur beim Versender: Now sending 5526...failed. Failed, response timed out.
Das erste failed weißt eigentlich daraufhin, dass das Versenden noch nicht mal geklappt hat. -
Der Sketch den ich verwende:
C
Display More#include <SPI.h> #include "nRF24L01.h" #include "RF24.h" #include "printf.h" // // Hardware configuration // // Set up nRF24L01 radio on SPI bus plus pins 9 & 10 RF24 radio(9,10); // // Topology // // Radio pipe addresses for the 2 nodes to communicate. const uint64_t pipes[2] = { 0xF0F0F0F0E1LL, 0xF0F0F0F0D2LL }; // // Role management // // Set up role. This sketch uses the same software for all the nodes // in this system. Doing so greatly simplifies testing. // // The various roles supported by this sketch typedef enum { role_ping_out = 1, role_pong_back } role_e; // The debug-friendly names of those roles const char* role_friendly_name[] = { "invalid", "Ping out", "Pong back"}; // The role of the current running sketch role_e role = role_pong_back; void setup(void) { // // Print preamble // Serial.begin(57600); printf_begin(); printf("\n\rRF24/examples/GettingStarted/\n\r"); printf("ROLE: %s\n\r",role_friendly_name[role]); printf("*** PRESS 'T' to begin transmitting to the other node\n\r"); // // Setup and configure rf radio // radio.begin(); // optionally, increase the delay between retries & # of retries radio.setRetries(15,15); // optionally, reduce the payload size. seems to // improve reliability //radio.setPayloadSize(8); // // Open pipes to other nodes for communication // // This simple sketch opens two pipes for these two nodes to communicate // back and forth. // Open 'our' pipe for writing // Open the 'other' pipe for reading, in position #1 (we can have up to 5 pipes open for reading) //if ( role == role_ping_out ) { //radio.openWritingPipe(pipes[0]); radio.openReadingPipe(1,pipes[1]); } //else { //radio.openWritingPipe(pipes[1]); //radio.openReadingPipe(1,pipes[0]); } // // Start listening // radio.startListening(); // // Dump the configuration of the rf unit for debugging // radio.printDetails(); } void loop(void) { // // Ping out role. Repeatedly send the current time // if (role == role_ping_out) { // First, stop listening so we can talk. radio.stopListening(); // Take the time, and send it. This will block until complete unsigned long time = millis(); printf("Now sending %lu...",time); bool ok = radio.write( &time, sizeof(unsigned long) ); if (ok) printf("ok..."); else printf("failed.\n\r"); // Now, continue listening radio.startListening(); // Wait here until we get a response, or timeout (250ms) unsigned long started_waiting_at = millis(); bool timeout = false; while ( ! radio.available() && ! timeout ) if (millis() - started_waiting_at > 200 ) timeout = true; // Describe the results if ( timeout ) { printf("Failed, response timed out.\n\r"); } else { // Grab the response, compare, and send to debugging spew unsigned long got_time; radio.read( &got_time, sizeof(unsigned long) ); // Spew it printf("Got response %lu, round-trip delay: %lu\n\r",got_time,millis()-got_time); } // Try again 1s later delay(1000); } // // Pong back role. Receive each packet, dump it out, and send it back // if ( role == role_pong_back ) { // if there is data ready if ( radio.available() ) { // Dump the payloads until we've gotten everything unsigned long got_time; bool done = false; while (!done) { // Fetch the payload, and see if this was the last one. done = radio.read( &got_time, sizeof(unsigned long) ); // Spew it printf("Got payload %lu...",got_time); // Delay just a little bit to let the other unit // make the transition to receiver delay(20); } // First, stop listening so we can talk radio.stopListening(); // Send the final one back. radio.write( &got_time, sizeof(unsigned long) ); printf("Sent response.\n\r"); // Now, resume listening so we catch the next packets. radio.startListening(); } } // // Change roles // if ( Serial.available() ) { char c = toupper(Serial.read()); if ( c == 'T' && role == role_pong_back ) { printf("*** CHANGING TO TRANSMIT ROLE -- PRESS 'R' TO SWITCH BACK\n\r"); // Become the primary transmitter (ping out) role = role_ping_out; radio.openWritingPipe(pipes[0]); radio.openReadingPipe(1,pipes[1]); } else if ( c == 'R' && role == role_ping_out ) { printf("*** CHANGING TO RECEIVE ROLE -- PRESS 'T' TO SWITCH BACK\n\r"); // Become the primary receiver (pong back) role = role_pong_back; radio.openWritingPipe(pipes[1]); radio.openReadingPipe(1,pipes[0]); } } } // vim:cin:ai:sts=2 sw=2 ft=cpp
Printf.h :Code
Display More/* Copyright (C) 2011 J. Coliz <maniacbug@ymail.com> This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License version 2 as published by the Free Software Foundation. */ /** * @file printf.h * * Setup necessary to direct stdout to the Arduino Serial library, which * enables 'printf' */ #ifndef __PRINTF_H__ #define __PRINTF_H__ #ifdef ARDUINO int serial_putc( char c, FILE * ) { Serial.write( c ); return c; } void printf_begin(void) { fdevopen( &serial_putc, 0 ); } #else #error This example is only for use on Arduino. #endif // ARDUINO #endif // __PRINTF_H__
Die Verkabelung habe ich dieser Seite entnommen:
Pinout
Verkabelung
Ich habe mich an die Verkabelung für die RF24 Bücherei gehalten.
Ich habe es erst mit 10µF dann mit 100µF und dann zum Schluss mit 2200µF versucht das ganze zu entkoppeln.
Bei allen 5 Modulen schwingt das Quarz so wie es soll. -
Guten Abend zusammen,
ich habe hier 5 NRF24L01 Funk Module, die ein seltsames Verhalten auf der SCK zeigen.
Ich habe die Library RF24 von Maniacbug verwendet, das Beispiel Sketch heißt: Getting started.
Über den Seriellen Monitor erhalte ich nur
Ich habe jetzt schon alles probiert:
Kabel auf Fehler überprüft,
Die 3,3V Schiene gepuffert,
Ein externes Netzteil verwendet....
Nachdem das alles auch nicht funktioniert hat, habe ich das Oszi verwendet um zu sehen was da so "los" ist.
An Pin 13 des Uno's also SCK liegt ein "seltsames" Signal an.
Man kann die SCK nur kurz sehen gefolgt von einem "LOW", dies geschieht in dem gleichen Rythmus wie das versenden der Nachrichten.
Ich stehe mal wieder auf dem Schlauch und habe keine Ahnung wie ich die Module zum Funken kriege.
Dankle im voraus