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
![Very Happy :D](./images/smilies/icon_biggrin.gif)
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
![Wink ;-)](./images/smilies/icon_wink.gif)
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
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?