Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
vilko Član



Pridružen-a: Pet 13 Feb 2004 10:26 Prispevkov: 3365 Aktiv.: 14.17 Kraj: Dragomer
|
Objavljeno: Sob Dec 22, 2012 2:08 pm Naslov sporočila: Interni pullup-i pri AMTEGA so bogpomagaj! |
|
|
Projektiral sem odtipavanje matrične tipkovnice in sem pri tem računal, da bom z internimi pull-up generiral visoko napetost za odtipavanje tipkovnice.
Larifari! Šele ko sem dodal zunanje 10kohmske upore, zadeva deluje, kot zamišljeno.
Naj bo moja izkušnja tudi poduk drugim začetnikom..
|
|
Nazaj na vrh |
|
 |
Jaka57 Moderator



Pridružen-a: Ned 12 Dec 2004 21:47 Prispevkov: 5820 Aktiv.: 24.50 Kraj: Grosuplje
|
Objavljeno: Sob Dec 22, 2012 2:11 pm Naslov sporočila: |
|
|
Kako si jih vključil, kajti po resetu so izključeni?
Vrednosti za atmega48,88,168,328:
Reset Pull-up: med 30 in 60 k
I/O pin Pull-up: med 20 in 50 k
_________________ Lp, Jaka |
|
Nazaj na vrh |
|
 |
Silvo Moderator


 
Pridružen-a: Pon 24 Feb 2003 17:09 Prispevkov: 14677 Aktiv.: 61.79
|
Objavljeno: Sob Dec 22, 2012 3:48 pm Naslov sporočila: Re: Interni pullup-i pri AMTEGA so bogpomagaj! |
|
|
vilko je napisal/a: |
Projektiral sem odtipavanje matrične tipkovnice in sem pri tem računal, da bom z internimi pull-up generiral visoko napetost za odtipavanje tipkovnice.
Larifari! Šele ko sem dodal zunanje 10kohmske upore, zadeva deluje, kot zamišljeno.
Naj bo moja izkušnja tudi poduk drugim začetnikom.. |
Lepo prosim... Katero mikrokontroler si uporabil. Ti spišem ob priliki kodo v dokaz, da zadeva čisto lepo dela. Povrh si upam pine koristiti še za kaj drugega. Recimo kot izhode za multipeksiranje dispeja.
_________________ lp
Silvo |
|
Nazaj na vrh |
|
 |
Branez Moderator


Pridružen-a: Pon 14 Apr 2003 7:21 Prispevkov: 7831 Aktiv.: 32.97 Kraj: Koprivnica HR
|
Objavljeno: Sob Dec 22, 2012 3:52 pm Naslov sporočila: |
|
|
Samo ne v Bascomu.
_________________ The true sign of intelligence is not knowledge but imagination.
Creativity is intelligence having fun!
Albert Einstein |
|
Nazaj na vrh |
|
 |
Silvo Moderator


 
Pridružen-a: Pon 24 Feb 2003 17:09 Prispevkov: 14677 Aktiv.: 61.79
|
Objavljeno: Sob Dec 22, 2012 4:03 pm Naslov sporočila: |
|
|
Branez je napisal/a: |
Samo ne v Bascomu.  |
Tukaj ne pada kritika na software, ampak na CPU. Program bo napisan v Assemberju.
_________________ lp
Silvo |
|
Nazaj na vrh |
|
 |
vilko Član



Pridružen-a: Pet 13 Feb 2004 10:26 Prispevkov: 3365 Aktiv.: 14.17 Kraj: Dragomer
|
Objavljeno: Sob Dec 22, 2012 4:37 pm Naslov sporočila: |
|
|
Uporabil sem Mega8.
Jaka57 je napisal/a: |
Kako si jih vključil, kajti po resetu so izključeni?
|
Vhodne pine in njih pullupe se vključil tako:
Koda: |
'INPUTS All Active Low
Row1 Alias Pinb.1 : Config Row1 = Input : Portb.1 = 1 ' Keyboard Rows (Read)
Row2 Alias Pinb.2 : Config Row2 = Input : Portb.2 = 1
Row3 Alias Pind.3 : Config Row3 = Input : Portd.3 = 1
Row4 Alias Pind.4 : Config Row4 = Input : Portd.4 = 1
|
Če postavim pinb1 na input in postavim portb1 na 1 pomeni to pullup vključen.
|
|
Nazaj na vrh |
|
 |
blay44 Član


Pridružen-a: Ned 19 Dec 2010 18:17 Prispevkov: 604 Aktiv.: 3.41
|
Objavljeno: Sob Dec 22, 2012 5:36 pm Naslov sporočila: |
|
|
Basic naj bi to pravilno prevedel. V registru ddX ustrezen bit na low in v registru portX na high.
Obstaja pa še PUD bit v registru mcucr, ki izključi pull up upore. Pri resetu so vključeni, torej je PUD nič.
Vprašanje kaj Basic naredi z njim.
Je težka z AVRji. Kombinacij je kot solate.
LP
|
|
Nazaj na vrh |
|
 |
program_er Član


Pridružen-a: Sob 08 Mar 2008 13:47 Prispevkov: 2173 Aktiv.: 10.30 Kraj: Maribor (Pohorje)
|
Objavljeno: Sob Dec 22, 2012 5:42 pm Naslov sporočila: |
|
|
Kaj pa če za vsak slučaj poiskusiš še "ročno" konfigurirati pine?
Koda: |
DDRB = DDRB And &B11100001 'Pocisti DDRB4:1 (DDRB &= 0b11100001)
PORTB = PORTB Or &B00011110 'Vklopi Pull-Up na PORTB4:1 (PORTB |= 0b00011110)
Row1 Alias Pinb.1
...
|
|
|
Nazaj na vrh |
|
 |
jani18 Član

Pridružen-a: Sob 18 Sep 2010 10:22 Prispevkov: 133 Aktiv.: 0.74 Kraj: Ojstri Vrh
|
Objavljeno: Sob Dec 22, 2012 5:53 pm Naslov sporočila: |
|
|
Pozdravljeni!
Letos sem pisal program v c-ju (AVR Studi 4) ravno za matrično tipkovnico
3x4 in sem uporabil interne pull-up upore in zadeva čisto lepo deluje.
mikrokontroler pa je bil ATMega324A.
LpJ!
|
|
Nazaj na vrh |
|
 |
blay44 Član


Pridružen-a: Ned 19 Dec 2010 18:17 Prispevkov: 604 Aktiv.: 3.41
|
Objavljeno: Sob Dec 22, 2012 6:19 pm Naslov sporočila: |
|
|
Vilko, zdajle sem se spomnil, verjetno je problem v PinB.X. Ta z vpisom 1 ravno obrne bit v potrb registru.
Sam sem se ubijal ene tri dni, ko sem se spraševal kaj hudiča je narobe z ukazom
sbi/cbi pinb,pinbX
Verjetno prevajalnik v Basicu pade na isto foro.
LP
|
|
Nazaj na vrh |
|
 |
Jaka57 Moderator



Pridružen-a: Ned 12 Dec 2004 21:47 Prispevkov: 5820 Aktiv.: 24.50 Kraj: Grosuplje
|
Objavljeno: Sob Dec 22, 2012 6:22 pm Naslov sporočila: |
|
|
@Vilko: tole sem našel v helpu:
Opis: |
|
Velikost datoteke: |
58.75 KB |
Pogledana: |
74 krat |

|
_________________ Lp, Jaka |
|
Nazaj na vrh |
|
 |
Silvo Moderator


 
Pridružen-a: Pon 24 Feb 2003 17:09 Prispevkov: 14677 Aktiv.: 61.79
|
Objavljeno: Sob Dec 22, 2012 7:00 pm Naslov sporočila: |
|
|
Avr-ji imajo 3 registre za upravljajnje z IO pini.
DDRx register preklaplja vhode na izhode 0 vhod 1 izhod (velja za posamezen bit registra)
PORTx register ima dva pomena. V koliko je pin definiran kot vhod postavljen bit vklopi pullup upor. Če je pin definiran kot izhod pa določi stanje izhoda.
V PINx registru je aktualno stanje IO pinov ne glede na to kaj je pin vhod ali izhod.
Pri matričnem branju tipkovnice je potrebno preklaplat med vhodi ter izhodi med samim branjem. (na nizko stanje kot izhod se "vlači" le stolpec ji se bere. Ostale je potrebno preklopit na vhode.)
_________________ lp
Silvo |
|
Nazaj na vrh |
|
 |
Vlado Član

Pridružen-a: Sre 03 Mar 2004 21:35 Prispevkov: 563 Aktiv.: 2.37 Kraj: Ljubljana
|
Objavljeno: Sob Dec 22, 2012 8:09 pm Naslov sporočila: |
|
|
Bascom pravilno postavi registre, preverjeno v simulatorju.
Moje izkušnje, notranji pull up upori so v redu če so povezave do vhodnih pinov kratke.
V primeru da so povezave do vhodnih pinov daljše uporabljam zunanje pull up upore.
Prvič sem se s to težavo srečal ko sem delal en GSM alarem, ko se je modem inicializiral so vhodi noreli (GSM modem je bil zelo blizu procesorja), od tedaj na vhodih pinih uporabljam znanje pull up upore.
|
|
Nazaj na vrh |
|
 |
arksi Član

Pridružen-a: Sre 03 Sep 2008 10:19 Prispevkov: 748 Aktiv.: 3.65 Kraj: Dolenjska
|
Objavljeno: Sob Dec 22, 2012 8:44 pm Naslov sporočila: |
|
|
Silvo je napisal/a: |
Avr-ji imajo 3 registre za upravljajnje z IO pini.
DDRx register preklaplja vhode na izhode 0 vhod 1 izhod (velja za posamezen bit registra)
PORTx register ima dva pomena. V koliko je pin definiran kot vhod postavljen bit vklopi pullup upor. Če je pin definiran kot izhod pa določi stanje izhoda.
V PINx registru je aktualno stanje IO pinov ne glede na to kaj je pin vhod ali izhod. |
Samo medklic: kako se torej pull-up upore v UC vklopi (C jezik)?
DDRx=0 //definiramo vhod
PORTx= //kdaj so vklopljeni, ko je 0 ali, ko je 1?
Ali je mogoče kakšna čisto tretja varijanta vklaplanja pull-up...
LP
|
|
Nazaj na vrh |
|
 |
Silvo Moderator


 
Pridružen-a: Pon 24 Feb 2003 17:09 Prispevkov: 14677 Aktiv.: 61.79
|
Objavljeno: Sob Dec 22, 2012 8:49 pm Naslov sporočila: |
|
|
Primer:
Assembler
Koda: |
ldi r16,(1<<PB7)|(1<<PB6)|(1<<PB1)|(1<<PB0)
ldi r17,(1<<DDB3)|(1<<DDB2)|(1<<DDB1)|(1<<DDB0)
out PORTB,r16
out DDRB,r17 |
"C"
Koda: |
PORTB = (1<<PB7)|(1<<PB6)|(1<<PB1)|(1<<PB0);
DDRB = (1<<DDB3)|(1<<DDB2)|(1<<DDB1)|(1<<DDB0);
|
_________________ lp
Silvo |
|
Nazaj na vrh |
|
 |
|