Montag, 14. November 2022

I2C am Raspberry pi testen mit Port-Expander MCP23017

  Ich habe diese Anleitung auf einem Raspberry Pi 400 getestet und geschrieben.

Ich benutze ein 64 Bit Raspian Os.


Als erstes verbinden wir de MCP23017 mit dem Raspberry Pi.

Link zum Datenblatt am Ende des Posts.



Mit den Anschlüssen A0, A1,A2 können wir die Id des I2C Geräts festlegen.

Beim ersten bevorzuge ich alle auf Ground zu legen.


Dann öffnen wir ein Terminal Fenster, und geben

sudo i2cdetect -y -1 

ein.


Folgende Ausgabe sollten wir nun erhalten:


Hier sehen wir dass wir ein I2C Gerät angeschlossen haben, und seine Adresse ist 0x20 (32 in Dezimal).

Das kommt daher, dass alle Address Pins (A0,A1,A2) auf LOW sind. 

Wie wir diese Address Pins setzen bleibt uns überlassen. 


WICHTIG ist nur, dass jedes angeschlossene Gerät eine eindeutige ID hat.


Danke.

Hier der Link zum Datenblatt:

https://ww1.microchip.com/downloads/en/devicedoc/20001952c.pdf











Sonntag, 13. November 2022

I2C am Raspberry Pi freischalten

 Ich habe diese Anleitung auf einem Raspberry Pi 400 getestet und geschrieben.

Ich benutze ein 64 Bit Raspian Os.


Als erstes öffnet man ein Terminal Fenster. Dort gibt man 

sudo raspi-config

ein.


Damit startet das Raspberry Pi Software Configuration Tool


Dort auf Punkt 3 Interface Options klicken,


Dann auf Punkt I5 I2C klicken,


Dann sollte folgende Ansicht erscheinen.


Diese nun mit Ja bestätigen, und die I2C Verbindung ist möglich.

Wie wir diese testen können folgt im nächsten Beitrag.


Vielen Dank.




Montag, 2. Mai 2022

UPDI mit Arduino IDE programmieren am Beispiel des Attiny406er Boards

 Alles was hier beschrieben ist, habe ich mit Arduino 1.18.19 getestet und programmiert.

1.Schritt: Einen Arduino Nano zum jtag2updi Programmer machen:


            Lade die Zip-Datei von meinem Github-Verzeichnis herunter:

            SpenceKonde_-_jtag2updi.zip

            Expandiere die Datei und öffne die Datei jtag2updi.ino in der Arduino IDE. Programmiere den             Arduino Nano damit. (Die Hauptdatei ist leer, das ist ok so.)

                



2.Schritt: megaTinyCore in Arduino IDE laden:

            In der Arduino IDE unter "Datei" -  "Einstellungen" im Feld
            "Zusätzliche Boardverwalter-URLs" folgendes Verzeichnis hinzufügen:

            http://drazzy.com/package_drazzy.com_index.json

            Dann unter "Werkzeuge" - "Board" die "Boardverwaltung" öffnen.
            Hier nach megaTinyCore suchen und installieren.



3.Schritt: Ein kleines Programm testen:




Beim Programmieren der physischen IO Pins in der Arduino IDE studiere die obige Grafik. Die neue Generation der Attiny´s hat keine eigenen analogen Pins. Ob ein Pin analog oder digital ist, hängt von seiner Programmierung ab.

Um das jtag2updi-Programm des Arduino Nano beim Programmieren des Attiny nicht zu überschreiben, müssen wir den RESET deaktivieren. Mit einem 10µF Elektrolytkondensator zwischen RESET und GND kann man das bewerkstelligen.
Mit einem 4k7 Widerstand verbinden wir D7 des Arduino NANO mit dem UPDI Eingang am 406er Board. 
GND und +5V noch vom NANO mit dem 406er Board verbinden, und wir können mit dem Programmieren beginnen.



In der Arduino IDE öffnen wir unter "Datei" - "Beispiele" - "01.Basics" das Blink Programm.

Hier fügen wir vor der setup Funktion folgenden Befehl ein:

#define LED_BUILTIN 4 //PB5 (Pin 2)

Das komplette Skript:

-----------------------------------------------------------------------------------------------------------------------------

/*
  Blink

  Turns an LED on for one second, then off for one second, repeatedly.

  Most Arduinos have an on-board LED you can control. On the UNO, MEGA and ZERO
  it is attached to digital pin 13, on MKR1000 on pin 6. LED_BUILTIN is set to
  the correct LED pin independent of which board is used.
  If you want to know what pin the on-board LED is connected to on your Arduino
  model, check the Technical Specs of your board at:
  https://www.arduino.cc/en/Main/Products

  modified 8 May 2014
  by Scott Fitzgerald
  modified 2 Sep 2016
  by Arturo Guadalupi
  modified 8 Sep 2016
  by Colby Newman

  This example code is in the public domain.

  https://www.arduino.cc/en/Tutorial/BuiltInExamples/Blink
*/
#define LED_BUILTIN 4 //PB5 (Pin 2)

// the setup function runs once when you press reset or power the board
void setup() {
  // initialize digital pin LED_BUILTIN as an output.
  pinMode(LED_BUILTIN, OUTPUT);
}

// the loop function runs over and over again forever
void loop() {
  digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);                       // wait for a second
  digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);                       // wait for a second
}

-----------------------------------------------------------------------------------------------------------------------------

Nun wählen wir unter "Werkzeuge" das richtige "Board" den "Prozessor" und "Port" aus, als ''Programmer'' wählen wir jtag2updi aus.
 

  

Nach dem Hochladen haben wir erfolgreich das 406er Board zum Blinken gebracht.






Donnerstag, 3. Februar 2022