ATMEGA32 port imput pin output

Diskuze a poradna o programátorech a programování různých obvodů

Moderátor: Moderátoři

Zpráva
Autor
Uživatelský avatar
xxxEDISONxxx
Příspěvky: 273
Registrován: 01 kvě 2006, 02:00
Bydliště: Šumava Prachatice tady je svět ještě normální v zimě bílý sníh v létě vedro ...

ATMEGA32 port imput pin output

#1 Příspěvek od xxxEDISONxxx »

Ahoj,
Mám dva problémy jak naprogramovat v bascomu načítání logického stavu z jednotlivého pinu do proměnné bez použití podmínky (chci to z důvodu rychlosti if je moc pumalé)

a za druhé nepovedlo se mi u tohoto procesoru oživit na jednom poru např. 7pinů jako output a jeden jako imput

u procesotu to 8535 č.2 normálně funguje ...

poradí někdo? děkuji

Uživatelský avatar
Atlan
Příspěvky: 4499
Registrován: 10 kvě 2004, 02:00
Bydliště: Košice

#2 Příspěvek od Atlan »

to by ma zaujimalo preco to je pomale....a ASm to zvladne rychlejsie :D

Uživatelský avatar
xxxEDISONxxx
Příspěvky: 273
Registrován: 01 kvě 2006, 02:00
Bydliště: Šumava Prachatice tady je svět ještě normální v zimě bílý sníh v létě vedro ...

#3 Příspěvek od xxxEDISONxxx »

no na přesné měření polohy nad určitou rychlost je to pomalé. 0,5um a chceš těch vzorků víc než 10/mm a jedeš s tím čidlem 600mm/s když píšu že je to pomalé tak je to asi pomalé když provedeš jedno if tak to pomalé není ale když je tam těch if 24 a chceš to optavdu rychle tak je to pomalé jestli mi chceš pomoct tak napiš prosím kód který by to zvládl rychle třeba v asembleru.

Andrea
Příspěvky: 9340
Registrován: 07 zář 2007, 02:00

#4 Příspěvek od Andrea »

To bys to musel napsat trochu méně zmateně a hlavně uvést, na jakém principu funguje to čidlo.

Uživatelský avatar
xxxEDISONxxx
Příspěvky: 273
Registrován: 01 kvě 2006, 02:00
Bydliště: Šumava Prachatice tady je svět ještě normální v zimě bílý sníh v létě vedro ...

#5 Příspěvek od xxxEDISONxxx »

čidlo je propojeno s procesorem pomocí SSI sběrnice (3 dráty DO,CSn,CLK)
grf vypadá takto toto potřebuju ubsloužit do proměnné bez použití if i2s na to znásilnit nejde (asi).
Naposledy upravil(a) xxxEDISONxxx dne 11 bře 2010, 22:44, celkem upraveno 1 x.

Andrea
Příspěvky: 9340
Registrován: 07 zář 2007, 02:00

#6 Příspěvek od Andrea »

Nevím o tom, že by AVR mělo hw řadič pro I2S. Má jen I2C a SPI a zrovna to SPI by na to možná šlo znásilnit, tedy spíš znásilnit to čidlo, jestli si nechá líbit 24 clk pulsů místo 18.

Uživatelský avatar
xxxEDISONxxx
Příspěvky: 273
Registrován: 01 kvě 2006, 02:00
Bydliště: Šumava Prachatice tady je svět ještě normální v zimě bílý sníh v létě vedro ...

#7 Příspěvek od xxxEDISONxxx »

nechytej mě za slovo upsal jsem se:-) na to spi jsem nepomyslel až budu doma tak to vyzkouším a ten kod v asm bys mi nenapsal ? prosím ;-)

Andrea
Příspěvky: 9340
Registrován: 07 zář 2007, 02:00

#8 Příspěvek od Andrea »

1) Já jsem ta Andrea
2) Nebuď línej a namáhej si taky trochu ten špunt na krku

Uživatelský avatar
popopepe
Příspěvky: 548
Registrován: 26 říj 2005, 02:00

Re: ATMEGA32 port imput pin output

#9 Příspěvek od popopepe »

xxxEDISONxxx píše:Ahoj,
Mám dva problémy jak naprogramovat v bascomu načítání logického stavu z jednotlivého pinu do proměnné bez použití podmínky (chci to z důvodu rychlosti if je moc pumalé)

a za druhé nepovedlo se mi u tohoto procesoru oživit na jednom poru např. 7pinů jako output a jeden jako imput

u procesotu to 8535 č.2 normálně funguje ...

poradí někdo? děkuji
Takže postupně:
jak nastavit vstup a výstup -
třeba takhle...

Config Pinb.0 = Output
Config Pinb.1 = Output
Config Pinb.2 = Input
Config Pinb.3 = Input
Pinb.2=1 - pokud tam chceš pull-up odpory na tom vstupu


A jak zjistit stav pinu pomocí if.. to nevím co znamená, ale např.:

dim a as bit

a=pinb.1

- tak v proměnné A budeš mít stav na pinu B.1

...

Uživatelský avatar
xxxEDISONxxx
Příspěvky: 273
Registrován: 01 kvě 2006, 02:00
Bydliště: Šumava Prachatice tady je svět ještě normální v zimě bílý sníh v létě vedro ...

#10 Příspěvek od xxxEDISONxxx »

Config Pinb.0 = Output
Config Pinb.1 = Output
Config Pinb.2 = Input
Config Pinb.3 = Input

takhle jsem to měl ale bylo to mrtvý tahat na portu za jednotlivý piny mi prostě nejde.Jde celý port nastavit buť jako out nebo in.Je to nějaký bordel v bascomu??? nebo co

a=pinb.1

takhle jsem to taky přesně měl ale nechodilo to tak proto se ptám tet to mam takto

část podprogramu
'D11
Reset Porta.2
If Pinc.0 = 1 Then
Pozice = Pozice + 1
End If
Set Porta.2

Uživatelský avatar
popopepe
Příspěvky: 548
Registrován: 26 říj 2005, 02:00

#11 Příspěvek od popopepe »

xxxEDISONxxx píše:Config Pinb.0 = Output
Config Pinb.1 = Output
Config Pinb.2 = Input
Config Pinb.3 = Input

takhle jsem to měl ale bylo to mrtvý tahat na portu za jednotlivý piny mi prostě nejde.Jde celý port nastavit buť jako out nebo in.Je to nějaký bordel v bascomu??? nebo co

a=pinb.1

takhle jsem to taky přesně měl ale nechodilo to tak proto se ptám tet to mam takto

část podprogramu
'D11
Reset Porta.2
If Pinc.0 = 1 Then
Pozice = Pozice + 1
End If
Set Porta.2
Nevím v čem máš bordel, ale mě to funguje bez problémů. Jak nastavení jednotlivých pinů na vstup a výstup najednou, tak přiřazení hodnoty do proměnné. Hledej, někde máš chybu... nebo sem dej delší výpis, z těch pěti řádků toho moc nepoznám. Tohle velmi snadno otestuješ pomocí tlačítek například...

Uživatelský avatar
xxxEDISONxxx
Příspěvky: 273
Registrován: 01 kvě 2006, 02:00
Bydliště: Šumava Prachatice tady je svět ještě normální v zimě bílý sníh v létě vedro ...

#12 Příspěvek od xxxEDISONxxx »

:D
Naposledy upravil(a) xxxEDISONxxx dne 11 bře 2010, 22:45, celkem upraveno 1 x.

Uživatelský avatar
popopepe
Příspěvky: 548
Registrován: 26 říj 2005, 02:00

#13 Příspěvek od popopepe »

Config Porta = Output
Config Portc = Input
Config Pina.0 = Input 'DO ... data out

Config Porta.1 = Output 'CS ... chip select
Config Porta.2 = Output

Tak zkus nahradit ty poslední dva řádky za:

Config Pina.1=output
Config Pina.2=Output

Uživatelský avatar
xxxEDISONxxx
Příspěvky: 273
Registrován: 01 kvě 2006, 02:00
Bydliště: Šumava Prachatice tady je svět ještě normální v zimě bílý sníh v létě vedro ...

#14 Příspěvek od xxxEDISONxxx »

zkusím jen mi zkus ječtě potadit ja odělat toto

D11
Reset Porta.2
If Pinc.0 = 1 Then
Pozice = Pozice + 1
End If
Set Porta.2

bez toho if a bez toho a = Porta.2 může být i Asembler

Uživatelský avatar
popopepe
Příspěvky: 548
Registrován: 26 říj 2005, 02:00

#15 Příspěvek od popopepe »

No a co nejdřív těch 12 bitů jenom načíst a pak je teprve zpracovat?

Odpovědět

Zpět na „Programování PIC, ATMEL, EEPROM a dalších obvodů“