Sida 1 av 4
Är det inte dags för något nytt? Programmeringsspråk AVR
Postat: 30 december 2009, 23:07:47
av Gildebrand
Jag har tyvärr inte kommit så långt vad gäller inlärning av AVR-programmering. Jag kollar på kod, och det ser bara ut som rena djungeln. Jag kan ände med några språk på hyffsad nivå, C#, ASP (och .net såklart), PHP, VB med flera. Men jag måste säga att jag tycker att just AVR-programmering känns SÅÅÅÅ gammalt. Både i Språket, C, och det sätt man anropar funktioner i AVRen. (Vet inte om jag förstår det där själv heller)
Tänk vad underbart det vore om någon skulle släppa ett AVR-framework till Visual Studio, så man kan programmera i sitt favoritspråk. C#, C++, VB, eller kanske till och med F#. AVRStudio är inget program jag finner särskilt imponerande. Man får ingen särskild hjälp under programmeringen av programmet.
Varför finns inte det här? Är det bara jag som har tänkt den fantastiska idén?
Re: Är det inte dags för något nytt? Programmeringsspråk AVR
Postat: 30 december 2009, 23:12:45
av psynoise
Tror svaret är att dom flesta som programmerar mikrokontrollers är utbildade och inte behöver några program med en massa lull lull som finns i Windows-världen. Är själv av typen som sitter med vi och gcc.
Att du tycker att det är krångligt kan bero på att du har fel arbetsmetod. Men att förstå på sig en annans kod utan bra dokumentation kan vara väldigt svårt.
Re: Är det inte dags för något nytt? Programmeringsspråk AVR
Postat: 30 december 2009, 23:23:55
av Gildebrand
Så du tror inte att det vore enklare med ett någorlunda modernt programmeringsspråk, som inte konstruerades 1973?
Re: Är det inte dags för något nytt? Programmeringsspråk AVR
Postat: 30 december 2009, 23:27:15
av sodjan
> Jag kollar på kod, och det ser bara ut som rena djungeln.
Min gissning är att det inte beror på koden i sig (eller de verktyg som
användes för att skriva den) utan på att du inte riktigt har snappat
det där med programmering av mikrokontrollers (*än*, så klart...

)...
> Så du tror inte att det vore enklare med ett någorlunda modernt programmeringsspråk, som inte konstruerades 1973?
Sannolikt inte, nej. Det hjälper inte för att förstå grunderna (vilka till stor del
är de samma som 1973). I dagens överdimensionerade system där man kan
skriva vilken skitkod som helst och ändå få det att "fungera", så kanske det
inte spelar något större roll. Förrens man trillar dit på ett större serversystem
som plötsligt går på knäna när det blir fler än 10 användare och ingen förstår varför...
Re: Är det inte dags för något nytt? Programmeringsspråk AVR
Postat: 30 december 2009, 23:39:02
av Gildebrand
Hoppas du har rätt sodjan i att jag hajar till vad gäller programmeringen

Mycket vad gäller själva koden känner jag ju igen, då jag programmerat en hel del i C#, typ att allting ligger under "voids".
Men jag har svårt att förstå varför så många människor "nöjer sig" med att programmera i ett så förbaskat gammalt språk. Men jag kanske bara måste lära mig.
Men en fråga jag ställer er, tror ni att ni om 10 år fortfarande vill programmera i samma gamla språk? Kommer det aldrig komma något nytt?
Sitter just nu och försöker förstå mig på en väldigt enkel kodsnutt.
void delay(){
unsigned char i,j,k;
for(i=0;i<6;i++)
for(j=0;j<255;j++)
for(k=0;k<255;k++);
}
en del av kod till en stegmotor. förstår mig inte på vad "for" betyder. Förstår inte vad i, j och k är. Men jag måste bara lära mig. Men ni får gärna förklara, vad de olika sakerna i denna enkla kodsnutt gör

Re: Är det inte dags för något nytt? Programmeringsspråk AVR
Postat: 30 december 2009, 23:43:39
av sodjan
Sluta fokusera på språket. Om man min "fattar" programmering
så spelar språket inte någon som helst roll...
10 år ? Skämtar du ? Jag har programmerat i 30 år och
använder i princip samma verktyg och språk som då. Och
det lever jag väldigt bra på.
> förstår mig inte på vad "for" betyder.
RTFM !!
Re: Är det inte dags för något nytt? Programmeringsspråk AVR
Postat: 30 december 2009, 23:44:50
av Gildebrand
Okej!
Då är det väl bara att lära sig då och sluta skylla på uråldriga språk

Re: Är det inte dags för något nytt? Programmeringsspråk AVR
Postat: 30 december 2009, 23:44:50
av sneaky
Förlåt men du säger att du har hyffsad kunskap i "C#, ASP (och .net såklart), PHP, VB med flera" men har aldrig stött på "for"? Hur i he__te lyckas man med det?
Re: Är det inte dags för något nytt? Programmeringsspråk AVR
Postat: 30 december 2009, 23:46:08
av jesse
Processorarkitekturen är ju från 60-talet så programspråket passar väl bra. Moderna programspråk brukar sällan vara optimerade för att vara minnessnåla eller tidseffektiva.
Orsaken att ingen vill programmera i språk på "högre nivåer" som t.ex. objektorienterad C++ med klasser eller ännu värre: java (!) är väl att dess datastrukturer slukar stora mängder minne ? (det är i alla fall vad jag fått för mig), och om det är något som är begränsat i AVR-världen så är det väl just ramminnet. C++ går väl bra i och för sig, men man bör nog undvika för avancerade strukturer. Sättet man bygger upp objekt på i klasser osv.. inbillar jag mig slukar mer minne och tar längre tid / kräver med kod än mer "traditionella" sätt att programmera. Jag hade annars gärna jobbat med C++ hellre än C.
Någon som är mer insatt i C++ kan ju bekräfta eller dementera det jag sagt (gissat) här.
och det sätt man anropar funktioner i AVRen.
Hur menar du? Vilket sätt? Pratar du om C nu?
Du kan ju annars kolla på
"Rapid Code Generator" - Något slags objektorienterat system. Själv misstänker jag dock att den blir bökig eller omöjlig att använda om det blir för avancerat.
Men det skulle vara intressant om någon ville utveckla ett modernt språk speciellt anpassat för enkla microcontrollers... kanske kommer det en dag. Jag får ju själv erkänna att jag inte riktigt gillar C , det är alldeles för lätt att skriva oläslig kod och man kan röra ihop funktionerna i en obegriplig massa om man vill. Det skulle finnas striktare regler.
C#, ASP (och .net såklart), PHP, VB
Kan de verkligen kallas programspråk? Trodde de var begränsade saker för speciella applikationer...
Re: Är det inte dags för något nytt? Programmeringsspråk AVR
Postat: 30 december 2009, 23:52:43
av jesse
Men ni får gärna förklara, vad de olika sakerna i denna enkla kodsnutt gör

i, j och k är heltalsvariabler.
läs här.
for betyder att något skall upprepas ett visst antal gånger.
läs här.
Re: Är det inte dags för något nytt? Programmeringsspråk AVR
Postat: 30 december 2009, 23:53:12
av TomasL
Snälla nån, skämtar du?
"For" i C gör exakt samma sak som i BASIC, med lite knorr, dvs
for(i=0;i<6;i++)
Tilldela "i" värdet noll, kontrollera om "i" är mindre än 6, om ja inkrementera "i" starta om med att kontrollera om "i" är mindre än 6 osv. Om nej hoppa till nästa rad.
Och nej, pga av overheaden i C++ och C# lär de aldrig bli nånting man använder i den lilla uC-värden, möjligtvis på de stora ARMarna och MIPSarna.
dvs de som kan hantera ett par 10-100-tal MB med program och RAM-minne.
Inte ens BASIC pga overheaden är speciellt bra, samma gäller i vissa lägen även "gamla" C.
Re: Är det inte dags för något nytt? Programmeringsspråk AVR
Postat: 30 december 2009, 23:56:56
av Gildebrand
Ahh, for är likadant som i basic? Då är jag med.
Har bara kört C# senaste året, and i like it
Kan ni tipsa om några särskilt bra guider för att lära sig C för avr?
Re: Är det inte dags för något nytt? Programmeringsspråk AVR
Postat: 31 december 2009, 00:00:33
av psynoise
Finns inga bra guider eller tutorials, det ända som gäller är bok skriven av ett proffs och inte några andra amatörer, finns säkerligen någon bra bok om C-programmering i ditt lokala bibliotek.
Re: Är det inte dags för något nytt? Programmeringsspråk AVR
Postat: 31 december 2009, 00:07:04
av Gildebrand
Sökte på skolans och stadsbibliotekets katalog, men fanns bara om c++ och c#. Kan du rekommendera någon särskild bok så kanske jag får köpa den.
Re: Är det inte dags för något nytt? Programmeringsspråk AVR
Postat: 31 december 2009, 00:11:12
av sodjan
Ja, att C inte är ett speciellt bra *generellt* språk är nog de flesta överens om (*).
Men så konstruerades det inte heller för att vara det, utan som ett implementeringsspråk
för att göra konstruktionen av operativsystem (läs "UNIX") lite enklare på maskiner med
begränsade resurser (PDP-11 med kanske 32 eller 64 KB RAM). Och så långt fungerar det nog
hyggligt, även om det hade varit bra om vi sluppit sådant som t.ex C's hantering av strängar
vilket har medför en del problem (men också möjligheter för virusmakarna

)...
Det finns bättre språk för andra speciella behov t.ex Fortran för analys/simuleringar med
stor del matematik eller COBOL vilket fortfarande är det största språket för *stora*
affärssystem.
(*)
Notera att "inte speciellt bra" inte betyder detsamma som "inte populärt".
Det finns ingen regel att det alltid hänger ihop...
