Tiny project voor Attiny13; "My first Code"
Moderators: Barry2001, Beheerdersteam
Re: Tiny project voor Attiny13; "My first Code"
Neem aan dat je in C programmeert? Is dan een kwestie van je make file configureren zodat ie hex code genereert op een bepaald start adres. Hier is Knuis bekender mee denk ik.
Zelf programmeer ik uitsluitend in assembler met de (gratis) IAR assembler compiler en dan heb je alles zelf in de hand. Is wel meer werk maar zo prop je wel 2 a 4 keer zoveel in zo'n kleintje dan in C.
Zelf programmeer ik uitsluitend in assembler met de (gratis) IAR assembler compiler en dan heb je alles zelf in de hand. Is wel meer werk maar zo prop je wel 2 a 4 keer zoveel in zo'n kleintje dan in C.
Re: Tiny project voor Attiny13; "My first Code"
Ga er voor het gemak vanuit dat ik enkel Arduino kennis heb en geen andere software dan de Arduino IDE, wat is dan een goede route om te volgen? Ik hoopte er op dat ik in een programma wat C kon typen, aangeven dat het voor een tiny13A is en dat hij er dan een hex uit spuwt die ik met avrdude kon uploaden.Pjotr schreef:Neem aan dat je in C programmeert? Is dan een kwestie van je make file configureren zodat ie hex code genereert op een bepaald start adres. Hier is Knuis bekender mee denk ik.
Zelf programmeer ik uitsluitend in assembler met de (gratis) IAR assembler compiler en dan heb je alles zelf in de hand. Is wel meer werk maar zo prop je wel 2 a 4 keer zoveel in zo'n kleintje dan in C.
Re: Tiny project voor Attiny13; "My first Code"
Denk dat je dan beter Knuisje even wakker kan schudden
Overigens als je Googelt op "Programming AVR in C" of zo, kom je ook heel veel handleidingen en tutorials tegen.
Overigens als je Googelt op "Programming AVR in C" of zo, kom je ook heel veel handleidingen en tutorials tegen.
Re: Tiny project voor Attiny13; "My first Code"
AVR studio of de combinatie notepad++/winavr/externe programmer is de meest voordehand liggende, gratis en goed gedocumenteerd op het internet.
Onder de betalende varianten heb je nog IAR en codevision. ( en waarschijnlijk nog 10 anderen .. )
Maar je zal snel merken dan deze stap een vrij grote is, en je effektief zal moeten leren datasheets te lezen en te begrijpen zowel voor de fusebits als voor delen van de code voor timers/interrupts/uarts/ADC's ...
mvg Rudy
Onder de betalende varianten heb je nog IAR en codevision. ( en waarschijnlijk nog 10 anderen .. )
Maar je zal snel merken dan deze stap een vrij grote is, en je effektief zal moeten leren datasheets te lezen en te begrijpen zowel voor de fusebits als voor delen van de code voor timers/interrupts/uarts/ADC's ...
mvg Rudy
Re: Tiny project voor Attiny13; "My first Code"
Een heel aardig boek om daarin thuis te raken met goede hands-on oefeningen is dat van Joe Pardue:
http://www.pdfbook.co.ke/details.php?ti ... &popular=7
Moet je alleen nog zo'n AVR Butterfly bordje zien te regelen (Alcom Electronics). Of hier bestellen:
https://store-jwm4nhbo.mybigcommerce.com/butterfly-1/
http://nl.mouser.com/ProductDetail/Atme ... Ik74aEQ%3d
http://www.pdfbook.co.ke/details.php?ti ... &popular=7
Moet je alleen nog zo'n AVR Butterfly bordje zien te regelen (Alcom Electronics). Of hier bestellen:
https://store-jwm4nhbo.mybigcommerce.com/butterfly-1/
http://nl.mouser.com/ProductDetail/Atme ... Ik74aEQ%3d
Re: Tiny project voor Attiny13; "My first Code"
Ik heb net een officiële AVR Dragon aangeschaft. Dan doe ik alles via de door Atmel geadviseerde manier in AVR Studio. Misschien zijn er betere/goedkopere methodes, maar er zijn goede AVR studio tuts, dus ik kies die weg.
Re: Tiny project voor Attiny13; "My first Code"
Zow, maar gelijk in het diepe gesprongen en dan maar zien of je zwemmen kunt?SuperR schreef:Ik heb net een officiële AVR Dragon aangeschaft. Dan doe ik alles via de door Atmel geadviseerde manier in AVR Studio. Misschien zijn er betere/goedkopere methodes, maar er zijn goede AVR studio tuts, dus ik kies die weg.
Dat kan natuurlijk ook. Mooie van die Dragon is is dat je gelijk een goede programmer hebt
Re: Tiny project voor Attiny13; "My first Code"
Dat is die verschrikkelijke combo; lunchen met witte wijn, conrad en ideal....Pjotr schreef:Zow, maar gelijk in het diepe gesprongen en dan maar zien of je zwemmen kunt?SuperR schreef:Ik heb net een officiële AVR Dragon aangeschaft. Dan doe ik alles via de door Atmel geadviseerde manier in AVR Studio. Misschien zijn er betere/goedkopere methodes, maar er zijn goede AVR studio tuts, dus ik kies die weg.![]()
Re: Tiny project voor Attiny13; "My first Code"
Dat van Conrad snap ik niet zo, dat van die witte wijn weer wel 
Psst: http://forum.zelfbouwaudio.nl/viewtopic ... avr+dragon
Psst: http://forum.zelfbouwaudio.nl/viewtopic ... avr+dragon
Re: Tiny project voor Attiny13; "My first Code"
Je "heb hem zelf ook" 
Ik ben bang dat als ik met mijn huidige avrdude/winavr/usbinyisp-gebeuren doorga, ik meer frustratie heb van het draaiende krijgen van een goede methode, dan met het leren van de code zelf. Iemand interesse in een USBtinyISP?
Ik ben bang dat als ik met mijn huidige avrdude/winavr/usbinyisp-gebeuren doorga, ik meer frustratie heb van het draaiende krijgen van een goede methode, dan met het leren van de code zelf. Iemand interesse in een USBtinyISP?
Re: Tiny project voor Attiny13; "My first Code"
Ik bouw meestal een prototype van de schakeling op gaatjesprint zoals hier. Ook met de AF-DAC 2 heb ik zo'n protoype gemaakt. Ik gebruikte vroeger Bascom als programmeertaal. Dit is vrij laagdrempelig en daarmee heb ik de beginselen geleerd van de AVR microcontrollers.
Bij het ontwikkelen van de AF-DAC 2 ben ik overgestapt op C en AVR Studio omdat dit volledige vrijheid geeft over de microcontroller. Ik heb een leerboek voor C gekocht en verder veel tutorials en programmavoorbeelden doorgenomen. Op http://www.mikrocontroller.net zijn veel handige routines te vinden.
Ik gebruik een eenvoudige USB-ASP programmer van 5 euro op Ebay.
Bij het ontwikkelen van de AF-DAC 2 ben ik overgestapt op C en AVR Studio omdat dit volledige vrijheid geeft over de microcontroller. Ik heb een leerboek voor C gekocht en verder veel tutorials en programmavoorbeelden doorgenomen. Op http://www.mikrocontroller.net zijn veel handige routines te vinden.
Ik gebruik een eenvoudige USB-ASP programmer van 5 euro op Ebay.
Re: Tiny project voor Attiny13; "My first Code"
Welk boek heb je daarvoor gekocht? Een specifiek boek voor AVR Studio of C in het algemeen?knuisje schreef:Bij het ontwikkelen van de AF-DAC 2 ben ik overgestapt op C en AVR Studio omdat dit volledige vrijheid geeft over de microcontroller. Ik heb een leerboek voor C gekocht en verder veel tutorials en programmavoorbeelden doorgenomen. Op http://www.mikrocontroller.net zijn veel handige routines te vinden.
Re: Tiny project voor Attiny13; "My first Code"
Ik heb het standaard C boek gekocht: http://www.amazon.co.uk/dp/0131103628
Atmel Studio is niet zo ingewikkeld. Er zijn tutorials te googlen op het net en youtube.
Atmel Studio is niet zo ingewikkeld. Er zijn tutorials te googlen op het net en youtube.
Re: Tiny project voor Attiny13; "My first Code"
Yup, alleen gebruik ik hem niet veel meer. Wat ik nog programmeer is in assembler code en dan heb je geen debuggers enzo nodig (ik temninste nietSuperR schreef:Je "heb hem zelf ook"
............
Net als Knuis implementeer ik een AVR direct in de toepassing en (her)programmeer hem dan via ISP.
Re: Tiny project voor Attiny13; "My first Code"
De "Dragon" heeft zich even flink uitgesloofd en een "blink" geüpload.
CODE: Selecteer alles
#include <avr/io.h>
#define F_CPU 1000000UL
#include <util/delay.h>
int main(void) {
DDRB |= ( 1 << 4 );
while (1) {
PORTB &= ~(1 << 4 );
_delay_ms(1000);
PORTB |= ( 1 << 4 );
_delay_ms(1000);
}
return 0;
}Re: Tiny project voor Attiny13; "My first Code"
Goed, nu de AVR Dragon lijkt te werken kan ik eens kijken naar een looplichtje. Aangezien ik het wiel niet opnieuw ga uitvinden ga ik dit schema eens tekenen;
http://nootropicdesign.com/projectlab/w ... ematic.png
http://nootropicdesign.com/projectlab/w ... ematic.png
Re: Tiny project voor Attiny13; "My first Code"
Kijk 's hoe je de LED laat knipperen in machinetaal.Geen "include" dus zelf doen.Simpel intekken in Notepad of in P(rogammers)N(otepad) ,zit meen ik in AVR Studio.Noem het gewrocht blabla.asm en klik op assemble.Tenzij foutmelding(en) spuwt ie dan blabla.lst (zelfde met de machinecodes erbij) en blabla.hex voor de µC uit.
Heb een handleiding en instruktieset toegevoegd.Omdat niet elke µC alle instrukties kent (in datablad te zien) is de .DEVICE in het begin.
Anne
Heb een handleiding en instruktieset toegevoegd.Omdat niet elke µC alle instrukties kent (in datablad te zien) is de .DEVICE in het begin.
Anne
- Bijlagen
-
- Knip.zip
- (1.4 MiB) 69 keer gedownload
Re: Tiny project voor Attiny13; "My first Code"
Ha die Anne,
In assembler programmeren is weliswaar een kunst maar toch niet meer van deze tijd. Dat doe je alleen nog in geval van nood, als het echt zo snel mogelijk moet of echt compacte code moet zijn wegens Flash ruimtegebrek. Voor kleine dingetjes kan het prima. maar wordt het wat complexer is programmeren in C echt veel handiger, overzichtelijker en vooral sneller.
In assembler programmeren is weliswaar een kunst maar toch niet meer van deze tijd. Dat doe je alleen nog in geval van nood, als het echt zo snel mogelijk moet of echt compacte code moet zijn wegens Flash ruimtegebrek. Voor kleine dingetjes kan het prima. maar wordt het wat complexer is programmeren in C echt veel handiger, overzichtelijker en vooral sneller.
Re: Tiny project voor Attiny13; "My first Code"
Phew, gelukkig maar, want de stap van arduino's "SPIwrite" "Shiftout" en "digitalwrite" naar C is al groot genoeg.Pjotr schreef:In assembler programmeren is weliswaar een kunst maar toch niet meer van deze tijd. Dat doe je alleen nog in geval van nood, als het echt zo snel mogelijk moet of echt compacte code moet zijn wegens Flash ruimtegebrek.
Re: Tiny project voor Attiny13; "My first Code"
Boeh
ik ben niet meer van deze tijd.Meer van het 8080 en Z80 tijdperk
.
Ik heb een hekel aan dat ge"include",prog.stukken van anderen en meestal veel groter (en soms trager) dan nodig,wegens het universeel inzetbare.En je ziet niet wat ie eigenlijk doet.
En dan nog in C,wee u al je er een sommetje inzet,voor je 't weet krijg je een heel pak "float" aan je been(prog.)
@SuperR,ik zie dat je 1MHz opgeeft als µC-frequentie.Bij de tiny13A is dat 1,2MHz met de fuses onveranderd.
Anne
Ik heb een hekel aan dat ge"include",prog.stukken van anderen en meestal veel groter (en soms trager) dan nodig,wegens het universeel inzetbare.En je ziet niet wat ie eigenlijk doet.
En dan nog in C,wee u al je er een sommetje inzet,voor je 't weet krijg je een heel pak "float" aan je been(prog.)
@SuperR,ik zie dat je 1MHz opgeeft als µC-frequentie.Bij de tiny13A is dat 1,2MHz met de fuses onveranderd.
Anne
Re: Tiny project voor Attiny13; "My first Code"
Zodra ik een functie kan schrijven waarmee ik eenvoudiger dingen kan uitvoeren, ga ik die meteen gebruiken. Dat machinetaal is natuurlijk heel mooi en elementair, maar echt overzichtelijk wordt het er (voor mij) niet van.Ah!buis schreef:Boehik ben niet meer van deze tijd.Meer van het 8080 en Z80 tijdperk
.
Ik heb een hekel aan dat ge"include",prog.stukken van anderen en meestal veel groter (en soms trager) dan nodig,wegens het universeel inzetbare.
@SuperR,ik zie dat je 1MHz opgeeft als µC-frequentie.Bij de tiny13A is dat 1,2MHz met de fuses onveranderd.
Dat van die 1 of 1,2 MHz kan prima kloppen. Ik wilde gewoon dat hij iets deed om te kijken of de de programmer en de ISP header werkte. Net even het PCB'tje geetst van een proto-looplicht. Ik denk dat ik net een record jumpers/cm^2 heb verbroken; 14 op een printje van 3.5cm*7.5cm.
Re: Tiny project voor Attiny13; "My first Code"
Draadbruggen en/of niet-intuïtieve code vervangen door beter leesbare varianten?
Dit is vloeken in de AVR kerk?
Dit is vloeken in de AVR kerk?
CODE: Selecteer alles
int set_PORTB_bit(int position, int value)
{
// Sets or clears the bit in position 'position'
// either high or low (1 or 0) to match 'value'.
// Leaves all other bits in PORTB unchanged.
if (value == 0)
{
PORTB &= ~(1 << position); // Set bit # 'position' low
}
else
{
PORTB |= (1 << position); // Set bit # 'position' high
}
return 1;
}Re: Tiny project voor Attiny13; "My first Code"
Ik wilde even het shift-programma testen. Het schema heb ik van een paar berichten hierboven en heb ik naar mijn weten goed overgenomen. OutputEnable de gnd en MasterReset aan VCC. De code bouwen gaat goed, uploaden gaat ook goed en verifiëren bevestigt dat de code overeenkomt. Maar, "hij doet niks...". Bij het programmeren flikkeren de ledjes en als de code is geüpload gaan alle leds aan en that's it. Fout in code of hardware, roept u maar
CODE: Selecteer alles
/*
* ATtiny13 driving two 74HC595 shift registers
*
* Randomly turns on/off output pins of the shift
* register ICs.
* A random number of outputs are set high, then
* a random time delay occurs. Then the cycle
* repeats.
*
*/
#define F_CPU 1200000UL
#include <stdlib.h>
#include <avr/io.h>
#include <util/delay.h>
#define DATA PB0
#define CLOCK PB1
#define LATCH PB2
int main(void) {
int d;
char n;
char i;
// set DATA, LATCH and CLOCK pins to OUTPUT
DDRB |= (1 << DATA);
DDRB |= (1 << LATCH);
DDRB |= (1 << CLOCK);
PORTB = 0;
while(1) {
// choose number of LEDs to light up.
// n will be between 4 and 16
n = 4 + (random() % 13);
for(i=0;i<15;i++) {
// for each LED, probability of it being lit
// is n/15
if ((random() % 15) <= n) {
PORTB |= (1 << DATA); // set DATA pin high
} else {
PORTB &= ~(1 << DATA); // set DATA pin low
}
// toggle shift register clock pin
PORTB |= (1 << CLOCK);
_delay_ms(2);
PORTB &= ~(1 << CLOCK);
}
// once we've shifted out all 15 values, toggle
// the latch pin.
PORTB |= (1 << LATCH);
_delay_ms(2);
PORTB &= ~(1 << LATCH);
// delay random amount of time between
// 100ms and 500ms
d = 100 + (random() % 400);
for(i=0;i<d;i++) {
// _delay_ms function must be called with a
// constant value, not a variable!
_delay_ms(1);
}
}
return 0; // not reached
}Re: Tiny project voor Attiny13; "My first Code"
Voor zover mijn C-kennis reikt,ken de juiste tekens/formulering niet goed,zou dat wel werken.Behalve dan als die random niet doet wat ie moet.
Iets anders is de schakeling.Met een 74HC is 't in orde,maar er staat 74LS dan zijn er wat verschillen.Niet op logisch wel op elektrisch gebied.Pin 10 zit zo aan Vcc,daar houdt hij niet van,zou een weerstand (mag gezamelijk voor de twee)van 1k tussen moeten.
De uitgangen van een 74LS hebben weinig fut om naar Vcc te trekken,wel naar massa.Dus de LED's+weerstand naar Vcc ipv naar massa (LED wel omdraaien).
Anne
Iets anders is de schakeling.Met een 74HC is 't in orde,maar er staat 74LS dan zijn er wat verschillen.Niet op logisch wel op elektrisch gebied.Pin 10 zit zo aan Vcc,daar houdt hij niet van,zou een weerstand (mag gezamelijk voor de twee)van 1k tussen moeten.
De uitgangen van een 74LS hebben weinig fut om naar Vcc te trekken,wel naar massa.Dus de LED's+weerstand naar Vcc ipv naar massa (LED wel omdraaien).
Anne
