ATmega168 vs ATtiny
Re: Atmega168 vs attiny
Nja, Atmel har båda storlekarna på SOIC. 0.150" och 0.200"
Atmel om attiny45:
soic-8 : "0.150" Wide Body", 4.9 x 6.0 mm, yta = 29 mm2
dip-8: 0.300" Wide Body, 9.3 x 7.9 mm, yta = 73.5 mm2
så visst är det skillnad. ghost_rider: Har du programmerat någon AVR någon gång? Assembler eller C?
Har du gjort programmet till ATMega168:an som du vill byta ut?
Atmel om attiny45:
soic-8 : "0.150" Wide Body", 4.9 x 6.0 mm, yta = 29 mm2
dip-8: 0.300" Wide Body, 9.3 x 7.9 mm, yta = 73.5 mm2
så visst är det skillnad. ghost_rider: Har du programmerat någon AVR någon gång? Assembler eller C?
Har du gjort programmet till ATMega168:an som du vill byta ut?
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
- ghost_rider
- Inlägg: 2211
- Blev medlem: 26 maj 2008, 21:48:15
- Ort: Genarp
Re: Atmega168 vs attiny
Hm, nu börjar det finnas lite att välja på
jap, koden som liggger där nu har jag knåpat ihop. Altså själva programmet, bootloadern laddade jag ner och tryckte in utan att titta något närmare på.

jap, koden som liggger där nu har jag knåpat ihop. Altså själva programmet, bootloadern laddade jag ner och tryckte in utan att titta något närmare på.
Re: Atmega168 vs attiny
OK. Då är det intressanta hur du modifierar koden för att passa t.ex en attiny45.
De mest konkreta skillnaderna är att du kanske måste använda andra i/O-pinnar. Du får planera vilka pinnar som ska vara till vad. Bäst är att först kolla vilka pinnar som "finns", och kolla vilka specialfunktioner som de ska ha. I det här fallet är det bara en pinne som är unik, och det är pwm-utgången. Då kollar vi på en bild på attiny45:

Jag antar att man kan använda #oc1b,oc1b eller oc0a som pwm-utgång.
Om du väljer oc0a (dvs använder timer0 som pwm-generator) är alltså pin5 = pwm-utgång.
Övriga pinnar som gpio (allmänna in/ut) är då PB1,PB2,PB3 och PB4.
Om du behöver ytterligare en pinne måste du ta resetpinnen och programmera om den så den blir en PB5. Problemet är att du inte kan programmera kretsen efter att denna ändring gjorts, så då måste programmet vara klart.
Skulle inte antalet pinnar räcka så finns t.ex. attiny44 (uppe till vänster på bilden ovan) med 14 pinnar. Fast om den har pwm utgång vet jag inte (men jag antar det). Annars är en mega48 tqfp32 inte mycket större än en attiny45 fast den har 32 pinnar. Den är också lätt att löda för hand. En lupp kan vara bra att ha.

Bootloader kan vara svårt att få in i en attiny (de har inte ens UART/USART). Programmeringspinnarna måste kunna samsas med in/ut. Programmeraren behöver ju MOSI,MISO,SCK och RESET.
De mest konkreta skillnaderna är att du kanske måste använda andra i/O-pinnar. Du får planera vilka pinnar som ska vara till vad. Bäst är att först kolla vilka pinnar som "finns", och kolla vilka specialfunktioner som de ska ha. I det här fallet är det bara en pinne som är unik, och det är pwm-utgången. Då kollar vi på en bild på attiny45:

Jag antar att man kan använda #oc1b,oc1b eller oc0a som pwm-utgång.
Om du väljer oc0a (dvs använder timer0 som pwm-generator) är alltså pin5 = pwm-utgång.
Övriga pinnar som gpio (allmänna in/ut) är då PB1,PB2,PB3 och PB4.
Om du behöver ytterligare en pinne måste du ta resetpinnen och programmera om den så den blir en PB5. Problemet är att du inte kan programmera kretsen efter att denna ändring gjorts, så då måste programmet vara klart.
Skulle inte antalet pinnar räcka så finns t.ex. attiny44 (uppe till vänster på bilden ovan) med 14 pinnar. Fast om den har pwm utgång vet jag inte (men jag antar det). Annars är en mega48 tqfp32 inte mycket större än en attiny45 fast den har 32 pinnar. Den är också lätt att löda för hand. En lupp kan vara bra att ha.

Bootloader kan vara svårt att få in i en attiny (de har inte ens UART/USART). Programmeringspinnarna måste kunna samsas med in/ut. Programmeraren behöver ju MOSI,MISO,SCK och RESET.
Re: Atmega168 vs attiny
Ett annat problem med bootloader på ATtiny är att det inte finns hårdvarustöd för bootloader. Det går varken att skydda minnet som bootloadern håller till i, och inte att "context-switcha" mellan bootloader och vanlig kod. Därför finns det få bootloaders till ATtiny.
- ghost_rider
- Inlägg: 2211
- Blev medlem: 26 maj 2008, 21:48:15
- Ort: Genarp
Re: Atmega168 vs attiny
kanske en dum fråga, men är bootloadern nödvändig ?
Sitter och funderar på om man skulle köpa nån attiny44 o testa lite.
Men efter lite googling så verkar det som att det finns betydligt mindre 'dokumentation' dvs personliga inlägg om t.ex kodsnuttar och liknade om man jämnför med attmega168 .
Sitter och funderar på om man skulle köpa nån attiny44 o testa lite.
Men efter lite googling så verkar det som att det finns betydligt mindre 'dokumentation' dvs personliga inlägg om t.ex kodsnuttar och liknade om man jämnför med attmega168 .
Re: Atmega168 vs attiny
Nej, den är inte nödvändig. Jag uppfattade det som att ett krav att använda bootloader.
- ghost_rider
- Inlägg: 2211
- Blev medlem: 26 maj 2008, 21:48:15
- Ort: Genarp
Re: Atmega168 vs attiny
nä om det går att lösa utan så.
Jag har som sagt bara kört med arduino, för att sedan gå över till atmega168:an o fick då lära mig att bootloadern var ett måste. Men vad den exakt gör vet jag helt ärligt inte
Jag har som sagt bara kört med arduino, för att sedan gå över till atmega168:an o fick då lära mig att bootloadern var ett måste. Men vad den exakt gör vet jag helt ärligt inte

Re: Atmega168 vs attiny
Arduino använder en bootloader för att föra över koden via USART. Men jag har för mig att det går att föra över koden via ICSP också, för kompilatorn ger väl en vanlig HEX-fil?
Kan Arduino-kompilatorn kompilera kod som går att köra på en ATtiny?
Kan Arduino-kompilatorn kompilera kod som går att köra på en ATtiny?
- ghost_rider
- Inlägg: 2211
- Blev medlem: 26 maj 2008, 21:48:15
- Ort: Genarp
Re: Atmega168 vs attiny
ah ok.
Arduino komp. verkar bara kunna kompilera kod till Atmega familjen
Arduino komp. verkar bara kunna kompilera kod till Atmega familjen
Re: Atmega168 vs attiny
Ifall du googlar lite kan du nog hitta info om Arduino på Attiny. Jag hittade den här:
http://hlt.media.mit.edu/wiki/pmwiki.ph ... ATtiny4585
EDIT: jag hade inte läst så noga på den där länken. Det verkar som att den mest handlar om programmeringshårdvaran. Men det framgår också att man kan lägga en arduino "sketch" på en ATtiny, så då måste det ju även gått att kompilera.
http://hlt.media.mit.edu/wiki/pmwiki.ph ... ATtiny4585
EDIT: jag hade inte läst så noga på den där länken. Det verkar som att den mest handlar om programmeringshårdvaran. Men det framgår också att man kan lägga en arduino "sketch" på en ATtiny, så då måste det ju även gått att kompilera.
Senast redigerad av bearing 18 mars 2011, 23:09:05, redigerad totalt 1 gång.
Re: Atmega168 vs attiny
Jag förstår inte vad du upplever vara problemet? AVR-processorerna är såpass lika att det är ingen skillnad på koden i stort sett. Har du programmerat en atmega så kan du programmera en attiny. Och jag antar att du programmerat i C ?
Små skillnader kan vara att namn på olika perifera register kan vara lite annorlunda, enstaka assembler-instruktioner kan saknas i tiny (t.ex. mul) men 99% är ju samma sak. Troligtvis kan du använda exakt samma program, bara du ändrar nån bokstav här och där...
Om du vill ha mer specifik information om vad som skiljer som är relevant för ditt program, så berätta vilka enheter du använder (timer / interrupt / I/O annat?) så ska du se att alltsammans är nästan identiskt.
Vad so förvånar mig är hur du har kunnat programmera mega68? Hur fick du information om den kretsen? Det är väl bara att läsa samma saker om tiny, så är det klart.
Istället för att googla så föreslår jag att du läser databladet för den tiny du valt att titta närmare på. Där står alla detaljer, och det är ju nödvändigt att läsa om du ska kunna programmera.
datablad, attiny44
Små skillnader kan vara att namn på olika perifera register kan vara lite annorlunda, enstaka assembler-instruktioner kan saknas i tiny (t.ex. mul) men 99% är ju samma sak. Troligtvis kan du använda exakt samma program, bara du ändrar nån bokstav här och där...
Om du vill ha mer specifik information om vad som skiljer som är relevant för ditt program, så berätta vilka enheter du använder (timer / interrupt / I/O annat?) så ska du se att alltsammans är nästan identiskt.
Vad so förvånar mig är hur du har kunnat programmera mega68? Hur fick du information om den kretsen? Det är väl bara att läsa samma saker om tiny, så är det klart.
Istället för att googla så föreslår jag att du läser databladet för den tiny du valt att titta närmare på. Där står alla detaljer, och det är ju nödvändigt att läsa om du ska kunna programmera.
datablad, attiny44
Re: Atmega168 vs attiny
Alltså, det är kompilatorstödet jag pratar om här. Eftersom att ATmega och ATtiny inte har samma instruktionsuppsättning tror jag inte att kod som är kompilerad för ATmega går att köra på en ATtiny. Men det verkar ju som att det ska kunna gå att kompilera Arduino-kod för ATtiny på något sätt, fast kanske inte just med den miljö som han använder.
Re: Atmega168 vs attiny
Eftersom att du i avslutningen skrev "istället för att googla" så verkade det som att inlägget även var ett svar på mitt inlägg om att googla, vilket handlade om kompilatorstöd.
Re: Atmega168 vs attiny
hehe... nej, jag syftade på denna:
Men efter lite googling så verkar det som att det finns betydligt mindre 'dokumentation' dvs personliga inlägg om t.ex kodsnuttar och liknade om man jämnför med attmega168 .