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.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.
AVR läsa av 2st ADC-pinnar typ samtidigt problem nybörjare
-
- Inlägg: 7809
- Blev medlem: 26 maj 2009, 12:20:37
- Ort: Kristinehamn
Re: AVR läsa av 2st ADC-pinnar typ samtidigt problem nybörja
- Klas-Kenny
- Inlägg: 11328
- Blev medlem: 17 maj 2010, 19:06:14
- Ort: Växjö/Alvesta
Re: AVR läsa av 2st ADC-pinnar typ samtidigt problem nybörja
Okej, rättelse; hur periferienheterna fungerar, inte processorkärnan.
Re: AVR läsa av 2st ADC-pinnar typ samtidigt problem nybörja
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.
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
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.
Ä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
Du är helt fel ute när det gäller arduino och C. Sluta tjafsa om det när du inte begriper bättre.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.
Låt oss se vad Arduino själva säger.
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Re: AVR läsa av 2st ADC-pinnar typ samtidigt problem nybörja
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.
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
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
Ä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.
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
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.
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
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.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.
Re: AVR läsa av 2st ADC-pinnar typ samtidigt problem nybörja
Tack!
Ska testa hexadecimalt istället då
Ska testa hexadecimalt istället då
Re: AVR läsa av 2st ADC-pinnar typ samtidigt problem nybörja
> 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/
Jag vet inte om C, men Arduino har det (lite annan syntax dock):
https://www.arduino.cc/reference/en/lan ... constants/
-
- Inlägg: 1397
- Blev medlem: 29 januari 2011, 21:06:30
- Ort: Lapplandet
Re: AVR läsa av 2st ADC-pinnar typ samtidigt problem nybörja
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++.hawkan skrev: Låt oss se vad Arduino själva säger.
(bild)
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.
C tillåter kompilatortillverkaren att lägga till valfria prefix. gcc har 0b.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++ har 0b-prefix som ett krav sedan c++14.
Re: AVR läsa av 2st ADC-pinnar typ samtidigt problem nybörja
Det "stödet" är implementerat som 256 st #define, så visst finns det i vanilj-C också, om man vill/orkar.sodjan skrev:> 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/