Resultat display
Koppla upp displayerna med tryckknappar för att se exakt hur de fungerar. Till dataingången räcker det med en enkel pull-up. Till klockingången använd en växlande knapp och avstudsning med RS-vippa. Sätt enable aktiv hela tiden så allt som händer visas.
När Du sedan vet exakt hur displayerna reagerar blir det enormt mycket lättare att göra ett fungerande program.
Om Du vll prova något med en gång som kanske fungerar så skicka en extra klockpuls allra sist efter att ha skiftat ut 8 bits per display. Om Du har 4 siffror så skifta alltså ut 32 bits med data till dessa, sedan en klockpuls nummer 33 så att data överförs till utgångslatcharna.
När Du sedan vet exakt hur displayerna reagerar blir det enormt mycket lättare att göra ett fungerande program.
Om Du vll prova något med en gång som kanske fungerar så skicka en extra klockpuls allra sist efter att ha skiftat ut 8 bits per display. Om Du har 4 siffror så skifta alltså ut 32 bits med data till dessa, sedan en klockpuls nummer 33 så att data överförs till utgångslatcharna.
> Jag har inte gått till att bara skicka en bit i taget,
Det gör du ju alltid...
Grejen är att göra det *långsamt*.
Det kan räcka med att lägga in ett mjukvaru delay i din kod så att
dipslayerna klockas riktigt långamt, 1 bit per sekund eller så. Då kan
du bara titta direkt på displayerna hur bitarna vandrar genom dom.
Och kör med E låg "enabled" hela tiden så klart, så att du ser allt.
Det gör du ju alltid...

Grejen är att göra det *långsamt*.
Det kan räcka med att lägga in ett mjukvaru delay i din kod så att
dipslayerna klockas riktigt långamt, 1 bit per sekund eller så. Då kan
du bara titta direkt på displayerna hur bitarna vandrar genom dom.
Och kör med E låg "enabled" hela tiden så klart, så att du ser allt.
Sitter ut i stockholmsskärgård just nu och testar så jag har inte tillgång till alla grejer, men jag får kolla runt om man kan hitta en växlande vipp-strömbrytare. Tror att jag kan ha en trappströmbrytare liggande.Marta skrev:Koppla upp displayerna med tryckknappar för att se exakt hur de fungerar. Till dataingången räcker det med en enkel pull-up. Till klockingången använd en växlande knapp och avstudsning med RS-vippa. Sätt enable aktiv hela tiden så allt som händer visas.
När Du sedan vet exakt hur displayerna reagerar blir det enormt mycket lättare att göra ett fungerande program.
Om Du vll prova något med en gång som kanske fungerar så skicka en extra klockpuls allra sist efter att ha skiftat ut 8 bits per display. Om Du har 4 siffror så skifta alltså ut 32 bits med data till dessa, sedan en klockpuls nummer 33 så att data överförs till utgångslatcharna.
För att få siffrorna rätt i första displayen behövde man en extra klockpuls efter 8 bit. tyvärr skickas den sista biten för första displayen vidare till den andra displayen. Så sista segmentet i första och första i andra dispalyen är samma bit.
OK, om det är verifierat så skulle jag reklamera detta till Sure.
Det kan ju inte vara som det är tänkt...
> Så sista segmentet i första och första i andra dispalyen är samma bit.
Med "sista segmentet" så menar du alltså drivningen av punkterna ?
Om man bara använder 7-segment delen så fungerar det alltså ?
Det kan ju inte vara som det är tänkt...
> Så sista segmentet i första och första i andra dispalyen är samma bit.
Med "sista segmentet" så menar du alltså drivningen av punkterna ?
Om man bara använder 7-segment delen så fungerar det alltså ?
Jag får pröva det imorgon. Det har blivit några vändor som man har bränt om koden i PICen, idag. PUHsodjan skrev:> Jag har inte gått till att bara skicka en bit i taget,
Det gör du ju alltid...
Grejen är att göra det *långsamt*.
Det kan räcka med att lägga in ett mjukvaru delay i din kod så att
dipslayerna klockas riktigt långamt, 1 bit per sekund eller så. Då kan
du bara titta direkt på displayerna hur bitarna vandrar genom dom.
Och kör med E låg "enabled" hela tiden så klart, så att du ser allt.
Det är väl inga problem att flasha om, Du flashar väl med kretsen på plats, annars lär pinnarna trilla av långt innan Du kommit upp i de 10k flash som minnet klarar. Har Du en flashare med ZIF-sockel så skrota den och köp en WISP-648 istället.
Du skall givetvis klocka alla siffrorna i en följd med 8 klockor per siffra. Klocka först ut data för den display som är sist i kedjan, sedan för den näst sista o.s.v. Först när data för alla4 är utklockad så skall du skicka ytterligare en puls.
Det blir alltså 33 pulser totalt. De 32 första med tillhörande data.
Skcikar Du 8+1 per display = 36 pulser totalt så blir allt fullständigt fel.
Du skall givetvis klocka alla siffrorna i en följd med 8 klockor per siffra. Klocka först ut data för den display som är sist i kedjan, sedan för den näst sista o.s.v. Först när data för alla4 är utklockad så skall du skicka ytterligare en puls.
Det blir alltså 33 pulser totalt. De 32 första med tillhörande data.
Skcikar Du 8+1 per display = 36 pulser totalt så blir allt fullständigt fel.
Senast redigerad av Marta 11 oktober 2008, 00:13:16, redigerad totalt 1 gång.
Nä, jag har inte lyckats med att bara skicka ut 7 bit av 8 bit som ligger i "SEND" minnet. Gav upp när det som vissade i displayerna inte var i närheten av vad som sändes ut. Saknades bitar i början och i slutet.sodjan skrev:OK, om det är verifierat så skulle jag reklamera detta till Sure.
Det kan ju inte vara som det är tänkt...
> Så sista segmentet i första och första i andra dispalyen är samma bit.
Med "sista segmentet" så menar du alltså drivningen av punkterna ?
Om man bara använder 7-segment delen så fungerar det alltså ?
> jag har inte lyckats med att bara skicka ut 7 bit av 8 bit som ligger i "SEND" minnet.
Det är väl bara att stanna efter 7 bitar ?
Och sedan skicka på 7 bitar för nästa display, o.s.v
Alltså 7x4 = 28 bitar totalt.
*OM* det nu är så att displayerna delar första bit med den sista på
displayen före i kedjan...
Ett helt annan metod, är att ta till 3 extra I/O pinnar och köra
data till alla 4 samtidigt. CLK linjen kan vara gemensam.
Man som sagt, jag är lite osäker på om det verkligen har verifierats
hur de *verkligen* fungerar...
Det är väl bara att stanna efter 7 bitar ?
Och sedan skicka på 7 bitar för nästa display, o.s.v
Alltså 7x4 = 28 bitar totalt.
*OM* det nu är så att displayerna delar första bit med den sista på
displayen före i kedjan...
Ett helt annan metod, är att ta till 3 extra I/O pinnar och köra
data till alla 4 samtidigt. CLK linjen kan vara gemensam.
Man som sagt, jag är lite osäker på om det verkligen har verifierats
hur de *verkligen* fungerar...
Jag har en Elnec Smartprog2 programmerare men fick aldrig i gång den via ISP-kontakten. Så det bar blivit att lossa på PIC'n och sätta den i brännare och sen tillbaka. Jag får väl ta och beställa en WISP-648 av Sodjan. Känns som det är dags att slippa detta moment.Marta skrev:Det är väl inga problem att flasha om, Du flashar väl med kretsen på plats, annars lär pinnarna trilla av långt innan Du kommit upp i de 10k flash som minnet klarar. Har Du en flashare med ZIF-sockel så skrota den och köp en WISP-648 istället.
Har nu kopplat upp med två st. trappbrytare, men de blir ett glapp mellan hög och låg pulsen, så CLKIN blir under tryck ögonblicket varken hög eller låg. Detta gör att det inte går att testa vidare, då den skenar iväg.Marta skrev:Koppla upp displayerna med tryckknappar för att se exakt hur de fungerar. Till dataingången räcker det med en enkel pull-up. Till klockingången använd en växlande knapp och avstudsning med RS-vippa. Sätt enable aktiv hela tiden så allt som händer visas.
När Du sedan vet exakt hur displayerna reagerar blir det enormt mycket lättare att göra ett fungerande program.
Om Du vll prova något med en gång som kanske fungerar så skicka en extra klockpuls allra sist efter att ha skiftat ut 8 bits per display. Om Du har 4 siffror så skifta alltså ut 32 bits med data till dessa, sedan en klockpuls nummer 33 så att data överförs till utgångslatcharna.
Skall kolla om jag kan hitta något annat, annars får jag fortsätta på Sodjan's spår med en "delay" mellan kodraderna.
> men fick aldrig i gång den via ISP-kontakten.
Varför inte ?
> Så det bar blivit att lossa på PIC'n och sätta den i brännare och sen tillbaka.
Nä, det är inget kul alls...
Visst, jag har Wisp648'or liggandes här, men ICSP stöds ju redan av
den programmerare du har...
> så CLKIN blir under tryck ögonblicket varken hög eller låg.
Du måste ha pullup ! Och det behöver bara vara en enkel kontakt, t.ex
till GND. Pulluppen drar signalen hög.
Dessutom måste du har något som plockar bort kontaktstudsar, alternativt
ett R/C filter som filtrerar signalen med en lång RC tid.
Men att ändra koden är ju enklare, kostar inget och inget att koppla om...
Du skulle även kunna koppla kontakten till processorn och stega fram
koden på det sättet.
Men viktigast just nu verkar dock vara att fixa så att du slipper plocka
processorn fram och tillbaka...
Varför inte ?
> Så det bar blivit att lossa på PIC'n och sätta den i brännare och sen tillbaka.
Nä, det är inget kul alls...
Visst, jag har Wisp648'or liggandes här, men ICSP stöds ju redan av
den programmerare du har...
> så CLKIN blir under tryck ögonblicket varken hög eller låg.
Du måste ha pullup ! Och det behöver bara vara en enkel kontakt, t.ex
till GND. Pulluppen drar signalen hög.
Dessutom måste du har något som plockar bort kontaktstudsar, alternativt
ett R/C filter som filtrerar signalen med en lång RC tid.
Men att ändra koden är ju enklare, kostar inget och inget att koppla om...

Du skulle även kunna koppla kontakten till processorn och stega fram
koden på det sättet.
Men viktigast just nu verkar dock vara att fixa så att du slipper plocka
processorn fram och tillbaka...
Jag fick ett felmedelande i brännar programmet att spänningen var fel. Kommer inte ihåg exakt vad det var den klaga på.
EDIT:
Har nu kopplat upp via ISP igen och den klagar på "Supply voltage out of range (7454 mV)"
EDIT:
Har nu kopplat upp via ISP igen och den klagar på "Supply voltage out of range (7454 mV)"
Senast redigerad av Stewal 11 oktober 2008, 12:42:33, redigerad totalt 1 gång.