MPLAB X und ATtiny202

                      Elektronik-Labor  Bastelecke  Projekte  Mikrocontoller                        




Seit Microchip die Firma Atmel übernommen hat, gibt es zwei mögliche IDEs für alle AVR-Controller. Neben dem Atmel Stuio 7 kann ich nun auch auf die MPLAB X IDE zurückgreifen. Diese Software habe ich bereits einmal für einen
PIC16F1707 verwendet und dabei einige Eigenschaften als sehr praktisch empfunden. Deshalb wollte ich es nun auch für die neuen AVR mit UPDI probieren. Besonders hilfreich ist das MCC-Werkzeug (MPLAB Code Confifurator), das man zusätzlich installieren kann. Es hilft dabei die interne Peripherie und die Zuordnung zu den äußeren Anschlüssen zu koordinieren. Im Ergebnis werden zahlreiche .h- und .c-Dateien erzeugt, die die Hardware-Register passend ansteuern. So kann man die aufwendige Datenblattrecherche abkürzen und kommt schneller zu einem Ergebnis. Das main.c bleibt kurz und aufgeräumt. Nur "#include mcc_generated_files/mcc.h" fügt die IDE hier ein.



Hier wollte ich den analogen Komparator AC0, den AD-Wandler ADC0 und die interne Spannungsreferenz VREF nutzen. Die Idee war, die interne Referenzspannung von 1,1 V nach außen zu führen. Der positive Komparator-Eingang sollte intern an die Referenz gelegt werden, Der Ausgang sollte über ein RC-Tiefpassfilter an den negativen Eingang gehen. Damit sollte sich ein Regelkreis bilden, der genau 1,1 V am Kondensator einstellt. Alles das konnte ich mir einfach als Einstellungen des AC0 zusammenklicken. Zusätzlich wurde VREF für den Komparator und für den AD-Wandler auf 1,1 V eingestellt.






Man sieht dabei immer, welche Anschlüsse verwendet werden, und ob es irgendwo zu Kollisionen kommt. Am Ende klickt man auf „Generate“ und lässt sich damit die erforderlichen Quelltexte erzeugen.



Nach dem Kompilieren des Gesamtprogramms bekomme ich eine hex-Datei. Sie automatisch aus der IDE heraus in den Chip zu brennen ist mir bisher noch nicht gelungen. Also kopiere ich die Datei, benenne sie um in firmware.hex und brenne sie mit  pymcuprog und meiner Batch-Datei firmware_t202.bat in den Controller. Das Ergebnis: 1,1 V am Ladekondensator mit 22 nF, Hurra!. Der Komparator-Ausgang am Widerstand mit 10 k zeigt schnelle Impulse, die völlig autonom sind und in keinem Verhältnis zu Prozessortakt stehen. Es ist also wie geplant ein eigenständiger Regelkreis entstanden, der den Prozessorkern nicht belastet. 



Im nächsten Versuch habe ich mit MCC die Referenzspannung 2,5 V eingestellt und alles neu kompiliert. Auch das funktioniert, nun stehen 2,5 V am Pin 3 des Controllers. Alles funktioniert also einwandfrei. Ich kann auch Teile der Quelltexte kopieren und im AVR Studio 7 einsetzen. So ist es mir gelungen, die gleiche Regelschleife auch auf dem ATtiny3216 einzusetzen. Dies sind die wesentlichen Teile aus der Datei ac0.c.



#include "../include/ac0.h"

/**
 * \brief Initialize ac interface
 */
int8_t AC0_Initialize()
{
    //CMP disabled;
    AC0.INTCTRL = 0x00;

    //INVERT enabled; MUXPOS PIN0; MUXNEG VREF;
    AC0.MUXCTRLA = 0x82;

    //RUNSTDBY disabled; OUTEN enabled; INTMODE BOTHEDGE; HYSMODE OFF; ENABLE enabled;
    AC0.CTRLA = 0x41;

    return 0;
}

ISR(AC0_AC_vect)
{
    /* Insert your AC interrupt handling code here */

    /* The interrupt flag has to be cleared manually */
    AC0.STATUS = AC_CMP_bm;
}




Elektronik-Labor  Bastelecke  Projekte  Mikrocontoller