tag:blogger.com,1999:blog-6100511197805579796.post4475715172312940565..comments2024-02-14T18:43:36.096+01:00Comments on Davide Gironi blog: PCF8574 GPIO expander library for AVR Atmega - v01Davide Gironihttp://www.blogger.com/profile/16366076989473118278noreply@blogger.comBlogger2125tag:blogger.com,1999:blog-6100511197805579796.post-72435459696892936762017-10-31T20:16:08.421+01:002017-10-31T20:16:08.421+01:00Hello Pop, you should debug with a logic analyzer ...Hello Pop, you should debug with a logic analyzer the PCF8574 bus. If you do not have one, debut it using simple serial uart output. This project it is build using avrgcc. Also please, if you have to post long lines of codes, use something like pastebin.Davide Gironihttps://www.blogger.com/profile/16366076989473118278noreply@blogger.comtag:blogger.com,1999:blog-6100511197805579796.post-89312382381293184242017-10-30T23:15:48.955+01:002017-10-30T23:15:48.955+01:00Hello Davide,
I recently bought an i2c expander uz...Hello Davide,<br />I recently bought an i2c expander uzing PCF8574A It works fine in Arduino environment. But, I would like to use it in a more complex project which I develop using Atmel Studio 7 and plain C. No success up to now.<br />To test it I put an LED and a resistor on each of its outputs. I use PCF8574 GPIO expander library and following parameters:<br />F_CPU=16000000<br />SCL_CLOCK 100000<br />PCF8574_ADDRBASE (0x3F)<br /><br />#include <br />#include <br />#include <br />#include <br />#include <br /><br />#include "pcf8574/pcf8574.h"<br />#include "uart/uart.h"<br /><br />#define UART_BAUD_RATE 19200<br /><br /><br />int main(void) <br />{<br /> char buf[10];<br /><br /> //init uart<br /> uart_init(UART_BAUD_SELECT(UART_BAUD_RATE,F_CPU));<br /><br /> //init interrupt<br /> sei();<br /> <br /> uart_puts("Init UART OK\r\n");<br /><br /> //init pcf8574<br /> pcf8574_init();<br /> uart_puts("Init i2c OK, TWBR = ");<br /> itoa(TWBR, buf, 10);<br /> uart_puts(buf);<br /> uart_puts("\r\n");<br /> uart_puts("Init PCF8574 OK\r\n");<br /> uart_puts("PCF8574_ADDRBASE = ");<br /> itoa(PCF8574_ADDRBASE, buf, 10);<br /> uart_puts(buf);<br /> uart_puts("\r\n");<br /><br /> //test output<br /> pcf8574_setoutput(0, 0);<br /><br /> pcf8574_setoutputpinhigh(0, 0);<br /> _delay_ms(2000);<br /> pcf8574_setoutputpinhigh(0, 1);<br /> _delay_ms(2000);<br /> pcf8574_setoutputpinhigh(0, 2);<br /> _delay_ms(2000);<br />}<br /><br />The program compiles fine and the output is:<br /><br />Init UART OK<br />Init i2c OK, TWBR = 72<br />Init PCF8574 OK<br />PCF8574_ADDRBASE = 63 /0x3F in hex/<br /><br />No LED is on.<br />Any help is appreciated.<br />PopPophttps://www.blogger.com/profile/02677245399501507404noreply@blogger.com