möchte gerne Bascom benutzen
aber das was du geschrieben hast ,
komme ich noch nicht zurecht
geht es etwas einfacher ewentuell mit einem kleinen plan...
Was meinst Du mit Plan?
Ich wollte Dir nur die Beschränktheit des Controllers (für Dein Ziel) zeigen. Dino ist ja inzwischen auch darauf eingegangen...
Der Tiny13 bietet:
-8 PINs, davon 2xStromversorgung, 1xReset (kann man zwar als I/O freigeben, aber dann ist der Chip nicht (mehr) in-systemprogrammierbar (ISP)). Bleiben also effektiv 5 PINs.
-1 kByte ProgramFlash (also 512 Words... fast jedes Assembler Mnemonic belegt ein Word - Bascom-Befehle setzen sich (wie bei jeder höheren Sprache) quasi aus mehreren/vielen Mnemonics zusammen)
-64 Bytes SRAM (Arbeitsspeicher)
-64 Bytes Eeprom ("Festplatte")
-32 Bytes Rechenregister - die verwendet Bascom zum Teil für sich/damit hast Du unter Bascom quasi nix zu tun (als Anfänger... - außer Du bettest Assembler ein)
-einen 8bit-Timer, der Dir 2 Kanäle Hardware-PWM bietet (über 2 Pins, klar)
(kann über PB2 asynchron betaktet werden)
-einen AnalogComperator
-einen ADC mit 3 single ended inputs (der Reset könnte als 4ter verwendet werden, aber ->oben)
-einen externen Interrupt
-jeder der 5 Pins kann den PinChangeInterrupt auslösen
-
keine Hardware-I/O-Schnittstelle
-interner RC-Oszillator, kann auf 4,8 oder 9,6MHz eingestellt werden. Alternativ existiert ein interner 128kHz Oszillator.
Alternativ kann an PB3 eine externe Taktquelle (bis 20MHz) angeschlossen werden - das kostet Dich dann halt einen weiteren Pin).
Du mußt die Kommunikationsschnittstelle also in Software lösen (bzw Bascom das machen lassen). Mein Code-Schnipsel da oben legt eigentlich nur eine Variable (1 Byte, Zahl) an, und weist ihr den Wert 255 zu. Danach lasse ich diese Variable mit "serout" über PB0 senden. "serout" ist ein, von Bascom zur Verfügung gestellter Befehl, mit dem genau das in Software gemacht wird. Siehe die Bascom-Hilfe dazu.
Allein die Verwendung von serout belegt ca zwei drittel Deines Programmspeichers (eigentlich sollte man interessehalber mal die 3 Zeilen auskommentieren, und sehen wieviel Overhead Bascom bei einem "leeren" Programm erzeugt...).
Serout ist quasi Software-UART (nur senden), in Bascom zur Verfügung gestellt. Sicher gibts auch 'ne vergleichbare Software-TWI-Lösung - wird aber meiner Meinung nach nicht viel anders sein (Timingtechnisch weniger kritisch, da getaktet - dafür muß man sich dann mt mehr Protokollen rumschlagen (Adressen/Adressenerkennung...).
Man kann sich natürlich selbst eine sinnige Kommunikationslösung zusammenstricken (insbesondere unter Assembler-Einbindung) - da wäre dann als erstes zu entscheiden, wie die Bit-Synchronisation zu erfolgen hat (über den Timer getimt), oder unter Verwendung einer Clock/Latch Leitung, und als zweites, wie breit der "Bus" werden soll (Du hast halt insgesamt 5 Pins).
Machbar ist das, aber für den Anfang macht das sicher keinen Sinn - erst recht nicht in einer Hochsprache.
Ich würde Dir auch zum ATmega48/88/168, ATtiny25/45/85, oder zum ATtiny2313/4313 raten (den Tiny261/461/861 hab ich als "differentiellen ADC- und High-Speed-PWM-Spezialisten" in Erinnerung - kommunikationstechnisch bietet er immerhin Hardware-USI. Ich hab hier noch'n Tiny26 - das ist doch der Vorgänger, oder?)
(Wo also bereits Hardware-Kommunikationsschnittstellen nutzbar sind)