Forum: Mikrocontroller und Digitale Elektronik Blutiger Anfänger, ATTiny15 und PWM


von Reinhard W. (freakster235)


Lesenswert?

Hallo Leute,

wie in meinen Betreff zu lesen ist bin ich schwerer Anfänger in der 
Programmierung von AVR. Momentan arbeite ich ein wenig mit den 
Tutorial's auf dieser Seite.
Ich habe noch kein wirklichen Grundwissen in irgendeiner Sprache, außer 
ein bisschen Basic aus der Hauptschule ;-)

Mein Vorhaben ist folgendes:
Ich möchte mit den ATtiny15L, den habe ich deshalb ausgewählt wegen des 
geringen Stromverbrauch und weil er keine externe Beschaltung benötigt, 
da der AVR im Auto eingesetzt werden soll.
Er soll folgende Abläufe regeln:
Ich habe einen CarPC im Auto, von diesen CarPC soll er das 
Zündungssignal steuern und er soll eine Reihe von LED's steuern und 
vorallem abdimmen per PWM.

Wird das Auto aufgesperrt so bekommt der AVR von dem ZV-Modul einen 
Plus-Impuls, daraufhin soll der AVR für 10 Minuten Strom auf 
Zündungsplus des CarPc geben, wird Inerhalb dieser 10 Minuten die 
Zündung nicht aktiviert so fällt das Zündungsplus wieder ab und der PC 
geht wieder in Ruhezustand.

Das nächste ist, wird wenn Zündung an ist, ein Taster betätigt so bleibt 
die Zünspannung für 30 Minuten erhalten und nach 30 Minuten geht der PC 
dann aus.

Wird das auto aufgesperrt (Also Impuls von der ZV) so sollen die LEDS 
für 10 Sekunden voll brennen und dann innerhalb von 5 sekunden 
abdunkeln.
Ist die Zündung an sollen die LEDS direkt geschalten werden ohne Timer 
und abdunkeln.

So jetzt frage, geht es überhaupt wenn 1 Timer läuft andere Befehle zu 
verarbeiten.
Weil wenn ich aufsperre dann läuft der 10 Minuten Timer für den Car-PC, 
zeitgleich würde aber 10 Sekunden Timer für die LEDS und danach die PWM 
Funktion angehen.

Das Wären ja mehrere Prozesse.

Dann noch die Frage, als anfänger welche Programmiersprache sollte ich 
verwenden?
Und hat vllt. irgendjemand schon mal sowas ähnliches gemacht?

Vielen Dank für euere Hilfe.

Gruß Freaky!

von Hannes L. (hannes)


Lesenswert?

> Dann noch die Frage, als anfänger welche Programmiersprache sollte ich
> verwenden?

Der Tiny15L hat kein SRAM, also tun sich Hochsprachen wie BASIC oder C 
schwer damit. Ich programmiere den Tiny15 immer in Assembler mit 
AVR-Studio.

...

von Reinhard W. (freakster235)


Lesenswert?

Servus,

danke für die Info.
Und wie klappt das mit der abarbeitung von 2 sachen gleichzeitig?

Vielen Dank!

von Hannes L. (hannes)


Lesenswert?

Reinhard Winkelmaier wrote:
> Servus,
>
> danke für die Info.
> Und wie klappt das mit der abarbeitung von 2 sachen gleichzeitig?
>
> Vielen Dank!

Das kommt darauf an, wie Du diese Sachen programmierst, also wie Du Dein 
Programm organisierst. Wenn Du in einer Warteschleife auf das Eintreffen 
eines Impulses wartest, dann wird es schwierig, mehrere Dinge (quasi) 
gleichzeitig zu erledigen.

Da ich kein Carmodder bin, habe ich mich mit Deiner Aufgabenstellung 
nicht näher beschäftigt. Daher nahm ich auch nur zur Wahl der 
Programmiersprache Stellung.

...

von Kallius (Gast)


Lesenswert?

Nimm besser erst mal eine AVR CPU mit SRAM und mehr ROM (Mega 8, Mega 
16, Mega 32, ...) im DIP-Gehäuse und versuche dein Programm mal in einer 
Hochsprache (BASIC, C, ...) hinzubekommen; wenn die CPU wirklich doch 
klein sein soll, dann schau mal nach Tiny 25/45/85 -> die haben SRAM und 
müssten auch für eine Hochsprache besser geeignet sein.

von Reinhard W. (freakster235)


Lesenswert?

Servus,

klar soweit.
Aber im endeffekt kommts ja nicht auf das carmodding an, sonder es ist 
ja eine einfach aufgabe für einen AVR, die bestimmt überall Anwenund 
finden würde und net nur in meinen Auto ;)

Aber wenn doch 1 Timer läuft steht der Programmablauf still oder?

Die Größe des Prozessors wäre mir eigentlich egal. Hauptsächlich geht es 
um den Strombedarf. Und der Tiny war mir so sympatisch weil er komplett 
ohne beschaltung auskommt und der Strombedarf im Idle bei 1mA liegt, 
also kein reset schaltung oder ähnliches.

Ein Tip, welche Hochspache ist leichter zu erlernen Basic oder C?

Wieso benötigt denn eine Hochsprache den SRAM? Im endeffekt wird doch 
auch die Hochsprache in Assembler gewandelt mit den Compiler, oder?

Vielen Dank!

von yalu (Gast)


Lesenswert?

> Aber wenn doch 1 Timer läuft steht der Programmablauf still oder?

Der Timer und die CPU, die das Programm ausführt, sind zwei getrennte
Einheiten auf dem Chip, d. h. Timer und Programm können parallel
laufen.

> Hauptsächlich geht es um den Strombedarf.

Der ATtiny25/45/85, wie von Kallius vorgschlagen, braucht in aktivem
Zustand (als wenn ein Programm läuft) noch deutlich weniger Strom als
der ATtiny15. Da der Controller in deinem Fall aber die meiste Zeit
sowieso nichts zu tun hat, kannst du ihn in den Power-Down-Modus
versetzen. Dann brauchen die meisten AVRs (auch die größeren) weniger
als 1 µA, d. h. du kannst so ein Teil sogar mit zwei Knopfzellen über
Jahre versorgen.

> Und der Tiny war mir so sympatisch weil er komplett ohne beschaltung
> auskommt

Das tun alle AVRs.

> und der Strombedarf im Idle bei 1mA liegt,

Auch im Idle braucht der ATtiny25/45/85 bei gleicher Taktfreqeuenz
weniger.

> also kein reset schaltung oder ähnliches.

Brauchst du normalerweise bei keinem AVR.

> Ein Tip, welche Hochspache ist leichter zu erlernen Basic oder C?

Für die meisten wahrscheinlich Basic, zumal du das ja schon in der
Schule ein wenig gelernt hast. Vorteil von C: Es ist standardisiert.
Wenn du es einmal beherrschst, kannst du damit, ohne jedesmal eine
neue Sprache lernen zu müssen,  praktisch alle Computer programmieren,
angefangen vom Mikrocontroller über PDAs, PCs und Großrechner bis hin
zum Supercomputer. Aber du kannst natürlich auch mit Basic beginnen
und später C (und vielleicht Assembler) lernen.

> Wieso benötigt denn eine Hochsprache den SRAM? Im endeffekt wird
> doch auch die Hochsprache in Assembler gewandelt mit den Compiler,
> oder?

Das ist richtig. Eine Hochsprache an sich braucht auch nicht
grundsätzlich RAM, solange alle alle Daten, mit denen gerechnet wird,
in die Prozessorregister passen (die AVRs haben immerhin 32 davon).
Allerdings sind die meisten Hochsprachencompiler, darunter auch der
AVR-GCC und der Bascom, darauf ausgelegt, Daten in einem RAM ablegen
zu können. Deswegen werden bspw. ATtiny11, 12 und 15 vom GCC nicht
unterstützt. Kluge Köpfe haben zwar auch hier schon eine Möglichkeit
gefunden, diese Einschränkung zu umgehen, und auch neuere
Bascom-Versionen sollen ohne RAM auskommen können, aber wirklich
sinnvoll programmieren kann man damit sicher nicht.

Wieso kaufst du dir nicht für's erste ein preisgünstiges AVR-Board,
wie z. B. das von Pollin für 14,95, eine Hand voll AVRs in
verschiedenen Größen (z. B. ein ATtiny45, ein ATmega8 und ein
ATmega32, in das Pollin-Board passen unterschiedliche Typen) für
zusammen ein paar Euro und fängst an, mit der Demoversion von Bascom
oder WinAVR (GCC) rum zu probieren. Anfängertutorials gibt es hier auf
der Webseite.

von Kallius (Gast)


Lesenswert?

Noch zu Info:

... das von Pollin für 14,95, eine Hand voll AVRs in
verschiedenen Größen (z. B. ein ATtiny45, ein ATmega8 und ein
ATmega32, in das Pollin-Board passen unterschiedliche Typen) ...

-> die Tinies 25/45/85 gibt es bei Pollin nicht; auf dem Board von 
Pollin ist auch in der Version 2 ein 8-poliger Sockel für den den Tiny 
15, aber dort passt auch der Tiny 25/47/85 rein, da er die gleiche 
Belegung der ISP-Pins hat.

von Kallius (Gast)


Lesenswert?

sorry, einen Tiny 47 gibt es natürlich nicht -> Tiny 45

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.