Är det samma metodik att programmera olika processorer?

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
DanielM
Inlägg: 2223
Blev medlem: 5 september 2019, 14:19:58

Re: Är det samma metodik att programmera olika processorer?

Inlägg av DanielM »

TomasL skrev: 19 februari 2024, 20:19:14
Pic och STM är väll väldigt jämlika som jag har hört.
Nja, det är de inte, PIC är en produkt från företaget MicroChip, STM är ett företag ST Microelectronics.
Dvs två väldigt skilda saker, som inte har med varandra att göra.
Så AVR är inget att investera på? För att det är gammal teknik? Dom kom 1997. PIC kom 1975!
Det finns ingen gammal teknik när det gäller Processorer, möjligtvis tillverkningsteknisk.
Logiskt sett så har de i princip sett likadana ut sedan den första processorn utvecklades.

AVR är en serie processorer utvecklade av ATMEL.
Microchip köpte Atmel 2016.
Huruvida arkitekturen utvecklades för 40-50 år sedan spelar ingen som helst roll, dagens PC utvecklades i början på 70-talet, och vi använder fortfarande samma arkitektur.

Sedan är det så att vissa arkitekturer är svårare att göra vissa saker på än andra.
HW-debuggning kan vara en sådan sak.
Sedan kanske det inte finns debuggers som liknar PicKit till AVR-prollarna.
PicKit är en extrem lågpris Programmerare/debugger från Microchip avsedd främst för 8-bitars PIC-processorer.
Skall man jobba med PIC16/17/18/24/32 etc, över engångs hobbynivå så är en ICD ett väldigt bra verktyg att investera i, och det betalar sig många gånger om.
Mitt mål är att förstå en uC. Jag känner att jag blir inte bättre när jag använder STM32CubeIDE som in princip gör jobbet åt mig. Jag bara konfigurerar och sedan skriver jag kod. Bara det.

Mitt mål är att börja med någon enkel processor så jag kan lära mig förstå vad jag ska göra om jag ska aktivera en digital utgång så den blir hög.

Vart ska man börja. Vart ska jag titta på.
När jag kollar på Microchips hemsida så rekomenderar dom otroligt många verktyg åt mig. Jag förstår att dom vill sälja allt, men jag har som mål med att förstå en processor.

Min förhoppning är att om jag kan förstå t.ex AVR. Alltså programmera AVR med register. Då kan jag göra samma sak i ARM eller annan processor då metodiken är det samma. Men jag vet inte om det är så.

Pickit...lågpris? Nej.
ST ger bort ST-Link nästan gratis. Så fort man har köpt en Nucleo så får man en ST-Link på köpet.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 45502
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Är det samma metodik att programmera olika processorer?

Inlägg av TomasL »

Börja med grundläggande digitalteknik, lär dig hur grindar mm fungerar, gå sedan vidare och lär dig hur en ALU fungerar.......
Sedan när du har lärt dig detta, så tanka ned ett datablad på en lämplig processor, kanske en 6800/6502 eller liknande och studera detta datablad tills du kan det utantill, därefter kan du börja avancera upp i periferienheter och arkitektur.
Det finns inga genvägar, man måste lära sig från början.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 45502
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Är det samma metodik att programmera olika processorer?

Inlägg av TomasL »

Du kan ju börja med att försöka förstå detta schema:
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
DanielM
Inlägg: 2223
Blev medlem: 5 september 2019, 14:19:58

Re: Är det samma metodik att programmera olika processorer?

Inlägg av DanielM »

TomasL skrev: 19 februari 2024, 21:29:46 Börja med grundläggande digitalteknik, lär dig hur grindar mm fungerar, gå sedan vidare och lär dig hur en ALU fungerar.......
Sedan när du har lärt dig detta, så tanka ned ett datablad på en lämplig processor, kanske en 6800/6502 eller liknande och studera detta datablad tills du kan det utantill, därefter kan du börja avancera upp i periferienheter och arkitektur.
Det finns inga genvägar, man måste lära sig från början.
Så om det inte spelar någon roll vilken processor jag kan börja med. Då kan jag lika gärna börja med dom jag redan har t.ex ATMega328.

Är inte 6800/6502 att ta i lite ? Eller vad är syftet med att välja en sådan gammal processor?
TomasL skrev: 19 februari 2024, 21:37:38 Du kan ju börja med att försöka förstå detta schema:
And, nor, xor, not, or med mera kan jag. Men det är svårt att se vad den totala funktionen ska göra i ditt schema. Men det verkar vara en räknare om jag får avgöra på etiketterna.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 45502
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Är det samma metodik att programmera olika processorer?

Inlägg av TomasL »

Är inte 6800/6502 att ta i lite ? Eller vad är syftet med att välja en sådan gammal processor?
De är förhållandevis enkla processorer, utan en massa kringutrustning som stökar till det.
Ritningen, jo det är grundstenen i processor, dvs ALUn, vilket uttryckt betyder "Arethmic Logic Unit" dvs en av de viktigaste byggstenarna i en CPU.
Ritningen visar en 1-bits CPU-slice, 8 st identiska ger en 8-bitars ALU osv.
Nu är detta realiserat med ECL-grindar vilket ger en del kul egenskaper.

Beroende på tillstånden på styrsignalerna ALUOPA-ALUOPC och BNEG, så gör den AND, OR, XOR, NOR, ADD, SUB och SLT för Bitarna A och B samt dess komplementära resultat.
SET och SLT är en liten special från MIPS, SLT betyder SET LESS THAN dvs A slt B är 1 om A>=B, SET och LESS kopplas lite olika beroende på vilken Bit slicen är.
dvs MSb SET ansluts till LSb LESS, övriga SET är 0, och de övriga SET används inte
DanielM
Inlägg: 2223
Blev medlem: 5 september 2019, 14:19:58

Re: Är det samma metodik att programmera olika processorer?

Inlägg av DanielM »

Använder ens företag detta idag? Är dom inte mer vana med mer färdiga lösningar ?

Om jag får yttra mig angående processorer. Om jag tar en valfri processor och ska använda denna. Det första jag tänker på är absoluta maximala gränsvärden som processorn får utsättas för t.ex max 6.0 volt och rekommenderad spänning är 5.0 volt.

Där efter så måste något driva processorns instruktioner. Alltså en klocka. Klockan behöver en kristall för att generera en sinusvåg som blir en fyrkantsvåg. Så detta betyder att klockan måste aktiveras. Antingen aktiveras den med en intern kristall eller så aktiveras den med extern kristall.

Där efter kommer det ett blockdiagram som ser ut så här. Tydligen så ska detta blockdiagram förklara för mig vad jag ska göra, men jag blir bara mer förvirrad.

Det är ungefär här som jag känner att jag inte kan fortsätta längre.
Nu är STM32 brutal när det kommer till komplex uppbyggnad. Jag bara använde detta som exempel.
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 45502
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Är det samma metodik att programmera olika processorer?

Inlägg av TomasL »

Blockdiagrammet förklarar inte för dig vad du skall göra, utan snarare visar alla periferienheter som finns i processorn.
Jag gör så här.
1. Definiera alla HW-signaler, dvs hur många uartar, behöver jag PMP, hur många 12C, hur många SPI osv.
2. letar reda på de processorer som uppfyller dessa behöv.
3. Skapar ett kalkylblad för var och en av dessa processorer. I dessa kalkylblad fyller jag i cell för cell de olika funktionerna varje pinne har
därefter börjar pussla in de olika HW-signalerna jag vill ha i dessa kalkylark, det blir ett jäkla pusslande oftast, därför att processorerna har inte ben för alla funktioner, utan man får välja funktion för varje pinne eller uppsättning pinnar, och eftersom vissa periferienheter utesluter andra, så får man flytta om sina signaler tills dess att man fått ut dem och är nöjd.
Bifogar hur det kan se ut.
Därefter väljer jag processor.
Signalerna/HW-pinnarna får namn vilket motsvarar dess funktion, dessa namn används överallt i programmet och i schema/Layout.

När processorn är vald, får man läsa igenom hur man skall konfigurera pinnarna och använda korrekta port-makron som kompilatortillverkaren tillhandahåller.
Då skapar jag ett HAL, där alla pinnar definieras med mina namn och de funktioner jag vill ha.

Kod: Markera allt

PORTClearBits(IOPORT_E, BIT_0 | BIT_1 | BIT_2 | BIT_3 | BIT_4 | BIT_5 | BIT_6 | BIT_7);
	PORTClearBits(IOPORT_G, BIT_0 | BIT_1);
	PORTClearBits(IOPORT_F, BIT_0 | BIT_1);
	PORTClearBits(IOPORT_D, BIT_6 | BIT_7 | BIT_12 | BIT_13);
	PORTSetBits(IOPORT_D, BIT_4 | BIT_5);

	PORTSetPinsDigitalOut(IOPORT_E, BIT_0 | BIT_1 | BIT_2 | BIT_3 | BIT_4 | BIT_5 | BIT_6 | BIT_7);
	PORTSetPinsDigitalOut(IOPORT_G, BIT_0 | BIT_1);
	PORTSetPinsDigitalOut(IOPORT_F, BIT_0 | BIT_1);
	PORTSetPinsDigitalOut(IOPORT_D, BIT_4 | BIT_5 | BIT_6 | BIT_7 | BIT_12 | BIT_13);

Kod: Markera allt

#define	GLCD_RS_PORT		IOPORT_G			// ACBUS_LCD_RS
		#define	GLCD_RS_MASK		BIT_15			// 1
	
		// Reset	RC1
		#define	GLCD_RESET_PORT	IOPORT_C		// ACBUS_LCD_RES	
		#define	GLCD_RESET_MASK	BIT_1			// 6
	
		// Power	RB11
		#define	GLCD_PWR_PORT		IOPORT_B			// ACBUS_LCD_ON
		#define	GLCD_PWR_MASK		BIT_11	 		// 35
	
		// CS		RB5
		#define	GLCD_CS_PORT		IOPORT_B			// ACBUS_LCD_CS
		#define	GLCD_CS_MASK		BIT_5				// 20
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
DanielM
Inlägg: 2223
Blev medlem: 5 september 2019, 14:19:58

Re: Är det samma metodik att programmera olika processorer?

Inlägg av DanielM »

Jag har redan bestämt mig vilken 8bit processor jag ska använda. En ATMega328p. Mest bara för att jag har en sådan hemma. Jag har även en Arduino som jag kan använda som ISP. Mjukvaran får bli Microchip Studio.

Där efter så tittar jag på massa färdiga exempel som är givna av tillverkaren själv. Detta är det enda sättet jag skulle få en ATMega att fungera för mig: Titta på hur andra gör, och gör likadant själv. Nu har Microchip väldigt fina manualer som beskriver exempel. Inte som ST som verkar totalt skita i pedagogik. Dom tvingar sina användare att använda CubeMX.

https://www.microchip.com/en-us/product/atmega328pb
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 45502
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Är det samma metodik att programmera olika processorer?

Inlägg av TomasL »

Dom tvingar sina användare att använda CubeMX
Microchip har tyvärr vandrat den vägen också, till viss del, med MPLABX och Harmony.
Användarvisningsbild
Klas-Kenny
Inlägg: 11375
Blev medlem: 17 maj 2010, 19:06:14
Ort: Växjö/Alvesta

Re: Är det samma metodik att programmera olika processorer?

Inlägg av Klas-Kenny »

TomasL skrev: 19 februari 2024, 21:29:46 Börja med grundläggande digitalteknik, lär dig hur grindar mm fungerar, gå sedan vidare och lär dig hur en ALU fungerar.......
Sedan när du har lärt dig detta, så tanka ned ett datablad på en lämplig processor, kanske en 6800/6502 eller liknande och studera detta datablad tills du kan det utantill, därefter kan du börja avancera upp i periferienheter och arkitektur.
Det finns inga genvägar, man måste lära sig från början.
Nåja, nu tar du nog i lite.

Grundläggande digitalteknik, absolut bra till mycket.
Men att man måste sätta sig in i och hur en processor fungerar i detalj, på grindnivå, nja.
Jag har i alla fall klarat mig bra utan det under mina snart 8 år som yrkesverksam (och ett antal år som hobbyist och student innan dess), och har ritat kretskort för- och programmerat allt från 8 bit PIC till ARM64 4x1200MHz (inte bare-metal på den senare, såklart).

Lite assembler kan väl vara bra att knacka i något läge, för att få känsla för hur en CPU jobbar och för att plocka fram den dagen det behövs pga. prestanda i någon liten del av ett program. Men förstå hela CPU'n på grindnivå? Knappast nödvändigt för de flesta.
ASEA
Inlägg: 678
Blev medlem: 11 januari 2015, 14:07:27

Re: Är det samma metodik att programmera olika processorer?

Inlägg av ASEA »

Som jag förstår det så förstår TS hur grindar och sånt funkar och också high-level programmering, men behöver fylla i med kunskap däremellan.

Gamla 8-bits processorer typ Z80, 6800, 6502 är bra för att lära ut "the inner workings" av en processor, vilket man har nytta av för att förstå de "diagram" TS vill förstå.
Detta är ju några steg över grindnivå så att säga.

Det betyder inte att man handgripligen och hårdvarumässigt måste experimentera med dem (om man inte vill).
Det räcker med att ladda ner lite gamla böcker och läsa på hur de fungerar i teorin och även gärna dess periferikretsar.
Idag är mycket av denna kunskap lättillgänglig och gratis via internet.

I en µC är allt detta inbakat i en enda kapsel kan man säga lite förenklat, cpu + minne + periferikretsar.

Sen blir steget till att förstå tex hur en ATMega 328p fungerar internt betydligt mindre, vilket är ett bra andrasteg i processen( eller Attiny85 som är ännu enklare).
Även gamla PIC12F629 eller 675 som både är enkla och billiga och med massvis av kodexempel online kan var bra att börja med.

Inget av ovan är kanske speciellt modernt, men bra steg i lärprocessen, det är så man får se det.

Ska man förstå hur en bilmotor fungerar på grundnivå så börjar man ju inte med senaste hightech tekniken utan man börjar nånstans i historien/utvecklingen där det är vettigt och enkelt att börja förstå.
janno
Inlägg: 405
Blev medlem: 11 oktober 2009, 07:34:45
Ort: Västerås

Re: Är det samma metodik att programmera olika processorer?

Inlägg av janno »

DanielM
Inlägg: 2223
Blev medlem: 5 september 2019, 14:19:58

Re: Är det samma metodik att programmera olika processorer?

Inlägg av DanielM »

TomasL skrev: 19 februari 2024, 23:18:15
Dom tvingar sina användare att använda CubeMX
Microchip har tyvärr vandrat den vägen också, till viss del, med MPLABX och Harmony.
Det finns ju en förklaring också varför det blir så. Jag såg att man kunde använda MPLAB X med ATMega. Finns det någon anledning att använda Microchip Studio då?
https://onlinedocs.microchip.com/pr/GUI ... CBD35EB2BD

När jag tittar på denna manual så kan jag se likheterna mellan ARM och AVR. Men skillnaden mellan ARM och AVR är att med ARM så deklarerar man så mycket mer. Men metodiken för att aktivera en pinne till hög, verkar vara exakt det samma.

Man anropar PORT och sedan sätter PIN hög.

Om jag tittar på vad Microchip erbjuder för utbildningsmaterial så verkar det ändå vara välgjort, trots sin ålder.
https://developerhelp.microchip.com/xwi ... g-started/
Senast redigerad av DanielM 20 februari 2024, 08:30:40, redigerad totalt 1 gång.
DanielM
Inlägg: 2223
Blev medlem: 5 september 2019, 14:19:58

Re: Är det samma metodik att programmera olika processorer?

Inlägg av DanielM »

Jag har fått höra att en fördel med AVR som inte PIC har är att AVR så är det 1 instruktion per clockcykel, vilket gör AVR mer lämplig för säkerhetskritiska system.
Användarvisningsbild
ojz0r
Inlägg: 249
Blev medlem: 14 september 2007, 19:38:04
Ort: Växjö

Re: Är det samma metodik att programmera olika processorer?

Inlägg av ojz0r »

Alla instruktioner är inte en cykel, vissa utvalda är det. Tror att det står definerat i manualerna - de är i mitt tycke välskrivna och relativt enkla att hitta i.
Skriv svar