Stránka 1 z 2

ATMEGA32 port imput pin output

Napsal: 09 bře 2010, 23:18
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

Napsal: 09 bře 2010, 23:49
od Atlan
to by ma zaujimalo preco to je pomale....a ASm to zvladne rychlejsie :D

Napsal: 10 bře 2010, 10:23
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.

Napsal: 10 bře 2010, 10:27
od Andrea
To bys to musel napsat trochu méně zmateně a hlavně uvést, na jakém principu funguje to čidlo.

Napsal: 10 bře 2010, 10:53
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).

Napsal: 10 bře 2010, 11:22
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.

Napsal: 10 bře 2010, 11:38
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 ;-)

Napsal: 10 bře 2010, 12:48
od Andrea
1) Já jsem ta Andrea
2) Nebuď línej a namáhej si taky trochu ten špunt na krku

Re: ATMEGA32 port imput pin output

Napsal: 10 bře 2010, 13:45
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

...

Napsal: 10 bře 2010, 15:23
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

Napsal: 10 bře 2010, 16:19
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...

Napsal: 10 bře 2010, 16:26
od xxxEDISONxxx
:D

Napsal: 10 bře 2010, 17:07
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

Napsal: 10 bře 2010, 17:37
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

Napsal: 10 bře 2010, 18:47
od popopepe
No a co nejdřív těch 12 bitů jenom načíst a pak je teprve zpracovat?