{"id":630,"date":"2017-11-25T20:08:01","date_gmt":"2017-11-25T19:08:01","guid":{"rendered":"http:\/\/mikrocontroller.bplaced.net\/wordpress\/?page_id=630"},"modified":"2017-12-30T19:48:13","modified_gmt":"2017-12-30T18:48:13","slug":"13-twi_pca9555-library-atmega","status":"publish","type":"page","link":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/?page_id=630","title":{"rendered":"13-TWI_PCA9555-Library (ATMega)"},"content":{"rendered":"<p><div id=\"nav-below\" class=\"navigation\"><div class=\"nav-previous\"><a href=\"https:\/\/mikrocontroller.bplaced.net\/wordpress\/?page_id=628\" title=\"12-TWI_M24C02-Library (ATMega)\"><span class=\"meta-nav\">\u2190<\/span> 12-TWI_M24C02-Library (ATMega)<\/a><\/div><\/div><!-- #nav-below --><div id=\"nav-below\" class=\"navigation\"><div class=\"nav-next\"><a href=\"https:\/\/mikrocontroller.bplaced.net\/wordpress\/?page_id=632\" title=\"14-MOD_7Seg-Library (ATMega)\">14-MOD_7Seg-Library (ATMega) <span class=\"meta-nav\">&rarr;<\/span><\/a><\/div><\/div><!-- #nav-below --><\/p>\n<p>-diese Library dient zum ansteuern eines <a href=\"http:\/\/www.ti.com\/product\/PCA9555\" target=\"_blank\" rel=\"noopener\">PCA9555 16bit IO-Port IC<\/a>s<br \/>\nvon einem externen Modul das per TWI-Bus an die CPU angeschlossen ist<br \/>\n(z.B. das Modul von myAVR \u201c<a href=\"http:\/\/shop.myavr.com\/Additional%20modules%20and%20accessories\/myTWI%20PortExpander.htm?sp=article.sp.php&amp;artID=200000\" target=\"_blank\" rel=\"noopener\">myTWI PortExpander<\/a>\u201d)<\/p>\n<p>-es koennen bis zu 8 PCA9555 gleichzeitig angesteuert werden<br \/>\n(Vorsicht \u2026 alle PCA9555 benoetigen eine eindeutige Hardware-Adresse)<\/p>\n<p>-das externe Modul ist an den TWI-Bus angeschlossen,<br \/>\naus dem Grund wird auch der TWI-Treiber<br \/>\n\u201cMK3_2560_TWI.h\u201d benoetigt<\/p>\n<p><strong>Funktionen :<\/strong><\/p>\n<pre lang=\"c\" line=\"1\">void EXT_INIT_PCA9555(void);                                    \/\/ zum initialisieren des PCA9555\r\nvoid EXT_PCA9555_CONF_PORTA(ADR_PCA9555 twi_adr,char io_conf);  \/\/ zum Konfigurieren von Port-A\r\nvoid EXT_PCA9555_CONF_PORTB(ADR_PCA9555 twi_adr,char io_conf);  \/\/ zum Konfigurieren von Port-B\r\nchar EXT_PCA9555_READ_PORTA(ADR_PCA9555 twi_adr);               \/\/ zum lesen von Port-A\r\nchar EXT_PCA9555_READ_PORTB(ADR_PCA9555 twi_adr);               \/\/ zum lesen von Port-B\r\nvoid EXT_PCA9555_WRITE_PORTA(ADR_PCA9555 twi_adr, char wert);   \/\/ zum schreiben von Port-A\r\nvoid EXT_PCA9555_WRITE_PORTB(ADR_PCA9555 twi_adr, char wert);   \/\/ zum schreiben von Port-B<\/pre>\n<p><strong>Beispiel :<\/strong><\/p>\n<pre lang=\"c\" line=\"1\">\/\/-----------------------------------------------------------------------------\r\n\/\/ Title      : bsp_ub024_mk3_ext_pca9555\r\n\/\/-----------------------------------------------------------------------------\r\n\/\/ Funktion   : Externes TWI-Modul : 16bit IO\/PortExpander\r\n\/\/ Schaltung  : myAVR MK3 + myTWI-AddOn-PortExpander\r\n\/\/-----------------------------------------------------------------------------\r\n\/\/ Prozessor  : ATMega2560\r\n\/\/ Takt       : 16 MHz\r\n\/\/ Sprache    : C\r\n\/\/ Date       : 20.11.2010\r\n\/\/ Version    : 1.1\r\n\/\/ Autor      : UB\r\n\/\/-----------------------------------------------------------------------------\r\n#define F_CPU 16000000\r\n#include &lt;avr\/io.h&gt;\r\n#include &lt;ub_ext_module\/EXT_TWI_PCA9555.h&gt;\r\n#include &lt;ub_mk3_2560\/MK3_2560_LED.h&gt;\r\n\r\n\/\/-----------------------------------------------------------------------------\r\n\/\/ Hinweis :\r\n\/\/ &gt; Quick-Jumper Port-L muss gesetzt sein\r\n\/\/ &gt; externes TWI-Modul muss am Stecker rechts unten angeschlossen sein\r\n\/\/ &gt; TWI-Port-Pins (D0+D1) werden benoetigt\r\n\/\/ &gt; Das PCA9555 muss auf ADR 40h eingestellt sein\r\n\/\/ - das Programm liest zyklisch den externen Port-A ein\r\n\/\/   und gibt das Ergebnis an den LEDs wieder aus\r\n\/\/ - bei einem Fehler wird 0x55 angezeigt\r\n\/\/-----------------------------------------------------------------------------\r\nint main (void)\r\n{\r\n  char wert=0;\r\n  unsigned int p=0;\r\n\r\n  MK3_INIT_LED(); \/\/ init der LEDs\r\n  EXT_INIT_PCA9555(); \/\/ init vom externen PCA9555\r\n\r\n  \/\/ externes Port-A als 8bit Eingang definieren\r\n  EXT_PCA9555_CONF_PORTA(ADR0_PCA9555,PORT_IN);\r\n\r\n  while (true)\r\n  {\r\n    \/\/ einlesen vom externen Port-A\r\n    wert=EXT_PCA9555_READ_PORTA(ADR0_PCA9555);\r\n\r\n    if(EXT_PCA9555_OK==true) {\r\n      \/\/ wenn alles ok\r\n      \/\/ anzeigen des wertes\r\n      MK3_LED_ZAHL(wert);\r\n    }\r\n    else {\r\n      \/\/ 0x55 wird als FEHLER angezeigt\r\n      MK3_LED_ZAHL(0x55);\r\n    }\r\n\r\n    for(p=0;p&lt;60000;p++) {\r\n      \/\/ kleine Pause\r\n    }\r\n  }\r\n  return 0;\r\n}\r\n<\/pre>\n<p>Hier die Library zum download :<\/p>\n<p><a href=\"wp-content\/uploads\/2013\/03\/UB_EXT_TWI_PCA9555_v102.zip\">UB_EXT_TWI_PCA9555_v102<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>-diese Library dient zum ansteuern eines PCA9555 16bit IO-Port ICs von einem externen Modul das per TWI-Bus an die CPU angeschlossen ist (z.B. das Modul von myAVR \u201cmyTWI PortExpander\u201d) -es koennen bis zu 8 PCA9555 gleichzeitig angesteuert werden (Vorsicht \u2026 &hellip; <a href=\"https:\/\/mikrocontroller.bplaced.net\/wordpress\/?page_id=630\">Weiterlesen <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":554,"menu_order":13,"comment_status":"open","ping_status":"closed","template":"","meta":{"footnotes":""},"categories":[127],"tags":[11,36,9,37,35],"class_list":["post-630","page","type-page","status-publish","hentry","category-atmega","tag-atmega2650","tag-io-port-ic","tag-library","tag-mytwi-portexpander","tag-pca9555"],"_links":{"self":[{"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=\/wp\/v2\/pages\/630","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=630"}],"version-history":[{"count":4,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=\/wp\/v2\/pages\/630\/revisions"}],"predecessor-version":[{"id":950,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=\/wp\/v2\/pages\/630\/revisions\/950"}],"up":[{"embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=\/wp\/v2\/pages\/554"}],"wp:attachment":[{"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=630"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=630"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=630"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}