Hallo zusammen,
ich verwende einen Attiny 417 zur Ansteuerung einer RGBW-LED
Verwendet werden:
4x AD-Eingang zum Einlesen des Dimm-Signals
4x Digitalausgang mit variabler Pulslänge zur LED Steuerung
3 Kanäle funktionieren einwandfrei, der 4. Kanal (PortB.1) macht Fehlimpulse (siehe Bilder)
Das Programm ist für alle 4 Kanäle gleich
Ich glaube, ich hatte vor Jahren ein ähnliches Problem und jemand hat mir gesagt, daß es eine Alternative gibt, um Ausgangsports zu steuern (ich verwende PortB.1 = 1)
Leider kann ich den Post nicht mehr finden.
Hat jemand eine Idee.
Muss ich am Stack, oder... was ändern?
Muss für die Verwendung von PortA.4 (Eingang) oder PortB.1 (Ausgang) etwas disabled werden?
Danke!
Alles anzeigen
ich verwende einen Attiny 417 zur Ansteuerung einer RGBW-LED
Verwendet werden:
4x AD-Eingang zum Einlesen des Dimm-Signals
4x Digitalausgang mit variabler Pulslänge zur LED Steuerung
3 Kanäle funktionieren einwandfrei, der 4. Kanal (PortB.1) macht Fehlimpulse (siehe Bilder)
Das Programm ist für alle 4 Kanäle gleich
Ich glaube, ich hatte vor Jahren ein ähnliches Problem und jemand hat mir gesagt, daß es eine Alternative gibt, um Ausgangsports zu steuern (ich verwende PortB.1 = 1)
Leider kann ich den Post nicht mehr finden.
Hat jemand eine Idee.
Muss ich am Stack, oder... was ändern?
Muss für die Verwendung von PortA.4 (Eingang) oder PortB.1 (Ausgang) etwas disabled werden?
Danke!
Quellcode
- 'RGBW Elektronik 3W
- 'ATTINY417
- 'Norbert Nestler
- 'V03 28.11.2021
- 'Fuses:
- 'Programmierung UPDI (PIN10)
- $Regfile="atxtiny417.dat"
- $Crystal=16000000
- $hwstack=40
- $swstack=16
- $framesize=32
- config Sysclock = 16_20mhz , Prescale = 1 , Clockout = Disabled '16/20MHz in Fuses auf 16Mhz setzen
- config PORTA.1 = OUTPUT 'frei
- config PORTA.2 = INPUT 'Eingang NTC
- config PORTA.3 = OUTPUT 'Ausgangssignal weiss
- WHITE_OUT alias PORTA.3
- config PORTA.4 = INPUT 'Eingangssignal RED
- config PORTA.5 = INPUT 'Eingangssignal grün
- config PORTA.6 = OUTPUT 'Start LED Treiber
- config PORTA.7 = INPUT 'Eingangssignal weiss
- config PORTB.0 = OUTPUT 'Ausgangssignal grün
- GREEN_OUT alias PORTB.0
- config PORTB.1 = OUTPUT 'Ausgangssignal RED
- RED_OUT alias PORTB.1
- config PORTB.2 = OUTPUT 'Ausgangssignal blau
- BLUE_OUT alias PORTB.2
- config PORTB.3 = OUTPUT 'Test-LED
- config PORTB.4 = INPUT 'Eingangssignal blau
- config PORTB.5 = OUTPUT
- config PORTB.6 = OUTPUT
- config PORTB.7 = OUTPUT
- config PORTC.0 = OUTPUT
- config PORTC.1 = OUTPUT
- config PORTC.2 = OUTPUT 'Test-Ausgang
- config PORTC.3 = OUTPUT
- config PORTC.4 = OUTPUT
- config PORTC.5 = OUTPUT
- Config Adc0 = Single , Resolution = 8bit , Adc = Enabled , Reference = VDD , Prescaler = 8 , Sample_len = 1 , Sample_cap = Above_1v , Init_delay = 32
- disable interrupts
- DIM RED_IN as byte
- DIM GREEN_IN as byte
- DIM BLUE_IN as byte
- DIM WHITE_IN as byte
- DIM RED_PAU as byte
- DIM GREEN_PAU as byte
- DIM BLUE_PAU as byte
- DIM WHITE_PAU as byte
- DIM OFF_ZEIT as byte
- DIM i as byte
- for i = 0 to 4 'Test LED blinkt 5x
- PORTB.3 = 1
- waitms 200
- PORTB.3 = 0
- waitms 200
- next i
- OFF_ZEIT = 2
- PORTA.6 = 1 'Schaltregler einschalten
- DO
- 'Einlesen
- '---------------------------------------------------------------------------
- 'Kanal GRÜN
- GREEN_IN = GETADC(5)
- IF GREEN_IN > 240 THEN GREEN_IN = 255
- GREEN_PAU = GREEN_IN
- GREEN_IN = 255 - GREEN_IN
- '---------------------------------------------------------------------------
- 'Kanal ROT
- RED_IN = GETADC(4)
- IF RED_IN > 240 THEN RED_IN = 255
- RED_PAU = RED_IN
- RED_IN = 255 - RED_IN
- '---------------------------------------------------------------------------
- 'Kanal BLAU
- BLUE_IN = GETADC(9)
- IF BLUE_IN > 240 THEN BLUE_IN = 255
- BLUE_PAU = BLUE_IN
- BLUE_IN = 255 - BLUE_IN
- '---------------------------------------------------------------------------
- 'Kanal WEISS
- WHITE_IN = GETADC(7)
- IF WHITE_IN > 240 THEN WHITE_IN = 255
- WHITE_PAU = WHITE_IN
- WHITE_IN = 255 - WHITE_IN
- '---------------------------------------------------------------------------
- 'Ausgeben
- '---------------------------------------------------------------------------
- 'Kanal GRÜN
- IF GREEN_IN > 10 THEN
- GREEN_OUT = 1
- waitus GREEN_IN
- GREEN_OUT = 0
- waitus GREEN_PAU
- END IF
- waitus OFF_ZEIT
- '---------------------------------------------------------------------------
- 'Kanal RED
- IF RED_IN > 10 THEN
- RED_OUT = 1
- waitus RED_IN
- RED_OUT = 0
- waitus RED_PAU
- END IF
- waitus OFF_ZEIT
- '---------------------------------------------------------------------------
- 'Kanal BLAU
- IF BLUE_IN > 10 THEN
- BLUE_OUT = 1
- waitus BLUE_IN
- BLUE_OUT = 0
- waitus BLUE_PAU
- END IF
- waitus OFF_ZEIT
- '---------------------------------------------------------------------------
- 'Kanal WEISS
- IF WHITE_IN > 10 THEN
- WHITE_OUT = 1
- waitus WHITE_IN
- WHITE_OUT = 0
- waitus WHITE_PAU
- END IF
- waitus OFF_ZEIT
- '---------------------------------------------------------------------------
- loop
- end