Skrivning till flera portar samtidigt i Arduino UNO möjligt?

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 45176
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Skrivning till flera portar samtidigt i Arduino UNO möjl

Inlägg av TomasL »

För varför ska jag läsa datablad innan jag ens vet vilka krav jag har
Då kanske du kan välj en processor från början, som motsvarar dina krav.
Och ja, jag läser in de processorer jag tror kan funka, därefter specar jag. (finns ju ingen anledning att speca sånt som är omöjligt)
på så sätt har jag ett rätt bra hum om vilka processorer som uppfyller mina behov.
Nu är det ju iofs lite svårt eftersom du skall använda en redan graft handikappad processor och system.
Användarvisningsbild
Spisblinkaren
EF Sponsor
Inlägg: 12990
Blev medlem: 13 december 2012, 21:41:43

Re: Skrivning till flera portar samtidigt i Arduino UNO möjl

Inlägg av Spisblinkaren »

sodjan skrev: > jag ställer upp krav SEN läser jag datablad

Njae... :-) Du ställer krav, frågar på forumet och SEN kollar du med databladet.
Är det nåt fel med det då?

Det är väl ett forum, eller vad är det för nåt :D

MVH/Roger
Senast redigerad av Spisblinkaren 26 november 2016, 22:43:08, redigerad totalt 2 gånger.
Användarvisningsbild
rvl
Inlägg: 5721
Blev medlem: 5 april 2016, 14:58:53
Ort: Helsingfors

Re: Skrivning till flera portar samtidigt i Arduino UNO möjl

Inlägg av rvl »

Data Direction Register D, hittade du tydligen redan.

Se https://en.wikipedia.org/wiki/Undersampling[quote]In signal processing, undersampling or bandpass sampling is a technique where one samples a bandpass-filtered signal at a sample rate below its Nyquist rate (twice the upper cutoff frequency), but is still able to reconstruct the signal.[/quote]
Sen om du lyckas sampla på ordentligt höga frekvenser, kan du få ett nytt problem... Nämligen, hur du ska hinna skyffla data för att lagras.

ps. Jag har aldrig ägt en Arduino, om inte dethär räknas:
Mega328.jpg
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Användarvisningsbild
Spisblinkaren
EF Sponsor
Inlägg: 12990
Blev medlem: 13 december 2012, 21:41:43

Re: Skrivning till flera portar samtidigt i Arduino UNO möjl

Inlägg av Spisblinkaren »

rvl skrev:Data Direction Register D, hittade du tydligen redan.

Se https://en.wikipedia.org/wiki/Undersampling[quote]In signal processing, undersampling or bandpass sampling is a technique where one samples a bandpass-filtered signal at a sample rate below its Nyquist rate (twice the upper cutoff frequency), but is still able to reconstruct the signal.
[/quote]

Intressant, men rätta mig om jag har fel för även om just samplingen kanske kan fungera på det här viset så krävs det väl en matteprocessor för att återskapa signalen?

Jag menar om samplingen är rättfram dvs ett gäng sampel per period (jag föredrar minst tio) då krävs det ingensomhelst matematik för att återskapa signalen för den finns ju liksom där redan, eller hur?

I mitt fall är det extra enkelt för jag vet vilken signalfrekvens som skickas in i mätsystemet och således vet jag vilken frekvens jag får ut (undantaget extrema situationer där frekvensen ändras).

Men jag kan inte ha två sampel på en period och återskapa faktisk utsignal utan avancerad matte.

MVH/Roger
PS
Dessutom finns ingen overhead-marginal för några matematiska uträkningar.
Användarvisningsbild
Spisblinkaren
EF Sponsor
Inlägg: 12990
Blev medlem: 13 december 2012, 21:41:43

Re: Skrivning till flera portar samtidigt i Arduino UNO möjl

Inlägg av Spisblinkaren »

TomasL skrev:
För varför ska jag läsa datablad innan jag ens vet vilka krav jag har
Då kanske du kan välj en processor från början, som motsvarar dina krav.
Och ja, jag läser in de processorer jag tror kan funka, därefter specar jag. (finns ju ingen anledning att speca sånt som är omöjligt)
på så sätt har jag ett rätt bra hum om vilka processorer som uppfyller mina behov.
Nu är det ju iofs lite svårt eftersom du skall använda en redan graft handikappad processor och system.
Intressant, jag gör annorlunda än vad du gör, alltså?
Då kanske du kan välj en processor från början, som motsvarar dina krav.
Hur ska jag kunna välja en processor från början om jag inte ens känner till mina krav?

Visst, det finns mycket avancerade och kraftfulla grejer där ute som man kan nyttja rent universellt men man kanske vill lägga sig på en säg prisnivå som är acceptabel.
Och ja, jag läser in de processorer jag tror kan funka, därefter specar jag.
Intressant fast mycket märklig arbetsgång för man kan väl inte speca nåt innan man vet vad man vill ha?
Nu är det ju iofs lite svårt eftersom du skall använda en redan graft handikappad processor och system
Du är rolig med sådana här uttryck, bara för att det inbyggda systemet (obs) inte är i paritet med vad du sysslar med professionellt så är det kass.

Du ser bara det bästa hela tiden och kan inte ens försöka förstå att mängder med människor också kan och vill, utan extrema krav och förkunskaper, nyttja dom möjligheterna som en processor innebär (läs att den inte behöver vara bäst i världen).

Jag tycker att Arduino är bland det bästa som hänt människor utanför den inre cirkeln.

Fast det är klart, jag suger fortfarande på högnivåprogrammering (och jag har lovat mig att aldrig bli bra på det heller) :D

MVH/Roger
Borre
Inlägg: 4566
Blev medlem: 14 juni 2007, 15:43:50
Ort: Hälsingland

Re: Skrivning till flera portar samtidigt i Arduino UNO möjl

Inlägg av Borre »

TomasL skrev:Nej det kanske man INTE gör, du får titta i manualen för ditt system för exakt syntax, och eftersom det är en Arduino, så har man säkert hittat på en mer krystad och komplex syntax för detta.
Det går alldeles utmärkt att skriva C direkt i Arduino om man nu inte vill använda deras "kod", men det är väl för svårt för dig att ta reda på, lättare att bara gnälla och klanka ner på saker man tror en massa om, så som du alltid gör.
Likaså dessa idiotiska jämförelse med andra processorer vissa av er kör med, påstår och tror att en Arduino är en specifik modell med just Atmega när det egentligen finns flera med allt från just Atmega till 32-bitars ARM Cortex osv.

Men för att ge ett exempel bara ändå, sen om roger har användning av det eller inte..:

Kod: Markera allt

    #include <avr/io.h>
    #include <util/delay.h>
     
    int main (void)
    {
      DDRB |= _BV(DDB5); // set pin 5 of PORTB for output
     
      while(1) {
        PORTB |= _BV(PORTB5); // set pin 5 high to turn led on
        _delay_ms(1000);
     
        PORTB &= ~_BV(PORTB5); // set pin 5 low to turn led off
        _delay_ms(1000);
      }
    }
Detta är ett exempel som fungerar direkt i Arduino och motsvarar "Blink"-exemplet i Arduino.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 45176
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Skrivning till flera portar samtidigt i Arduino UNO möjl

Inlägg av TomasL »

Det går alldeles utmärkt att skriva C direkt i Arduino om man nu inte vill använda deras "kod", men det är väl för svårt för dig att ta reda på,
Jättebra, då fungerar ju det jag föreslog tidigare. Och ja, eftersom jag inte har någon Arduino, aldrig använt någon, så vet jag naturligtvis inte exakt hur syntaxen ser ut i den.
Jag gav ett förslag på hur man eventuellt kan göra, men som inte nödvändigtvis behöver fungera i en Arduino.
Beträffande andra prollar, så har det väl med att göra huruvida man kan skriva fler än 8 bitar samtidigt till olika portar.
Användarvisningsbild
Spisblinkaren
EF Sponsor
Inlägg: 12990
Blev medlem: 13 december 2012, 21:41:43

Re: Skrivning till flera portar samtidigt i Arduino UNO möjl

Inlägg av Spisblinkaren »

Borre skrev:
TomasL skrev:Nej det kanske man INTE gör, du får titta i manualen för ditt system för exakt syntax, och eftersom det är en Arduino, så har man säkert hittat på en mer krystad och komplex syntax för detta.
Det går alldeles utmärkt att skriva C direkt i Arduino om man nu inte vill använda deras "kod", men det är väl för svårt för dig att ta reda på, lättare att bara gnälla och klanka ner på saker man tror en massa om, så som du alltid gör.
Likaså dessa idiotiska jämförelse med andra processorer vissa av er kör med, påstår och tror att en Arduino är en specifik modell med just Atmega när det egentligen finns flera med allt från just Atmega till 32-bitars ARM Cortex osv.

Men för att ge ett exempel bara ändå, sen om roger har användning av det eller inte..:

Kod: Markera allt

    #include <avr/io.h>
    #include <util/delay.h>
     
    int main (void)
    {
      DDRB |= _BV(DDB5); // set pin 5 of PORTB for output
     
      while(1) {
        PORTB |= _BV(PORTB5); // set pin 5 high to turn led on
        _delay_ms(1000);
     
        PORTB &= ~_BV(PORTB5); // set pin 5 low to turn led off
        _delay_ms(1000);
      }
    }
Detta är ett exempel som fungerar direkt i Arduino och motsvarar "Blink"-exemplet i Arduino.
Men vad trevligt, nu ska jag "bara" försöka förstå den här korta koden:

DDRB: Data Direction Register portB, eller hur?

|= betyder OR, väl?

_BV(DDB5): _BV vet jag inte vad det betyder men resten kanske betyder Data Direction Bit 5 (eller bit 5 i portB)?

PORTB |= _BV(PORTB5); PORTB ORas med _BV(PORTB5) och minst bit 5 blir alltid hög om den så att säga maskas hög (beror på vad _BV(PORTB5) verkligen betyder), nej det här förstår jag inte riktigt.

PORTB &= ~_BV(PORTB5); Det här förstår jag följaktligen inte heller men nån slags AND är det i alla fall, kanske snoken betyder NOT? Men det är väl reserverat för utropstecknet?

Förlåt mig Borre men tänk vad mycket såna här krumelurer och trams det finns i högnivåspråk, varför liksom inte skriva AND för and och OR för or som man gör i Assembler?

Nej, det kommer nog inte bli nåt Arduino-projekt av det här (mest för att jag helt enkelt inte varken kan eller gillar högnivå-programmering) MEN jag kommer ändå ta fram en Mät-shield för UNO som passar mina behov (Flash-A/D).

Sen får Ni gärna hjälpa mig avgöra om shielden kan fås att fungera.

MVH/Roger
PS
Finns det Assembler-kompilator för UNO? :)
Användarvisningsbild
sodjan
EF Sponsor
Inlägg: 43152
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping
Kontakt:

Re: Skrivning till flera portar samtidigt i Arduino UNO möjl

Inlägg av sodjan »

> _BV vet jag inte vad det betyder

http://www.atmel.com/webdoc/AVRLibcRefe ... d9546.html
http://www.atmel.com/webdoc/AVRLibcRefe ... se_bv.html
http://www.avrfreaks.net/forum/what-all-bv-stuff-about
http://www.avrfreaks.net/forum/bv

Du kan lätt hitta fler beskrivningar...

> PORTB &= ~_BV(PORTB5); Det här förstår jag följaktligen inte heller...

_BV(PORTB5) = b'00100000'
~_BV(PORTB5) = b'11011111'. Måsvingen inverterar värdet.

PORTB &= ~_BV(PORTB5) => PORTB &= b'11011111'
D.v.s att alla bitar i PORTB behålls förutom bit 5 som nollas genom en AND operation.
Det kan även om jag inte har helt fel skrivas:

PORTB = PORTB & ~_BV(PORTB5)

Att skriva &= är en (egentligen onödig) "shorthand" i C. Jag vet inte om det
finns några optimeringar som kompilatorn kan göra i det fallet.
SeniorLemuren
Inlägg: 7780
Blev medlem: 26 maj 2009, 12:20:37
Ort: Kristinehamn

Re: Skrivning till flera portar samtidigt i Arduino UNO möjl

Inlägg av SeniorLemuren »

När man inte är van så kan skrivsättet att skriva &= resp. |= Vara rörigare att förstå än när man skriver det på det längre viset tycker jag.

#include <avr/io.h>
#include <util/delay.h>

int main (void)
{
DDRB = DDRB | _BV(DDB5); // set pin 5 of PORTB for output

while(1) {
PORTB = PORTB | _BV(PORTB5); // set pin 5 high to turn led on
_delay_ms(1000);

PORTB = PORTB & ~_BV(PORTB5); // set pin 5 low to turn led off
_delay_ms(1000);
}
}
Användarvisningsbild
Spisblinkaren
EF Sponsor
Inlägg: 12990
Blev medlem: 13 december 2012, 21:41:43

Re: Skrivning till flera portar samtidigt i Arduino UNO möjl

Inlägg av Spisblinkaren »

Det där var helt klart tydligare, tack SeniorLemuren.

Samtidigt undrar jag om sodjan verkligen har rätt där uppe när han skriver:
PORTB &= ~_BV(PORTB5) => PORTB &= b'11011111'
D.v.s att alla bitar i PORTB behålls förutom bit 5 som nollas genom en AND operation.
För hur vet man att det inte finns fler nollor i porten?

För det enda man vet är väl att det blir noll för bit 5?

MVH/Roger
Användarvisningsbild
ahlsten
Inlägg: 659
Blev medlem: 12 november 2005, 00:24:14
Ort: Uppsala

Re: Skrivning till flera portar samtidigt i Arduino UNO möjl

Inlägg av ahlsten »

Ser inget fel i den utsagon alls, är du säker på att du inte läst för fort?
Användarvisningsbild
Spisblinkaren
EF Sponsor
Inlägg: 12990
Blev medlem: 13 december 2012, 21:41:43

Re: Skrivning till flera portar samtidigt i Arduino UNO möjl

Inlägg av Spisblinkaren »

Jag tror jag fattar nu, alla bitar utom bit 5 kan anta vilket värde som helst men bit 5 blir tvångssatt till noll.

Vill minnas att detta kallas maskning.

MVH/Roger
Användarvisningsbild
Spisblinkaren
EF Sponsor
Inlägg: 12990
Blev medlem: 13 december 2012, 21:41:43

Re: Skrivning till flera portar samtidigt i Arduino UNO möjl

Inlägg av Spisblinkaren »

Här är förresten min nya variant.

Nu ska jag bara leta rätt på en lämplig Flash-A/D.

MVH/Roger
PS
Finns det tryckknappar som har två lägen? Vill nyttja NAND-kontaktstudseliminerare (även om signalen nu går in till A0).
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Användarvisningsbild
Spisblinkaren
EF Sponsor
Inlägg: 12990
Blev medlem: 13 december 2012, 21:41:43

Re: Skrivning till flera portar samtidigt i Arduino UNO möjl

Inlägg av Spisblinkaren »

Nu har jag åter stiftat bekantskap med min Flash-A/D som jag nyttjade i mitt examensarbete (TV-Scope) för 20 år sedan.

Kretsen heter TDA8703 och har en omvandligstid för 8 bitar på maximalt 20ns, det Ni :D

Här finns databladet: http://www.nxp.com/documents/data_sheet/TDA8703_3.pdf

MVH/Roger
PS
Nu ska jag försöka hålla mig till min Samplingssystem-tråd :D

Fast trafiken är bättre här :D
Skriv svar