Tiny project voor Attiny13; "My first Code"

De rest......
(streaming-/computeraudio graag in de daarvoor aangewezen forumgroep)

Moderators: Barry2001, Beheerdersteam

Gebruikersavatar
Pjotr
Berichten: 36772
Lid geworden op: do 26 aug 2004, 18:34
Locatie: bollenstreek

Re: Tiny project voor Attiny13; "My first Code"

Bericht door Pjotr »

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.
SuperR
Berichten: 1864
Lid geworden op: zo 30 aug 2009, 22:35
Locatie: Rotterdam

Re: Tiny project voor Attiny13; "My first Code"

Bericht door SuperR »

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.
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.
Gebruikersavatar
Pjotr
Berichten: 36772
Lid geworden op: do 26 aug 2004, 18:34
Locatie: bollenstreek

Re: Tiny project voor Attiny13; "My first Code"

Bericht door Pjotr »

Denk dat je dan beter Knuisje even wakker kan schudden :D

Overigens als je Googelt op "Programming AVR in C" of zo, kom je ook heel veel handleidingen en tutorials tegen.
Rudy
Berichten: 1526
Lid geworden op: ma 29 nov 2004, 12:59
Locatie: Belgie

Re: Tiny project voor Attiny13; "My first Code"

Bericht door Rudy »

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
Gebruikersavatar
Pjotr
Berichten: 36772
Lid geworden op: do 26 aug 2004, 18:34
Locatie: bollenstreek

Re: Tiny project voor Attiny13; "My first Code"

Bericht door Pjotr »

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
SuperR
Berichten: 1864
Lid geworden op: zo 30 aug 2009, 22:35
Locatie: Rotterdam

Re: Tiny project voor Attiny13; "My first Code"

Bericht door SuperR »

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.
Gebruikersavatar
Pjotr
Berichten: 36772
Lid geworden op: do 26 aug 2004, 18:34
Locatie: bollenstreek

Re: Tiny project voor Attiny13; "My first Code"

Bericht door Pjotr »

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.
Zow, maar gelijk in het diepe gesprongen en dan maar zien of je zwemmen kunt? :mrgreen:

Dat kan natuurlijk ook. Mooie van die Dragon is is dat je gelijk een goede programmer hebt :D Overigens dat boek wat ik hiervoor aanhaalde legt goed uit hoe je in C de diverse registers instelt.
SuperR
Berichten: 1864
Lid geworden op: zo 30 aug 2009, 22:35
Locatie: Rotterdam

Re: Tiny project voor Attiny13; "My first Code"

Bericht door SuperR »

Pjotr schreef:
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.
Zow, maar gelijk in het diepe gesprongen en dan maar zien of je zwemmen kunt? :mrgreen:
Dat is die verschrikkelijke combo; lunchen met witte wijn, conrad en ideal....
Gebruikersavatar
Pjotr
Berichten: 36772
Lid geworden op: do 26 aug 2004, 18:34
Locatie: bollenstreek

Re: Tiny project voor Attiny13; "My first Code"

Bericht door Pjotr »

Dat van Conrad snap ik niet zo, dat van die witte wijn weer wel :lol:

Psst: http://forum.zelfbouwaudio.nl/viewtopic ... avr+dragon :mrgreen:
SuperR
Berichten: 1864
Lid geworden op: zo 30 aug 2009, 22:35
Locatie: Rotterdam

Re: Tiny project voor Attiny13; "My first Code"

Bericht door SuperR »

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? :)
Gebruikersavatar
knuisje
Berichten: 3690
Lid geworden op: zo 15 apr 2007, 0:07
Locatie: Julianadorp

Re: Tiny project voor Attiny13; "My first Code"

Bericht door knuisje »

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.
SuperR
Berichten: 1864
Lid geworden op: zo 30 aug 2009, 22:35
Locatie: Rotterdam

Re: Tiny project voor Attiny13; "My first Code"

Bericht door SuperR »

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.
Welk boek heb je daarvoor gekocht? Een specifiek boek voor AVR Studio of C in het algemeen?
Gebruikersavatar
knuisje
Berichten: 3690
Lid geworden op: zo 15 apr 2007, 0:07
Locatie: Julianadorp

Re: Tiny project voor Attiny13; "My first Code"

Bericht door knuisje »

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.
Gebruikersavatar
Pjotr
Berichten: 36772
Lid geworden op: do 26 aug 2004, 18:34
Locatie: bollenstreek

Re: Tiny project voor Attiny13; "My first Code"

Bericht door Pjotr »

SuperR schreef:
Je "heb hem zelf ook" :)
............
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 niet :D ). Aan de ISP2 programmer heb ik genoeg.

Net als Knuis implementeer ik een AVR direct in de toepassing en (her)programmeer hem dan via ISP.
SuperR
Berichten: 1864
Lid geworden op: zo 30 aug 2009, 22:35
Locatie: Rotterdam

Re: Tiny project voor Attiny13; "My first Code"

Bericht door SuperR »

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;
}
SuperR
Berichten: 1864
Lid geworden op: zo 30 aug 2009, 22:35
Locatie: Rotterdam

Re: Tiny project voor Attiny13; "My first Code"

Bericht door SuperR »

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
Gebruikersavatar
Ah!buis
Berichten: 16682
Lid geworden op: ma 15 nov 2010, 22:36
Locatie: Overijse

Re: Tiny project voor Attiny13; "My first Code"

Bericht door Ah!buis »

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
Bijlagen
Knip.zip
(1.4 MiB) 69 keer gedownload
Gebruikersavatar
Pjotr
Berichten: 36772
Lid geworden op: do 26 aug 2004, 18:34
Locatie: bollenstreek

Re: Tiny project voor Attiny13; "My first Code"

Bericht door Pjotr »

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.
SuperR
Berichten: 1864
Lid geworden op: zo 30 aug 2009, 22:35
Locatie: Rotterdam

Re: Tiny project voor Attiny13; "My first Code"

Bericht door SuperR »

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.
Phew, gelukkig maar, want de stap van arduino's "SPIwrite" "Shiftout" en "digitalwrite" naar C is al groot genoeg.
Gebruikersavatar
Ah!buis
Berichten: 16682
Lid geworden op: ma 15 nov 2010, 22:36
Locatie: Overijse

Re: Tiny project voor Attiny13; "My first Code"

Bericht door Ah!buis »

Boeh :cry: ik ben niet meer van deze tijd.Meer van het 8080 en Z80 tijdperk :D .
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
SuperR
Berichten: 1864
Lid geworden op: zo 30 aug 2009, 22:35
Locatie: Rotterdam

Re: Tiny project voor Attiny13; "My first Code"

Bericht door SuperR »

Ah!buis schreef:
Boeh :cry: ik ben niet meer van deze tijd.Meer van het 8080 en Z80 tijdperk :D .
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.
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.
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.
Gebruikersavatar
Ah!buis
Berichten: 16682
Lid geworden op: ma 15 nov 2010, 22:36
Locatie: Overijse

Re: Tiny project voor Attiny13; "My first Code"

Bericht door Ah!buis »

Schande :evil:
Anne
SuperR
Berichten: 1864
Lid geworden op: zo 30 aug 2009, 22:35
Locatie: Rotterdam

Re: Tiny project voor Attiny13; "My first Code"

Bericht door SuperR »

Draadbruggen en/of niet-intuïtieve code vervangen door beter leesbare varianten?

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;
}
SuperR
Berichten: 1864
Lid geworden op: zo 30 aug 2009, 22:35
Locatie: Rotterdam

Re: Tiny project voor Attiny13; "My first Code"

Bericht door SuperR »

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
}
Bijlagen
knight.png
Gebruikersavatar
Ah!buis
Berichten: 16682
Lid geworden op: ma 15 nov 2010, 22:36
Locatie: Overijse

Re: Tiny project voor Attiny13; "My first Code"

Bericht door Ah!buis »

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
Plaats reactie

Terug naar “Overige Audio-elektronica”