-
Thread
Atmega - Jede beliebige IR-Fernbedienung erkennen
Remote Control RC130 Dual Remote Control RC520 gehen alle lediglich Galaxy Digital TV-Receiver geht nicht Leider war im vorigen Code noch ein kleiner Fehler, sodass das wiederholte Starten der Programmierung nicht geklappt hatte es sollte heißen: LED=IRSensor statt Portc.6, hier der geänderte
den Eingangs erklärten Zweck > erfüllt. Wieso davor? Ich kann auch 10m dahinter sitzen und es geht immer noch ;-)
-
Thread
Probleme mit Temperatursensor DS18B20
ist DS18B20 also nicht DS18S20 oder DS1820. Den Sensor habe ich VDD und GND gegen GND und DQ auf Portc.0 und mit einem 2,2k gegen Vcc. Hatte vorher ein 4,7k gegen Vcc gehabt, da war die Anzeige aber um 2,5 Grad höher. Das Problem ist, auf dem LCD werden mir Temperaturen zwischen 45 und 50 angezeigt
Habt ihr eure irgendwie makiert welche Seriennr. welcher Chip hat? Also falls mal einer Kaputt geht im Bus oder sonst irgendwie ersetzt wird und man dann weiß welche Seriennummer ersetzt werden muss? Ich hoffe es ist verständlich was ich meine. Michael
-
Thread
AVR-GCC 7-Segment Multiplex Problem
0; } ISR(TIMER1_OVF_vect){ if(PORTD == *c1) PORTD = *c0; else PORTD = *c1; PORTC ^= (1 << PC0); PORTC ^= (1 << PC1); } [/c]
#2664699: > Was nicht richtig funktioniert, ist das Zählen. [c] #define SEVENSEG_DEACTIVATE() PORTC|=((1 << PC0)|(1<<PC1)) #define SEVENSEG_ACTIVATE_ONES() PORTC&=~(1 << PC0) #define SEVENSEG_ACTIVATE_TENS() PORTC&=~(1 << PC1) //eine Funktion, die eine uint8_t zahl nimmt und //diese auf dem
-
Thread
2 Programme in einem AVR
natürlich noch die passenden Fusebits eingestellt werden damit der Controller auch in den Bootloader geht. Bootloader Size ist 1kb, für den Atmega8 habe ich daher folgende Fusebits: hfuse: 0xCA lfuse: 0xFF
stimmen allerdings nicht überein, damit dürfte das ganze doch nicht direkt so funktionieren oder? Page0 geht ja bis Adresse 0x40. Im Anhang ist die lss die beim Kompilieren des USBasp generiert wurde.
-
Thread
Mini Atmel Basis Board mit FT232BL + EEPROM
möchte) Die anderen 3 Ports des Atmels sind auf Micromatch Stecker gelegt. PortA auf ein 8-Pol und PortC und PortD zusammen auf einen 14-Pol (2Davon fallen für TxD und RxD weg). Ich wollte noch eine kleine Buchse für externe Spannungsversorgung anbauen (umsteckbar über Jumper). Interessant wäre
Punkt Regelung, mit Lüfter... die Funktioniert sehr bescheiden, wenns draußen sehr feucht ist, dann geht die nie aus... Da könnte man mit nem Feuchtemesser außen und innen und nem kleinen Tiny + Triac bestimmt was besseres bauen... Is nich schwer, aber irgendwie fehlt immer die Zeit :D Warum erzähl
-
Thread
Servo funktioniert nicht
Bitte nicht gleich die Köpfe einschlagen. Es geht darum zu testen, ob ich es schaffe ein Servon anzusteuern. Bevor ich ein aufwändiges Programm schreibe möchte ich mal einfach versuchen, das Servo zum laufen zu bringen. Mit dem Board habe ich schon
util/delay.h> int main (void) { DDRC = (1<<PC0); _delay_ms(3000); while(1) { PORTC |= (1<<PC0); _delay_us(1500); // in den 1500 steckt die Lageinformation PORTC &= ~(1<<PC0); _delay_ms(18); // ist nicht kritisch } return 0; }[/c]
-
Thread
Timer0 löst PCINT1 Interrupt aus?
zuletzt gesetzt wird, ist es auch nicht anders zu erwarten. //Taste, Pin Change Interrupt PCINT8 PORTC |= (1 << 0); PCMSK1 |= (1 << PCINT8); PCICR = (1 << PCIE1); egal in welcher Reihenfolge. Setzt man den Pullup, nimmt ihn wieder weg und dann PCIEx passiert gar nichts. Also das ist auf
Jetzt wollte ich gerade anfangen alles zu erklären, aber erstens geht es mir ja um die Architektur - und die ist in meinem Programm mit Kommentaren erklärt - und außerdem traue ich mir das doch selber zu :-) Aber dazu muss ich das Problem verstehen und das habe ich noch
-
Thread
6 stellige Zahl auf Ram schreiben
dann mit der Webseite aus. Die Ausgabe auf der Wbseite funktioniert, aber nur bis Minute 128, dann geht es mit -128 wieder rückwärts auf 0 und dann wieder aufwärts bis 128 und immer so weiter. Die Ausgabe auf LCD geht bis 256 und fängt dann wieder bei 1 an. Meine Minuten sollen aber bis 120000 gezählt
Danke für die aufschlußreiche Antwort. Nur weiß ich jetzt trotzdem nicht, ob oder wie das geht.
-
Thread
Immer noch Probleme beim Empfangen
#define UART_RX PIND2 [/c] Ist das so richtig? [c] SIGNAL(USART_RX_vect) { //PORTC ^= (1<<PC0); unsigned char ch; ch = UDR0; SnapReceiveChar(ch); } [/c] Kürzen! Ob in der ISR nur Zeilen stehen, von denen eine ein Funktionsaufruf ist, oder der gesamte Code der aufgerufenen
vermutlich nicht können denk ich, ausser mir sagt jemand wo ;) und ja die defines sind richtig, es geht da nur um das "hören" auf der leitung vor dem senden ( CSMA/CA verfahren) @Stefan: zum empfang testen haben wir beide eingänge auf gnd gezogen, direkt ohne µC, weil es ist uns im prinzip erstmal
-
Thread
unbeständige LCD-Ausgabe - Atmega8 - myavr light board - myavr lcd Add-on
angehängten Dateien bereits in mehreren Projekten ohne Probleme, im aktuellen Fall muss ich jedoch den PortC anstatt PORTD für die Ansteuerung nutzen um parallel auch mit externen Interrupts arbeiten zu können... Habe also im Header den Port und die einzelnen Pins angepasst und in der lcd_init() das Setzen
Ab- und Anstecken Probleme geben, das ist aber ja nicht der Fall... Habe auch mal alle Pins von PORTC auf Ausgang und '1' gesetzt und alle geben mir ca. 5V aus. Es sieht auf den ersten Blick also so aus, dass die Pins funktionieren.... Habt ihr eine Idee was hier los sein könnte? Habe schon lange
-
Thread
AVR unverständliche for Schleife
[c] PORTC = 0x00; PORTD = 0x00; wait( pause ); [/c] Welchen Sinn hat es die Leds 1ms auszuschalten, um sie dann 2µs leuchten zu lassen. PS: Die Wait geht ohne Hilfsvariable: [c] void wait (
Hallo, jetzt gehts. Danke für den heissen Tipp Lippi. Gute Nacht. HUE
-
Thread
ATMega644 & EA-DOGL128 Kommunikation
direkt von der 12V Spannungsversorgung der das ganze auf 3,3V regelt. Die Schaltung steht bereits, mir geht es eigentlich um die kommunikation zwischen mC und Display Programmtechnisch. So damit ich meinen eigenen Takt irgentwie vorgebe und darauf mein SCL anlegen kann. Was die absteigende und ansteigende
(BIT_SI)|BIT(BIT_SCL)); PORTD&=BITN(BIT_SCL); PORTD|=BIT(BIT_CS); DDRC|=BIT(BIT_RST); PORTC|=BIT(BIT_RST); // hier ggf Delay PORTC&=BITN(BIT_RST); // hier ggf Delay PORTC|=BIT(BIT_RST); // hier ggf Delay } void lcd_ctrl_init(void) { LCD_CS_LO(); LCD_A0_LO(); lcd_sendbyte
-
Thread
If Abfrage mit unterschiedlichen Zeiten
Hallo Habe es getestet. So wie es oben steht, geht es. Habe auch gesehen was du geänder hast.Damit könnte es ein Problem geben. Wenn ich ein LED Steuerung ausführe, geht es. Die zweite Steuerung komm viel später erst im Programm. Damit ist aber ein
Achim Seeger schrieb im Beitrag #2648423: > Es geht mit Schedulern und anderen Anwendungen. Leider sind manche Prg > grösser als mein Prg und recht kompliziert, mit dem ich arbeite. > Eine Uhr möchte ich damit nicht ansteuern. Es geht im Grunde um
-
Thread
Einfache µC-Schaltung, wer guckt mal drüber
Hi, ich würde das Display an PORTC anschließen. 1. ist der Port dann voll belegt (was ja an sich kein nennenswerter Vorteil ist), aber 2. Sind dann noch TXD und RXD für eventuelle Kommunikation mit dem Rechner frei. Je nachdem, was
und 7 anschließen. Außerdem würde ich an AVCC auch noch einen 100nF C hinsetzen. So dicht wie es geht. 0805 SMD Kondis sind dafür eigentlich optimal, da man die direkt zwischen die Pins des Sockels/µCs löten kann. Wie stabil sind die 5V des Netzteils? Nicht das du da dann deswegen unerwünschte Störeffekte
-
Thread
Analog comparator schluckt mein Signal? (avr)
wow das geht ja schnell. Danke. Widerstand scheint ok zu sein. Mein Meter geht bis 20Mohm und zeigt noch immer "Open line" (das selbe wie wenn ich einen PortPin als input schalte). Wegen der Quelle und dem Strom
das passt. So hab ich das: [c] DDRD =0b00001100; // enable outputs PORTD=0b00000000; DDRC=0; PORTC=0; sei(); ADCSRA=0; //disable adc bc. of analog compare mode ADCSRB=0; //AIN1 is applied to the negative input of the Analog Comparator ACSR=0; ACSR|= (1<<ACBG) |(1<<ACIE)| (0<
-
Thread
ATmega 128 EIngänge verwenden
Liegt auf PORTC ab Werk nicht das JTAG Interface und muss man das nicht erst per Fuse abschalten, wenn man PORTC als normale GIO-Pins benutzen will?
nicht an dem PC0 Pin? Nein das LCD hängt an Port D und Port C möchte ich als Eingang nutzen. Mir geht es um die Syntax. [c] DDRC=0x00; // PORTC als Eingang festlegen while(1) { if (PINC & (1 << PC0)) { lcd_setcursor( 0, 1 ); lcd_string("Motor: I"); } else { lcd_setcursor( 0, 1 )
-
Thread
atmega 16 to atxmega16A4
Wenn dir's nur ums Lesen geht, ist das einfacher. Irgendwo in die Initialisierung des Controllers schreibst du [c]NVM.CTRLB |= NVM_EEMAPEN_bm;[/c] mit rein. Danach kannst du memory-mapped auf den EEPROM zugreifen: [c
ganzen "asm("sei");" und "asm("cli");" kannst du übrigens auch direkt "sei()" bzw. "cli()" machen. Das geht übrigens nicht erst seit den xmegas sondern auch schon vorher.
-
Thread
Led Cube Projekt
nichtmehr eingeschaltet. Hab sicherheitshalber auch den OE pin auf Masse gezogen. Aber der Spuk geht weiter. einige LED leuchten sogar dann noch wenn ich den betreffenden Transistor komplett entferne.
Config Portc = &B00000000 Config Portb = &B00000000 Config Portd = &B00000000 Dim Pause As Integer Pause = 500 Do Loop End Also laut Programm sollte alles dunkel sein. Aber der Cube sieht aus
-
Thread
mehrere ADC und UART
#include <stdio.h> #define Ausgang DDRC //Datenrichtung bestimmen #define Sensorspannung PORTC //Datenregister für PORTC #define ON |= (1<<PC0) //Pin C0 High setzten #define OFF &= ~(1<<PC0) //Pin C0 Low setzten /*Analog-Digital-Wandler-Initalisierung*/ void ADC_Init(void) {
jedes mal nur channel 1 nutzt, > überschreibe ich es doch jedes mal mit der 1 oder nicht? Darum gehts aber nicht. Was passiert mit dem Bit, welches die Referenzspannung einstellt und im selben Register beheimatet ist?
-
Thread
Digitale Signale mit Interrupt auslesen Probleme
. an anderen nicht (wie in den Oszi-Bilder sehr gut zu sehen. verwendet wurden: Ein belibiger PORTC pin -> triggert bei steigender Flanke an INT1(Oszi-Bild 0626) Bei allen PORTD-Pins ergibt sich nur ein komisches Signal(siehe Oszi-Bild 0624) Anstatt das sich das Signal nur bei steigender Flanke
lang. Die Frage ist nun: Warum toggelt er bei ALLEN PORTD-Pins nun "nonsens" und bei ALLEN PORTC-Pins gehts anständig ??? Ich Danke für jede Hilfe :-) [c]/* * TEST_1.c * * Created: 04.04.2012 13:42:59 * Author: LD */ #ifndef F_CPU #define F_CPU 8000000UL //atmega8a mit
-
Thread
Einstieg mit STM32 statt 8Bit Controller
auf dieser Grundlage die entsprechende Mikrocontroller-Architektur! Wenns dir allein ums Thema geht, wenn du ein oder zwei erste Gehversuche mit einem Mikrocontroller machen willst, dann ist das Tutorial, das dir A. K. schon empfohlen hast, ausgezeichnet. http://www.mikrocontroller.net/articles/AVR-Tutorial
längerfristig bei AVR mit GCC nervt, ist das PROGMEM-Gebastel. Mal kurz einen AVR GCC kompilieren geht auch nicht. Bei ARM Cortex gibt es eine riesige Auswahl, die PIC32 gibt es auch in DIP und mit Pinguino. Renesas RX ist auch OK, leider sind mir keine günstigen Einstiegsmodule bekannt. Wenn man
-
Thread
Servoansteuerung mit Timer (ATmega32)
Mit dem 10µs delay gehts nicht -> erhöht auf 50µs zu ungenau :( Wie wäre da dann der Code? mfg thomas
int main(void) { DDRC |= 1 << PINC0; //Status LED 1 aktivieren PORTC &= ~(1<<PINC0); DDRC |= 1 << PINC1; //Status LED 2 aktivieren PORTC |= 1<< PINC1; //Timer 1 - 20ms TCCR1B |= 1<<CS11 | 1<<WGM12; //Prescaler: -> 50Hz OCR1A = 40000
-
Thread
RGB-Fernbedienung am AVR - Problem mit IRMP
0x1234 //{ switch (irmp_data.command) { case 0x9A65: PORTC|=(1<<PC1); break; // Taste grün case 0x18E7: PORTC|=(1<<PC2); break; // Taste gelb case 0x1AE5: PORTC|=(1<<PC3); break; // Taste rot
Jetzt hab ichs. Ich darf nur das 8-Bit-Commandbyte verwenden. Jetzt gehts:-) Das IRMP ist ein Spitzenprojekt!!:-) Danke an dieser Stelle an Frank M. Frohe Ostern
-
Thread
Problem mit LED Schaltung, ich komme einfach nicht dahinter
Portb.2 = 1 Portb.3 = 1 Portb.4 = 1 Portb.5 = 1 Portb.6 = 1 Portb.7 = 1 Portc.0 = 1 Portc.1 = 1 Portc.2 = 1 Portc.3 = 1 Portc.4 = 1 Portc.5 = 1 Portc.6 = 1 Portc.7 = 1 Portd.0 = 1 Portd.6 = 1 Wait Warten Porta.0 = 0 Porta.1 =
Portb.2 = 0 Portb.3 = 0 Portb.4 = 0 Portb.5 = 0 Portb.6 = 0 Portb.7 = 0 Portc.0 = 0 Portc.1 = 0 Portc.2 = 0 Portc.3 = 0 Portc.4 = 0 Portc.5 = 0 Portc.6 = 0 Portc.7 = 0 Portd.0 = 0 Portd.6 = 0 Loop End
-
Thread
UART funktioniert unter OS X nicht mehr
the macro uart_init( UART_BAUD_SELECT(UART_BAUD_RATE,F_CPU) ); sei(); PORTC |= (1 << 7); // LED8 zeigt den Betrieb an. uart_puts("\n\nProgramm gestartet!\n\r"); while(1) { PORTC |= (1 << 6); } } [/c] Sobald ich uart_puts auskommentiere leuchten
Wenn man planlos rumändert ist es kein Wunder wenn es nicht geht: #elif defined(__AVR_ATmega644__) /* ATmega with one USART */ #define ATMEGA_USART0 //#define UART0_TRANSMIT_INTERRUPT SIG_USART_DATA #define UART0_TRANSMIT_INTERRUPT USART0_TX_vect
-
Thread
Codesequenz mehrmals brauchen = auslagern
> Wenn es sehr, sehr, sehr zeitkritisch ist, geht das auch per include. Das macht man dann aber eher per inline als per include.
Markus E. schrieb im Beitrag #2625482: > Aber es geht ja um den Code, nicht darum, was der Compiler daraus macht! Nö, es geht hier darum, den Code an der Stelle einzufügen, also genau das was der Compiler daraus macht! Sonst nimmt natürlich Funktionen
-
Thread
for Schleife
auslagern: > waits = 0; // signal wait = 0 > if(!(PINC&(1<<PC5))) // Abfrage PortC PC5Grün > leds_set_status(1,5); // schaltet LED 5 Grün auf ein > > else > leds_set_status(0,5); // schaltet LED 5 Grün auf aus
Hallo Der Code geht ganz hervorragend. Noch ein bischen angepasst, alles ok. Kleine Frage noch dazu. Wenn ich diesen Code mehrmals verwende, z.B. um unterschiedliche LED an verschiedenen Teilen im Prg zu schalten, muss
-
Thread
LED mit einaem Taster andimmen, mit anderem ausdimmen.
Ja geht nur bis 255. Hab mir den Wert von Pwm1a auf ein LCD ausgeben lassen und da konnte ich sehen, das es nur bis 255 geht. Wegen 8 Bit... Also der Folgende Code funktioniert einwandfrei: ---------
OK, ich hab nun endlich alles hinbekommen. Dimmen geht... Überlauf-Abfangen geht... Alles geht :-) Und das mit dem Elko: Also die LCD-Hintergrundbeleuchtung lässt sich auch ohne Elko wunderbar auf und abdimmen, es gibt keine Störungen oder flackern
-
Thread
ISR(SPI_STC_vect) wird nicht verlassen
Oke, hab den dezenten Hinweis verstanden, im Anhang mal meine zwei Dateien um die es primär geht;-) Im Prinip soll auf die SD-Karte mit Hilfe von Elm-Chans FAT Treiber geschrieben werden. Leider kommt er aber nie aus der disc-initialize Funktion raus. Auf der Suche woran es liegt bin ich drauf
Wenn im Code nun einige for(;;) schleifen drin sind dann sind das überreste von der Fehlersuche. Am PORTC sitzen 8 LEDs. Beim Momentanen Programmcode leuchtet am ende jede zweite LED(wie in der ISR(SPI_STC) definiert). Wenn das so zu komplex, oder ich einfach zu wirr schreib, per Forum is, gebt mir
-
Thread
Einfache Funkübertragung
Config Portd.6 = Output Led2 Alias Portd.6 'LED 2 Config Portc.0 = Output Funkpin Alias Portc.0 'geht an die Rosa Leitung des Senders (signal) dann nur Masse Atmega mit Masse Handsender verbinden Funkcode_complete = ""
-
Thread
Unbekanntes IC im Lagesensor einer PM-Maschine
letzten Bild sind die 3 ICs zu erkennen (unter den Spulen). Zu den Steckern: Der 4-Pin-Stecker geht auf die Spulen, der 5-Pin-Stecker auf die ICs.
Hallo zusammen, Ich danke allen Helfern! Mittlerweile geht der Sensor. Habe die Vorwiderstand-Methode ausprobiert, und es hat gut geklappt. Meine Vermutung über die Vcc- und Gnd-Pins war anscheinend richtig. Nur einen Pull-Up muss man extern noch vorsehen.
-
Thread
Schreibweisen
port umschalten können auf einen anderen, > wert ist schon vorgegeben. > > PORTB = 0xFF ----> PORTC = 0xFF Was genau willst du da jetzt machen? PORTB = PORTC; PORTC = PORTB; all das ist zulässig. Für dich ist PORTB oder auch PORTC programmtechnisch wie eine 'Variable'. Weist du
noch umständlich geht's wohl nicht, oder?
-
Thread
ATMEGA16 LCD 2x8 ansteuern (4Bit-Interface)
; } void init() { DDRA=0xFF; // DDRA als Ausgang DDRC=0xFF; PORTA=0x00; PORTC=0x00; } void send(int VeeEnRsRWData4321) { PORTA=1<<En; // Enable delayus(50); PORTA=VeeEnRsRWData4321; // Vee En Rs RW Data4-1 delayus(100); PORTA=0<<En; // Werte
lcd_init(); int i=0; while(i<10) // nur zum Anzeigen, dass While-Schleife startet { PORTC=0x0F; delayms(100); PORTC=0xF0; delayms(100); i++; } PORTC=0x00; while(1) { // H WriteChar(01011000); WriteChar(01011000); delayms(500);
-
Thread
Tastermatrix mit µC ansteuern (für MSM2 MP3 Modul)
} void Taster6 (int time) { PORTC = KS2; PORTB = KCS2; delay (time); PORTC = 0; PORTB = 0; } void Taster7 (int time) { PORTC = KS2; PORTB = KCS3; delay (time); PORTC = 0; PORTB = 0; } void Taster8 (int time) { PORTC = KS3; PORTB = KCS1; delay (time); PORTC = 0; PORTB = 0; } void Taster9 (int time) { PORTC = KS3; PORTB = KCS2; delay (time); PORTC = 0; PORTB = 0;
-
Thread
Projekt Fußtreter
was ich mti meinen delaysachen hab sieht so aus: z.b. if ((bit_is_clear (PIND,3)) && (PORTC & 1 << 5) && (prog == 1)) { blink_time = 50; // n-mal schnell blinken blinken (10); blink_time = 200; // n-mal langsam blinken blinken (4); PORTC &= ~(1
: > >> Alles per Funk. > > Wer Funk kennt nimmt Kabel. :-) > Gruss > Harald Aber sonst gehts noch :) Grüße
-
Thread
Probleme mit Uart und ISR
servopos[4]>count) temp |=(1<<PD6); if(servopos[5]>count) temp |=(1<<PD7); if(servopos[6]>count) PORTC |=(1<<PC0); else PORTC &=~(1<<PC0); if(servopos[7]>count) PORTC |=(1<<PC1); else PORTC &=~(1<<PC1); PORTD = temp; if(count<2000)count++; // Die Impulse sollten alle 2ms gesendet
servopos[4]>count) temp |=(1<<PD6); if(servopos[5]>count) temp |=(1<<PD7); if(servopos[6]>count) PORTC |=(1<<PC0); else PORTC &=~(1<<PC0); if(servopos[7]>count) PORTC |=(1<<PC1); else PORTC &=~(1<<PC1); PORTD = temp; if(count<2000)count++; // Die Impulse sollten alle 2ms
-
Thread
Midi Stepsequencer controller
' Tasten-Merker Config Lcd = 20 * 4 Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , E = Portc.5 , Rs = Portc.4 Dim I As Byte , J As Byte , X As Byte Config Portc.6 = Input 'launch btn Config
.2 = 1 ' internen Pull-Up aktivieren für Taster ' Portc.5 = 1 ' Portc.4 = 1 Portb.2 = 0 Portb.1 = 0 Goto Start_routine Start_routine: 'Welcome-screen Cls I = 0 Locate 1 , 1 Lcd "Welcome :)"
-
Thread
AVR mehr Speicher (RAM) als erwartet
in produktivem Code würde ich mich auf nichts verlassen, was nicht im Datenblatt steht, aber hier geht's um ein simples Testprogramm, und der Anwender hat sich empirisch mit dem Debugger versichert, dass der initiale Inhalt des Stackpointers seinen Erwartungen entspricht. Die Chance, dass man per
LDI R18, $FF OUT DDRB, R18 LDI R18, $FF OUT DDRC, R18 OUT PORTB,R30 OUT PORTC,R31 Testend: RJMP Testend [/avrasm]
-
Thread
DS18S20, Atmega8, AVR Studio
LED unzwar bei 1000ms Einschaltverzögerung (siehe code) blinkt die Led 108 mal in 30 Sekunden. PORTC &=~(1<<PC2); // Gelbe LED aus _delay_ms (1000); // 1sec auslassen PORTC |=(1<<PC2); // Gelbe LED ein Wie kann ich das so einstellen das es auch wirklich 30 mal blinkt in
inttypes.h> #define F_CPU 3686400l void main (void) { DDRC = 0xFF; //PortB = Ausgänge PORTC = 0x00; char i=0; lcd_init(); while(1) { PORTC &=~(1<<PC2); // Gelbe LED aus _delay_ms (500); // 1sec auslassen PORTC |=(1<<PC2); // Gelbe LED ein _delay_ms
-
Thread
Atmega8 - Programmierung in C
(PINB, PB0)) { timer_init(); } } ISR(TIMER1_OVF_vect) { PORTC |= (1<<PC0); TIMSK &= ~(1<<TOIE1); } int main(void) { port_init(); TCCR1B = (1<<ICNC1)|(0<<ICES1)|(1<<CS11); while(1) { if(bit_is_set(PINB, PB1)) uController_init
nach + in der Spannung (Sinus) erfolgt. In der Hinsicht muss ich mir noch etwas überlegen. Es geht hier jetzt erst einmal darum, dass der Timer korrekt funktioniert. In dem oben angehängten C-File habe ich bereits kleinere Fehler ausgebessert, wie die Zuordnung der Pins als Ein- bzw. Ausgang.
-
Thread
Problem mit Code. Neuling braucht Hilfe.
Man kann PWM höllisch kompliziert machen und dann wegschmeißen, weil es nicht geht. Oder man nimmt gleich einen Timerinterrupt für die PWM und läßt das Main nur die Ablaufsteuerung machen. Peter
F_CPU 1000000UL #define RED PC5 #define GREEN PC4 #define BLUE PC3 #define RGB_PORT PORTC #define RGB_DDR DDRC #include <stdint.h> #include <avr/io.h> #include <util/delay.h> int main(void) { uint16_t i=0; uint16_t k=0; RGB_DDR=255; while(1) { RGB_PORT &
-
Thread
Interrupt Problem
interrupt.h> int16_t a; ISR(INT1_vect) { a++; if(a == 2) { PORTD |= (1<<PD5); PORTC |= (1<<PC0); loop_until_bit_is_clear(PIND, PD3); a=0; } PORTD &= ~(1<<PD5); } int interrupt (void) { MCUCR= (1<<ISC11 ) | (1<<ISC10); // Interrupt steigende flanke GICR
Uc reseten ohne das man an den > Augangspins bemerkt? kommt auf das Progamm an, das "reseten" geht ja in ein paar µC in der Zeit sind die Ausgänge halt Eingänge das kann man aber schlecht von aussen feststellen. Noch mal die Frage, warum startest du nicht einfach mal den simulator?
-
Thread
Attiny13 Schalter
Byte Ddrd = Bits(pd7 , Pd6 , Pd5 , Pd4 , Pd3) 'angegebene Portd Pins als Ausgang Set Portc.0 'angenommen Taster an PC0 und tastet nach GND, Pullup Widerstand einschalten Config Timer1 = Timer , Clear Timer = 1 , Prescale = 64 'Mode 4 - CTC, timer startet
http://blackstrom.derschwarz.de/avr/avr_uhr/index.shtml. Das macht aber nichts, denn das Lauflicht geht immer noch nicht! Der Taktgeber ist jetzt ein 1Mhz Quarzoszillator. Das Lauflicht liegt an Ddrd = Bits(pb0 , Pb1 , Pb2 , Pb3 , Pb4) und der Taster liegt an portb.5 gegen +. Ich habe das Programm