Sparrow als Entwicklungshelfer für kleines Elektronikprojekt

von Hermann Nieder
Clown Valentino
Das abgebildete kleine Elektronikprojekt mit blinkenden Leuchtdioden wird von einem ATtiny13 auf der Lötseite einer Platine mit Lötpunkten angesteuert.
Valentino Schaltbild
Dies ist das Schaltbild dazu. Die untereinander angeordneten LEDs (gelbe Exemplare am Rand der „Mütze“ des stilisierten „Clowns“) leuchten abwechselnd, und zwar unabhängig vom roten Exemplar.
Dies geschieht mit folgendem Programm, das auf einem Raspberry Pi entwickelt und compiliert wurde:
//Clown Valentino //
// Feb. 2015
#include <avr/io.h> 
#include <util/delay.h> 
#include <avr/interrupt.h>

#define setbit(P,BIT)  ((P) |= (1<<(BIT)))
#define clearbit(P,BIT) ((P) &=~(1<<(BIT)))
#define togglebit(P,BIT) ((P) ^=(1<<(BIT)))
#define S1 (PINB &(1<<PB0))
#define S2 (PINB &(1<<PB2))

int p,t,n;

ISR(TIM0_OVF_vect) {
    n++;
    if(n==8) {
        togglebit(PORTB,3);// bzw. so:  PORTB ^=(1<<PB3);
        togglebit(PORTB,4);
        n=0;
    }
}

void mydelay(int t) {
    for (p=0;p<t;p++) {
        _delay_ms(1);
    }
}

int main(void) {
    DDRB=0b00011010; 
    setbit(PORTB,3);
    clearbit(PORTB,4); 
    TCCR0B |= (1<<CS02) |(1<<CS00);// Prozessortakt  /1024
    TIMSK0 |=(1<<TOIE0);           // Interrupt aktivieren
    sei();                         // Alle Interrupt-Aufrufe
                                   // erlauben       

    clearbit(PORTB,1);
    t=500;
    while(1) {
        if(!S1)   // "normaler Herzschlag"
        {t=500;}    

        if(!S2)  //  "Herzklopfen"
        {t=250;}
        togglebit(PORTB,1);
        mydelay(t);

    } //end while(1)  
}


Im Hauptprogramm wird PORTB.3 gesetzt und PORTB.4 zurückgesetzt. Außerdem wird der Timer initialisiert. Dieser zählt mit einer Frequenz 1200000/1024/256 Hz, also ca. 4,58 Hz. In der Interrupt-Routine wird die Variable n bei jedem Timer-Überlauf um 1 erhöht, bis sie den Wert 8 erreicht. Dies geschieht, um das Blinken der gelben LEDS zu „verlangsamen“. Nun wird der Zustand von PB3 und auch derjenige von PB4 umgekehrt. Außerdem nimmt die Variable n wieder den Wert 0 an. Beim nächsten Überlauf wird n wieder um 1 erhöht usw. Die rote LED blinkt zunächst mit einer Pausenzeit („normaler Herzschlag“) von ca. 500 ms. Drückt man S2, wird die Pausenzeit auf die Hälfte verringert („Herzklopfen“). Die usprüngliche „Herzschlag“ lässt sich wieder mithilfe von S2 einstellen.
Programmierung über den Raspberry Pi
Das Programm lässt sich z. B. gut mit einem Sparrow erproben. Das Bild zeigt, wie der Sound-Ausgang eines Raspberry Pi mit einer Sparrow-Platine verbunden werden kann, um den ATtiny13 darauf mithilfe des SoundProgrammers zu programmieren.
Valentino Testaufbau mit Sparrow und Steckbrett
Darauf kann ein Test des Programms im Sparrow auf einem kleinen Steckboard mit äußeren Leuchtdioden erfolgen.
Übertragung auf das Zielsystem
Wenn dieses wunschgemäß funktioniert, muss es auch in ein äußeres Exemplar des Mikrocontrollers übertragen werden. Dazu kann dieser wie im Bild über einen entsprechenden Adapter und zusätzliche 8-polige Präzisionsfassungen mit dem ATtiny13 auf der Sparrow-Platine verbunden (Verbindungen mit Vcc, GND, RES, PB0 und PB2 sowie z. B. wie im Bild grüne LED von PB1 des „parallelen“ ATTiny13 über Vorwiderstand nach Masse als „Kontroll-LED“) werden. Nun ist erneut der SoundProgrammer zu starten, um die Programmierung des äußeren ATtiny13 zu bewerkstelligen.
Valentino Prototyp (Zielsystem)
Anschließend kann das Programm im ATtiny13 mit einer Testschaltung, die gemäß dem Schaltbild oben aufgebaut worden ist, auf einem kleinen Steckboard erprobt werden.
Valentino Zusammenbau
Ist der Testbetrieb erfolgreich verlaufen, sind nun Lötarbeiten auf der Lötseite der Platine des kleinen Projekts durchzuführen. Die Verbindungsleitungen zum Batteriehalter mit zwei Mignonzellen haben eine Zugentlastung erhalten. Der kleine Schalter ist zusätzlich mit angelöteten Drahstückchen fixiert, damit er sich betätigen lässt, ohne dass Lötstellen „aufgehen“ indem sich Verbindugnsdrähte lösen.
Das Stück einer gehobelten Latte im Bild hat eine Nut in Längsrichtung erhalten, damit man den „Clown“ aufstellen kann.
Valentino Endmontage der Steuerung
Dies ist ein weiteres Bild des fertigen „Clowns Valentino“, mit dem man z. B. nicht nur am Valentinstag einem anderen Menschen eine Freude machen kann.
Links und Referenzen: