Sida 2 av 2
Re: AVR läsa av 2st ADC-pinnar typ samtidigt problem nybörja
Postat: 7 augusti 2019, 15:50:08
av SeniorLemuren
Klas-Kenny skrev:Med "ren" C får man dock lära sig mycket mer om hur man läser datablad och hur processorn egentligen fungerar. Vilket är mycket användbart vid många problem, och inte minst den dag man vill köra någon annan processor.
Ren C? Skall man lära sig på riktigt hur en processor fungerar så är skillnaden mellan Arduino C och C i stort sett försumbar. Då är det ingenting annat än assembler som gäller.
Re: AVR läsa av 2st ADC-pinnar typ samtidigt problem nybörja
Postat: 7 augusti 2019, 16:09:30
av Klas-Kenny
Okej, rättelse; hur periferienheterna fungerar, inte processorkärnan.
Re: AVR läsa av 2st ADC-pinnar typ samtidigt problem nybörja
Postat: 7 augusti 2019, 16:10:12
av Icecap
tokfan: som du ser är det en viss skillnad i uppfattning av vad som är "bra" - så DIN definition är vad som gäller för DIG!
Tyvärr är Arduino's C inte helt enligt standarden, detta då inlärningströskeln på "riktig" C är lite högre.
Arduino är ett system som ska vara lättuggad, lite som färdigköpt barnmat, då är starttröskeln lägre.
Jag avskyr personligen Arduino, just av den anledning - men sedan är jag ganska hard-core p.g.a. en besvärlig "uppväxt" med Z80.
Sedan är det ju så att OAVSETT hur man löser en uppgift är den ju löst, vara sig det är i C, assembler, BASIC, JAL, Pascal eller vilket annat språk man använder.
Re: AVR läsa av 2st ADC-pinnar typ samtidigt problem nybörja
Postat: 7 augusti 2019, 16:55:20
av tokfan
Hihi.
Är lite samma grej som att fråga på ett musikforum om Mac eller pc är bäst för musikproduktion tror jag.
Jag nöter vidare med mitt "C/lågnivå/ett snäpp över assembler" eller vad jag ska kalla det.
Kör nog fast ganska snart igen med bitmaskande och operander inser jag nu när jag ska läsa av att min kabeltestare skickar signal på en pinne och tar emot över 2V på två pinnar (ADC) samtidigt som det ska vara 0V på de två övriga pinnarna.
Kom på att om det är kortis till en av de övriga I/O pinnarna så blir ju även den spänningen för låg för I/O port att notera.
Har byggt skiten fel från början. Får göra det bästa av det.
Re: AVR läsa av 2st ADC-pinnar typ samtidigt problem nybörja
Postat: 7 augusti 2019, 20:24:01
av hawkan
Icecap skrev:tokfan: som du ser är det en viss skillnad i uppfattning av vad som är "bra" - så DIN definition är vad som gäller för DIG!
Tyvärr är Arduino's C inte helt enligt standarden, detta då inlärningströskeln på "riktig" C är lite högre.
Arduino är ett system som ska vara lättuggad, lite som färdigköpt barnmat, då är starttröskeln lägre.
Jag avskyr personligen Arduino, just av den anledning - men sedan är jag ganska hard-core p.g.a. en besvärlig "uppväxt" med Z80.
Sedan är det ju så att OAVSETT hur man löser en uppgift är den ju löst, vara sig det är i C, assembler, BASIC, JAL, Pascal eller vilket annat språk man använder.
Du är helt fel ute när det gäller arduino och C. Sluta tjafsa om det när du inte begriper bättre.
Låt oss se vad Arduino själva säger.
Namnlös.png
Re: AVR läsa av 2st ADC-pinnar typ samtidigt problem nybörja
Postat: 7 augusti 2019, 20:29:48
av tokfan
Snabbfråga om någon fortfarande läser här:
Jag vill kolla att jag inte får spänning på någon av tre pinnar på en port.
Fattar inte hur jag ska göra. Exemplet nedan är åt pipan.
If(PIND & 0b11100000 == 0)
visa ok
Else
Visa fel.
Re: AVR läsa av 2st ADC-pinnar typ samtidigt problem nybörja
Postat: 7 augusti 2019, 20:44:54
av arvidb
Visa hela koden så är det mycket lättare att hjälpa. Är syntaxen rätt, har du satt upp pinnarna som inputs, etc...
Re: AVR läsa av 2st ADC-pinnar typ samtidigt problem nybörja
Postat: 7 augusti 2019, 21:15:26
av tokfan
Är inte vid datorn nu.
Har så begränsad tid vid den så jag försöker snoka innan för att vara förberedd.
Men är If satsen korrekt med tecken och allt?
Man ANDar hela porten med 0b1110000.
Är någon av de tre översta pinnarna i porten hög blir det True och inte ==0.
Re: AVR läsa av 2st ADC-pinnar typ samtidigt problem nybörja
Postat: 7 augusti 2019, 21:18:42
av Icecap
hawkan: jag har visst begrepp om det! Du borde se det själv i den text du lägger fram.
Sedan ingår det INTE i Standard C att man har en separat Startup()-funktion som är skiljd från main().
Jag var mycket väl om att Arduinos C kompileras av en standard GNU C kompiler - EFTER ATT DEN ÄR AUTOMATISK MODDAD LITE - vilket just är vad Arduino själv skriver om detta.
Det är inte standard C om inte man kan kompilera källkoden i C-kompilern utan dessa moddningar.
Sedan ser jag många andra problem med Arduino som sådan men de är kanske inte helt objektiva, något jag aldrig heller har dold.
Re: AVR läsa av 2st ADC-pinnar typ samtidigt problem nybörja
Postat: 7 augusti 2019, 21:33:23
av arvidb
tokfan skrev:Men är If satsen korrekt med tecken och allt?
Man ANDar hela porten med 0b1110000.
Är någon av de tre översta pinnarna i porten hög blir det True och inte ==0.
C har så vitt jag vet inget stöd för binära konstanter, så "0b11100000" bör ge kompileringsfel. "0xE0" eller "224" borde funka istället.
Re: AVR läsa av 2st ADC-pinnar typ samtidigt problem nybörja
Postat: 7 augusti 2019, 21:36:17
av tokfan
Tack!
Ska testa hexadecimalt istället då
Re: AVR läsa av 2st ADC-pinnar typ samtidigt problem nybörja
Postat: 7 augusti 2019, 23:00:35
av sodjan
> C har så vitt jag vet inget stöd för binära konstanter,
Jag vet inte om C, men Arduino har det (lite annan syntax dock):
https://www.arduino.cc/reference/en/lan ... constants/
Re: AVR läsa av 2st ADC-pinnar typ samtidigt problem nybörja
Postat: 8 augusti 2019, 01:54:38
av Mr Andersson
hawkan skrev:
Låt oss se vad Arduino själva säger.
(bild)
Jovisst, wiring (som arduinos språkvariant heter) är C++ på samma sätt som tyska är svenska om man kör det genom en översättare. Som icecap säger, frångår man standarden slutar det vara c++.
Vi har testat anställa embedded-programmerare som påstår sig kunna c++ från arduino-plattformen. De flesta är helt vilse när man tar bort stödhjulen.
- Vadå deklarera funktioner innan de anropas? Vad menar du?
- Vadå main? Programmet ska ju starta i setup.
- Vadå datablad? Finns det ingen färdig kod?
etc..
Dock är de inte dåliga programmerare i sig. De är bara inte c(++)-programmerare. Jag är övertygad om att de allra flesta enkelt kan lära sig skillnaderna, vi har bara inte tid att utbilda dem.
Och det där "all standard constructs
should work in arduino". Det vet jag från personlig erfarenhet att det inte gör. Deras automagiska kod-generering har stora problem och kraschar med vissa constexpr-templates som vanliga avr-g++ hanterar problemfritt.
arvidb skrev:tokfan skrev:C har så vitt jag vet inget stöd för binära konstanter, så "0b11100000" bör ge kompileringsfel. "0xE0" eller "224" borde funka istället.
C tillåter kompilatortillverkaren att lägga till valfria prefix. gcc har 0b.
C++ har 0b-prefix som ett krav sedan c++14.
Re: AVR läsa av 2st ADC-pinnar typ samtidigt problem nybörja
Postat: 8 augusti 2019, 17:09:30
av Wedge
Det "stödet" är implementerat som 256 st #define, så visst finns det i vanilj-C också, om man vill/orkar.