Hallo, ich will mit einem Attiny 2313 eine Temperaturregelung für einen Lüfter aufbauen. Leider kann ich nicht abschätzen ob die 2k Flash des Attiny 2313 für das Programm ausreichen. Da ich momentan den Schaltplan erstelle wäre es gut, wenn mir jemand anhand seiner Erfahrungen sagen könnte, ob der Flash für die folgenden Funktionen ausreicht oder ob ich auf einen anderen Controller umsteigen muss. Natürlich hängt das auch vom Programmierstil ab. Aber den kann man bei Bedarf ja verbessern. Hier die Funktionen: - Kommunikation mit übergeordnetem Controller über SPI - Temperaturmessung mit DS1820 über 1Wire - Lüfterdrehzahlregelung (PID-Regler) mit Hardware-PWM - Messung der Lüfterdrehzahl (vermutlich mit INT0-Interrupt) - Nur während der Entwicklung und dem Debuggen: Datenausgabe über UART Können die 2k hierfür reichen? Danke matt
Probier's doch einfach mal aus. Evtl. auf einem Steckbrett. Da kannst du später immer noch auf was größeres umsteigen.
Mal abgesehen davon, dass der Aufwand für eine Temperaturregelung gehörig übertrieben ist sollte der Flash genügen. Ansonsten gibt es noch den Pin- und Registerkompatiblen ATtiny4313 mit 4k Flash.
Hallo 4toTakoe, wie kommst du darauf, dass der Aufwand übertrieben ist? Was könnte man deiner Meinung nach vereinfachen? zu 1) Da die Regelung ein Subsystem eines größeren Systems ist, kann ich auf die SPI-Kommunikation nicht verzichten. zu 2) Eine Temperaturmessung muss natürlich stattfinden. zu 3) Der eigentliche Regler, der wird benötigt. zu 4) Kontrolle ob sich der Lüfter tatsächlich dreht. (Die Info könnte man eventuell auch von dem Temperaturverlauf ableiten, aber einen digitalen Eingang habe ich gerade noch übrig ;-) ). Danke schonmal!
Matt B. schrieb: > Können die 2k hierfür reichen? In Assembler in jedem Fall. In C hardwarenah programmiert auch. In C oder C++ über mehrere Abstraktionsebenen verteilt und mit Betriebsystem dahinter nicht mehr.
Gut, ich weiß nicht was bei dir auf Temperatur gehalten werden soll. Wenns einfach nur um eine Lüfterregelung geht genügt sowas: http://www.atmel.com/Images/doc8005.pdf das kann natürlich ohne weiteres um Schnittstellen erweitert werden.
Für das Debuggen will ich diverse Ausgaben über den UART erstellen. Ich habe gemerkt, dass die Ausgabe von Strings recht viel Data Memory benötigt. Da ich in der Regel die einzelnen Module des Programms einzeln debugge bin ich auf die Idee gekommen verschiedene Debug-Modes zu definieren.
1 | /* DEBUG-MODE |
2 | * ================== |
3 | * 0: keine DEBUG-Funktionen |
4 | * 1: SPI-Debug |
5 | * 2: Temperatur-Debug |
6 | * 3: Regler-Debug |
7 | */ |
8 | #define DEBUG_MODE 0 |
Gibt es für den gcc Kompiler Befehle mit denen ihm zum Beispiel sowas gesagt werden kann: Wenn DEBUG_MODE == 1, dann kompiliere die nächste Zeile, ansonsten betrachte die folgende Zeile als Kommentar. Gibt es sowas? Unter welchen Stichwort findet man da was? Danke
ja gibts
1 | #if DEBUG_MODE
|
2 | dein code |
3 | #endif
|
Zudem kannste progmem nutzen dann landets nicht im RAM, davon hat der 2313 nur 128byte. Aber große Debugstrings bei 2k ROM sollte man lassen, das wird dann wirklich knapp.
1) Ich nehme zum "Entwickeln" i.d.R. den größten (Flash, RAM) uC den ich habe und der in das Design passt. 2) Versuch' macht klu(g)ch, wie Ralf G. beschrieben hat.
Ok, damit sollte ich erstmal klar kommen. Dann werde ich mich mal an die Software setzen... Danke an alle! Gruss matt
Matt B. schrieb: > Da ich in der Regel die einzelnen Module des Programms einzeln debugge > bin ich auf die Idee gekommen verschiedene Debug-Modes zu definieren. Mach doch nicht solche Umstände. Nimm einen ATmega88, der keine Tricksereien braucht. Oder die pinkompatiblen ..48/168/328. Die haben beim DIL-Gehäuse nur 8 Pins mehr und noch einen ADC, falls dieser sich als zweckmäßig erweisen sollte.
> Können die 2k hierfür reichen?
Ja, und dazu musst du nicht mal in Assembler programmieren sondern
kannst C verwenden,
aber kluges Programmieren ist vorausgesetzt.
Wenn du printf("Temp=%1.2f",messwert/10.0) schreibst, also printf und
float verwendest, ist dein Speicher natürlich voll.
Hi >Nimm einen ATmega88, der keine Tricksereien braucht. Oder die >pinkompatiblen ..48/168/328. Die haben beim DIL-Gehäuse nur 8 Pins mehr >und noch einen ADC, falls dieser sich als zweckmäßig erweisen sollte. Oder wenn es SMD sein kann den ATTiny1634. MfG Spess
Matt B. schrieb: > - Kommunikation mit übergeordnetem Controller über SPI Das AVR-SPI ist als Slave völlig unbrauchbar, wenn der Master nicht nach jedem Byte lange Wartepausen einlegt. Deutlich besser geht I2C oder UART. Für Debugausgaben kann man bequem eine SW-UART nehmen.
spess53 schrieb: > Oder wenn es SMD sein kann den ATTiny1634. Der kann aber nur 12MHz ;-( Darum gibt es die Mega48/88/168/328 mit 20MHz und auch in SMD ;-)
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.