LoRaWAN UDP Packet Forwarder 1
17.12.2024
Elektronik | Funk | Software
Der Technik-Blog
Zu diesem Artikel gibt es auch ein Video auf Youtube: Standanlone AVR ATMega328 Blink Beispiel in C mit Amtel Studio
In diesem Artikel zeigen wir, wie ein ATMega328 in Amtel Studio programmiert wird und wie die Software auf den Mikrocontroller mittels Programmer (AVRISP) geladen wird. Als einfaches Beispiel lassen wir eine LED auf dem PIN 15 (PORTB1) blinken. Dazu ist eine LED sowie ein Vorwiderstand von 220 Ohm notwendig. Informationen zum Grundaufbau der Schaltung gibt es im vorherigen Beitrag, wo wir den Bootloader brennen.
Auch in diesem Beispiel wird der ATMega328 auf einem Steckbrett betrieben. Neben der 5V Stromversorgung ist auch hier der Programmer über ISP angeschlossen. Zusätzlich verwenden wir auch hier einen externen Taktgeber mit 16 Mhz. Auf den Pin 15 (PORTB1) wird dann die Anode der LED angeschlossen und die Kathode über den 220 Ohm Widerstand in Serie mit der Masse verbunden. Wenn der Mikrocontroller das erste Mal programmiert wird, muss sichergestellt werden, dass der Bootloader bereits gebrannt ist.
Wenn die Hardware fertig angeschlossen ist, so kann mit der Entwicklung der Software gestartet werden. In Amtel Studio wird ein neues Projekt erstellt. Dabei wird als Projekttyp "GCC C Executable Project" ausgewählt und anschließend ein Projektname definiert. Nach dem Klick auf "OK" öffnet sich noch das Fenster, wo der richtige Mikrocontroller (ATMega328P oder ATMega328) ausgewählt werden muss. Danach wird die Projektmappe mit den notwendigen Projektdateien erzeugt. In der C-Datei (main.c) befindet sich bereits ein Teil vom Code, der jetzt noch so erweitert wird, dass die LED blinkt. Der gesamte Code sieht wie folgt aus:
#define F_CPU 16000000UL #include <avr/io.h> #include <util/delay.h> int main(void) { DDRB |= (1<<DDB1); while (1) { PORTB |= (1<<PORTB1); _delay_ms(1000); PORTB &= ~ (1<<PORTB1); _delay_ms(1000); } }
Als Erstes wird die Taktfrequenz definiert (#define F_CPU 16000000UL). Diese entspricht der Frequenz vom Oszillator welche in diesem Aufbau 16MHz (16000000Hz) beträgt. In den weiteren zwei Zeilen werden zwei Bibliotheken in das Projekt integriert. Im Hautprogramm wird als Erstes der Pin 15 (PORTB1) als digitaler Ausgang definiert. Danach wird der restliche Code in der While-Schleife dauerhaft ausgeführt. Dabei wird der PORTB1 eingeschaltet, dann wird eine Sekunde gewartet, bis der PORTB1 wieder ausgeschaltet wird. Bevor PORTB1 wieder eingeschaltet wird, wird erneut eine Sekunde gewartet.
Wenn der Code vollständig ist, kann unter dem Punkt "DEBUG" das Projekt starten. Beim ersten Start wird noch nach den Programmer gefragt. Dabei muss der angeschlossene Programmer ausgewählt werden und der Upload fortgesetzt werden. Während diesem Vorgang blinkt der Programmer kurz auf und danach sollte die LED bereits blinken. In Amtel Studio steht dann in der Ausgabe das der Build erfolgreich war.
In diesem Artikel zeigen wir, wie mit dem ATMega328 ein 16x2 Zeichen LCD Display mit 4-Bit angesteuert wird. Programmiert wird alles in C mit dem Amtel Studio
WeiterlesenIn diesem Beitrag zeigen wir, wie ein ATMega328 mit dem AVRISP Programmer geflashed wird und welche Bauteile für den eigenständigen Betrieb benötigt werden.
WeiterlesenAEQ-WEB © 2015-2024 All Right Reserved