Fórum témák
» Több friss téma |
WinAVR / GCC alapszabályok: 1. Ha ISR-ben használsz globális változót, az legyen "volatile" 2. Soha ne érjen véget a main() függvény 3. UART/USART hibák 99,9% a rossz órajel miatt van 4. Kerüld el a -O0 optimalizációs beállítást minden áron 5. Ha nem jó a _delay időzítése, akkor túllépted a 65ms-et, vagy rossz az optimalizációs beállítás 6. Ha a PORTC-n nem működik valami, kapcsold ki a JTAG-et Bővebben: AVR-libc FAQ
A 90. sorban miért foglaltál 20-as tömböt a 10 helyett ?
Ha nem állítod be a PORT-okat kimenetnek, akkor csak a felhúzó ellenállásokon fog folyni áram, esetleg a 150ohmod 150kohm. Mérd meg!
A programot nem én írtam, letöltöttem.
Kovidivi Az ellenállásokat megmértem még beforrasztás előtt. Az egyik szegmens ellenállását kicseréltem 10R -re. Így sem túl erős.
A 3.3V <--> 5V szint illesztés nem nagy gond. Sok logikai áramkör alkalmas erre a célra, vagy megoldható
FET-ekkel is.
Az említett sort te írtad át,mert az eredetiben nem ez van. Notepad++/Compare
Akkor mérd meg ismét! Mondom: vagy a programban van a hiba, pl. PORT nincs kimenetre állítva, vagy simán teljesen hibás, vagy az ellenállás a rossz. Esetleg a tranzisztort kötötted be rosszul. Ideiglenesen vedd ki, és kösd GND-re a LED kijelzőt tranzisztor nélkül. Ekkor az összes kijelző képe egyszerre lesz látható azon a kijelzőn, teljes fényerővel! 10ohm nagyon kevés! 75 ohm alá csak kivételes esetben mennék.
Tényleg nem nyúltam hozzá csak a PortB-et számoztam át.
Kovidivi Meg mértem az ellenállásokat jók és a tranzisztorok is jól vannak beültetve.
Akkor marad a program. Azt nézd át!
Valószínűleg elrontottál valamit, pont a PORTB-n vannak a kijelzők. Legalább rakd fel a módosított programodat, hogy rá tudjunk nézni. szerk: Látom már, felraktad. Ha csak ennyit változtattál tényleg, hogy a PORTB kiosztását átírtad, akkor annak is rendben kell lennie. A hozzászólás módosítva: Jún 8, 2015
Itt van mind a kettő: Bővebben: Link
Ne várj csodát ettől a programtól!
PORTD &= ~(1<<PIND6); //Kikapcsoljuk az 1. kijelzőhöz tartozó tranzisztort 2MHz-en nagyon hosszú ideig számól és addig nincsen semmi a kijelzőn: PORTB = kijelzo[h%10]|(sec & 0x1); //Óra alsó helyiérték Próbáld átszervezni: Amíg számolsz addig világít az előző digit! TempByte = kijelzo[h%10]|(sec & 0x1); //Óra alsó helyiérték PORTD &= ~(1<<PIND6); //Kikapcsoljuk az 1. kijelzőhöz tartozó tranzisztort PORTB = TempByte // rögtön megy ki a következő! ... ... És vedd nagyobbra az értékét: #define GOMBCIKLUS 600 ??? Több idő marad a kijelzésre, 1 úttal lassul a gombok kezelése! A hozzászólás módosítva: Jún 8, 2015
Tudnál bemásolni egy pontos részletet, hogy mit hogyan kell beírni.
Nem vagyok nagy guru.
Egész más kódot kapsz a kijelzés függvénynél a tömb eltérés miatt. 109. sor !
Ez 1 értelmű! Ha megváltoztatod a programot más lesz a kód.
Különben tényleg felesleges lefoglalni 20Bytet ha csak 10Byte kel. De ez még nem zavarja a működést, feltéve, hogy van elég memória.
Sziasztok! A segítségeteket szeretném kérni. Vettem a múlt héten egy Usbasp V2.0-t itt az apróban. Letöltöttem az extreme burner programot, és szeretnék egy Attiny26L típusú picet beégetni. Egyelőre 5V-ot adtam neki, de ez mindegy..
A Chip fülnél nem találtok Attiny26-ot, csak 13, 24, 44, 84, meg 2313 van. Mit tegyek? Nem támogatja az égetőm? Találtam frissített frimware-t, ha rövidre zárom a self programming jumpert, akkor egyszerűen betöltöm a programba a hexet, és beégetem? Ez bár USBasp, de nem úgy néz ki, mint az enyém, viszont ebben is Atmega8A van, csak az enyém egy kínai klón, de nagy baj gondolom nem lehet..
Az Avr8 burn-o-mat elvileg támogatja az Attiny26-ot.
De avrdude parancssorból is programozhatsz, ha nem megy másképp.
Az avrdude - van hozzá grafikus felület, ha visszariasztana valakit a parancssoros hebrigálás.
A Bascom ingyenes program, támogatja attiny26-ot is és az USBASP-ot is, és tud csak hex. is égetni.
Köszönöm, és a többieknek is.
Igen, az avrdude-tól a parancssoros programozás riasztott el, de kipróbálom a Bascom-ot, ez most elég szimpatikus.
A Bascom működni fog én is azt használtam a 26-osoknál.
Visszaállítottam 10-re, de nem hozott eredményt.
Remélem jól írtam be, de nem működik.
Órák nem látszanak a kijelzés halvány és nem számol az óra.
Kipróbáltad, hogy kiszedted a tranzisztort? Írj egy aprócska programot, ami csak bekapcsolja tranzisztort, és hozzá néhány szegmenst. Ennek mennie kellene. Ha ez működik, akkor lehet tovább lépni. Ha már itt problémák vannak, akkor lehet IC csere kellene, vagy a nyákot átellenőrizni. Felesleges az egész programot nézni, le kell bontani kis részegységekre, és azokat, külön-külön kell tesztelni.
Nem szedtem ki a tranzisztorokat, de helyette kivetem az ic-t és egyesével végigpróbáltam a szegmenseket és tranzisztorokat. Kivétel nélkül mind megy rendesen.
IC van 4db új 2-ben kipróbáltam a programot. Mind a két esetben ugyan az a helyzet.
Jaj-jaj!
Te minden szegmenst egyformára faragtál? PORTB = eredetileg minden szegmensnél más képlet van itt!!! Azokat kellene átemelni, ahogy mutattam. Tehát a számítások mindenütt az eredetiek maradnak, csak 2 sorral feljebb kerülnek. A hozzászólás módosítva: Jún 8, 2015
Akkor a nyákon levő hibák ki vannak zárva, az IC hiba ki van zárva, már csak a programozás maradt, esetleg FUSE bitek. Akkor kezdheted a PORTB bekapcsolását, akár ennyi is elég: PORTB=0xFF, ekkor 5V-ot kell kiadnia, a tranzisztor pedig lehúzza a GND-re, ha a PORTD megfelelő bit-jét is bekapcsolod.
Még nem tudjuk, azt sem milyen típusú kijelzőid vannak!
Közös Anódú, vagy a Katódjuk közös? Mert nagyon nem mindegy melyiket, hogyan kötődbe!
Szerintem a FUSE bitek-nél sem hibáztam. 8-as osztó bekapcsolva.
kapu48 A kijelző VQE13
És kész van a két soros program, amit javasoltam?
|
Bejelentkezés
Hirdetés |