goedenavond,
atmega8 geprogd met bascom via i2c verbonden met pcf8574p.
ik kan wel drukknoppen inlezen in mijn avr, maar een led aansturen wil niet lukken.
dit werkt wel
Ddrb = &B1111_1111
Ddrc = &B0000_0000
Portc = &B1111_1111
Ddrd = &B0000_0011
Portd = &B1111_1100
Config Sda = Portd.1 'data line IC3
Config Scl = Portd.0 'clock line IC3
Config I2cdelay = 5
Const Badreswrite = &H40 'for write to IC3
Const Badresread = &H41 'for read from IC3
Dim 6ic4data As Byte 'data (byte) uit pcf8574ap (IC3) RC
I2cinit
Do
'*******************************************************************************
'OK inlezen op (let op ! 6ic4data.X)
I2cstart
I2cwbyte Badresread
I2crbyte 6ic4data , Ack
I2crbyte 6ic4data , Nack
I2cstop
Waitms 25
If 6ic4data.1 = 0 Then
Porta.3 = 1
Else
Porta.3 = 0
End If
If 6ic4data.0 = 0 Then
Porta.4 = 1
Else
Porta.4 = 0
End If
Loop
End
dit werkt niet
regfile = "m16def.dat"
$crystal = 8000000
Ddra = &B1111_1111
Ddrb = &B1111_1111
Ddrc = &B0000_0000
Portc = &B1111_1111
Ddrd = &B0000_0011
Portd = &B1111_1100
Config Sda = Portd.1 'data line IC3
Config Scl = Portd.0 'clock line IC3
Config I2cdelay = 5
Const Badreswrite = &H40 'for write to IC3
Const Badresread = &H41 'for read from IC3
Dim 6ic4data As Byte 'data (byte) uit pcf8574ap (IC3) RC
I2cinit
Do
I2cstart
I2cwbyte Badreswrite
I2cwbyte 255
I2cstop
Waitms 25
Loop
End
waarschijnlijk zie ik iets heel simpels over het hoofd....maar ra ra wat ?
alvast dank voor de reacties
[Bericht gewijzigd door Henry S. op (0%)]
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Led wel goed aangesloten? (8574 heeft sinking drivers, sourcing kan maar 100µA leveren!)
[Bericht gewijzigd door Arco op (26%)]
free_electron
Silicon Member
Professioneel ElectronenTemmer - siliconvalleygarage.com - De voltooid verleden tijd van 'halfgeleider' is 'zand' ... US 8,032,693 / US 7,714,746 / US 7,355,303 / US 7,098,557 / US 6,762,632 / EP 1804159 - Real programmers write Hex into ROM
led moet tussen voeding in i/o poot staan ven de pcf8574 ...
het feit dat je 255 schrijft 'dofft' dus alle leds ... en duid erop dat je de leds verkeerd hebt staan.
als je 00 zou schrijven zet je alle leds aan ...
badankt voor de reacties,
ik had inderdaad de LED verkeerd aangesloten, ik ging er van uit dat er 5V op de pinnen zou komen te staan.
maar nu doet er zich iets anders vreemds voor :
ik heb 2x een pcf8574 op een printje staan 1x pcf8574p & 1x de 8574ap (ja ik weet dat die andere adressen hebben voor read/write)
stuur ik na allebei de waarde 0 dan gaan alle pinnen naar GND (controleer ik met een losse LED + 220 ohm weerstand) dus alle pinnen geven een brandende LED.
maar stuur ik 255 dan:
bij de pcf8574P gaat de LED alleen uit op: p0, p1, p2, p3
bij de pcf8574AP gaat de LED alleen uit op: p1, p2, p3
en op de andere pinnen brand de LED nog steeds !
weet iemand hier een verklaring voor ?
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
bedenk nu dat op beide pcf8574's op p0 t/m p3 10k pul up weerstanden zitten. moet nog even kijken, word waarschijnlijk morgen moet zometeen weg
edit: volgens mij is het zo dat er een pul-up weerstand nodig is om de LED te doven.
dat de LED bij de AP versie op p0 niet uit ging was een stomiteit van mezelf (zat verder op in de schakeling nog een schakelaar die verkeerd stond)
[Bericht gewijzigd door trix op (45%)]