Konstigt fel med Mega16+i2c minne + lcd
Konstigt fel med Mega16+i2c minne + lcd
Hej!
har kopplat ett i2c eeprom minne (24fc256) och en vanlig hd44780 lcd till en AtMega16.
koden i avr:en ska läsa av minnet på adress 10 och sen skriva ut det på lcdn.
Allt detta har funkat perfekt innan utan några som helst problem.
men när jag började utöka koden för att göra mer så slutade dessa två grundläggande saker fungera.
Nu skrivs 255 ut på lcdn fast det som ligger på minnesplatsen som läses av är 3, när jag skulle felsöka och kolla om nån data skickades på i2c busen så märkte jag att när jag råkade nudda matningssladden med jord-klämman från oscilloskopet så hoppade plötsligt rätt värde fram, startar man sedan om avren så får man ut 255 igen.
spelade in en liten film för att illustrera det lite bättre.
http://www.mullemeck.com/mojt/film.avi [38mb]
har testat sätta dit ordentliga backupkondensatorer och även små för att få bort störningar på matningen, även testat ta ström från annat ställe men det är ändå alltid samma.
upptäckte också att om man håller oscilloskopets jordklämma i ena handen och mekar med en metallbit på sladden så kommer även rätt värde fram då.
Nån som har några förslag på vad som kan orsaka detta?
/mullemeck
har kopplat ett i2c eeprom minne (24fc256) och en vanlig hd44780 lcd till en AtMega16.
koden i avr:en ska läsa av minnet på adress 10 och sen skriva ut det på lcdn.
Allt detta har funkat perfekt innan utan några som helst problem.
men när jag började utöka koden för att göra mer så slutade dessa två grundläggande saker fungera.
Nu skrivs 255 ut på lcdn fast det som ligger på minnesplatsen som läses av är 3, när jag skulle felsöka och kolla om nån data skickades på i2c busen så märkte jag att när jag råkade nudda matningssladden med jord-klämman från oscilloskopet så hoppade plötsligt rätt värde fram, startar man sedan om avren så får man ut 255 igen.
spelade in en liten film för att illustrera det lite bättre.
http://www.mullemeck.com/mojt/film.avi [38mb]
har testat sätta dit ordentliga backupkondensatorer och även små för att få bort störningar på matningen, även testat ta ström från annat ställe men det är ändå alltid samma.
upptäckte också att om man håller oscilloskopets jordklämma i ena handen och mekar med en metallbit på sladden så kommer även rätt värde fram då.
Nån som har några förslag på vad som kan orsaka detta?
/mullemeck
Men ändå har du en störning eller hur?
Har du alla portar som är oanvända som utgång? eller är de ingånger och terminerat? Jag tror att problemet ligger i den delen.
Ditt problem består av att du har instrålning från de omgivande ledninger i väggen, ett alternativ kan vara att använda en nätdel som har jordat hölje eller att vända kontakten i väggen.
Vilken pull-up motståndsvärde har du på IIC-bussen?
Har du alla portar som är oanvända som utgång? eller är de ingånger och terminerat? Jag tror att problemet ligger i den delen.
Ditt problem består av att du har instrålning från de omgivande ledninger i väggen, ett alternativ kan vara att använda en nätdel som har jordat hölje eller att vända kontakten i väggen.
Vilken pull-up motståndsvärde har du på IIC-bussen?
- Schnegelwerfer
- Inlägg: 1863
- Blev medlem: 8 november 2004, 13:46:56
- EagleSpirit
- Inlägg: 1288
- Blev medlem: 27 maj 2003, 23:15:48
- Ort: Västerås
- Kontakt:
Det är väl mellan i2c och AVRen som problemet uppstår? LCDn verkar ju fungera som den ska.
Du har inga interrupts eller timingproblem i koden? Du kanske använder hårdvarui2c, eller har du gjort en egen för kommunikation med minnet? Har du pull-up/down motstånd på dataledningarna? Skulle kanske kunna hjälpa.
Du har inga interrupts eller timingproblem i koden? Du kanske använder hårdvarui2c, eller har du gjort en egen för kommunikation med minnet? Har du pull-up/down motstånd på dataledningarna? Skulle kanske kunna hjälpa.
Jo faktum är att jag har ganska lång sladd till lcdn ca 1m flatkabel. Kan ju vara det som spökar till det.
Använder 4.7kohms pullup på i2cbussen och har skrivit en egen rutin för att protokollet.
nu nä jag tänker efter så är det mest logiskt att det är den långa sladden som spökar till det. När jag debuggade min i2c-rutin för att se hur långt den kommit genom att skriva lite till displayen så försvann det problemet jag hade när jag skickade ett tecken till displayen mitt i sända och läs rutinen.
ska testa korta den och förhoppningsvis räcker det.
Använder 4.7kohms pullup på i2cbussen och har skrivit en egen rutin för att protokollet.
nu nä jag tänker efter så är det mest logiskt att det är den långa sladden som spökar till det. När jag debuggade min i2c-rutin för att se hur långt den kommit genom att skriva lite till displayen så försvann det problemet jag hade när jag skickade ett tecken till displayen mitt i sända och läs rutinen.
ska testa korta den och förhoppningsvis räcker det.
- EagleSpirit
- Inlägg: 1288
- Blev medlem: 27 maj 2003, 23:15:48
- Ort: Västerås
- Kontakt:
- Schnegelwerfer
- Inlägg: 1863
- Blev medlem: 8 november 2004, 13:46:56
har nu kortat sladden och visst blev lcdn stabilare men minnet fortsätter att klaga.
Mätte nu för att kolla så där kom fram ström till minnet och där var bara 0,4v, på nått skumt sätt så har en byglingssladd som binder ihopa kopplingsplattans två halvor slutat leda, sen när jag drog upp bygeln och satte ner den igen så leder den igen.. helt mysko...
men nu verkar det mesta funka.
Mätte nu för att kolla så där kom fram ström till minnet och där var bara 0,4v, på nått skumt sätt så har en byglingssladd som binder ihopa kopplingsplattans två halvor slutat leda, sen när jag drog upp bygeln och satte ner den igen så leder den igen.. helt mysko...
men nu verkar det mesta funka.
Kopplingsdäck ska man se upp med, visst är det smidigt att kunna koppla upp kretsen utan att behöva löda och desutom enkelt att göra en endring men mer än 50% av fallena när det inte har fungerat har det varit glap någon stans och det blir värre ju störe kretsen är...
Visst är dom smidig men man kan grå hårig för mindre
Visst är dom smidig men man kan grå hårig för mindre
