-
Thread
8Bit Timer Atmega16/Overflow Interrupt
TIMSK |= (1<<TOIE0); // Global Interrupts aktivieren sei(); //init LCD RS_0; PORTC = 0b00111000; E(); wait(); PORTC = 0b00001100; E(); wait(); PORTC = 0b00000001; E(); wait(); while (1) { if (TCNT0 == 0xff) { zaehler++; } if (zaehler
erlauben TIMSK |= (1<<TOIE0); //Global Interrupts aktivieren sei(); //init LCD RS_0; PORTC = 0b00111000; E(); wait(); PORTC = 0b00001100; E(); wait(); PORTC = 0b00000001; E(); wait(); while (1) { //Licht if (PINA&(1<<PINA5)) { DDRA |=
-
Thread
Mein erstes Programm mit C
als ausgang konfigurieren PORTB = 0xff; // erstmal alles abstellen DDRC = 0xff; PORTC = 0xff; while (1) { PORTB =0b11111010; PORTC =0b00000011; _delay_ms(10); PORTB =0b11111101; PORTC =0b00000100; _delay_ms(10); } }
pins als ausgang konfigurieren PORTB = 0xff; // erstmal alles abstellen DDRC = 0xff; PORTC = 0xff; while (1) { PORTB =0b11111010; PORTC =0b00000011; _delay_ms(10); PORTB =0b11111101; PORTC =0b00000100; _delay_ms(10); } } das ist der Code für die
-
Thread
20x4 LCD am Atmega16: Welche Ports?
Display am Atmega16 in 4bit-Modus ansteuern und habe gleich hier im AVR-Tutorial nachgelesen wie das geht. Doch sind bei mir die Ports PD2 & PD3 für zwei Interrupts besetzt. Im Tutorial sind die aber für das Display empfohlen. Kann ich stattdessen beliebige Ports verwenden? Ich würde gerne die Ports
aufpassen. Schau dir die Appnote 'AVR042: AVR Hardware Design Considerations' von Atmel an. Bei PORTC musst du auf die JTAG Schnittstelle aufpassen und per [[AVR Fuses]] abschalten. Wenn dein Programm INT0 und INT1 benutzt, sind die an PD2 und PD3 gebunden. Die kannst du nicht hardwaremäßig verlegen
-
Thread
LCD Uhr mit Alarmfunktion mit Drehencoder in BASCOM (Ein kleines Projekt für BASCOM Änfänger Vol3)
MWS : um was gehts denn hier ?????
"M8DEF.DAT" $baud = 38400 $crystal = 8000000 Config Lcd = 20 * 4 Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 , E = Portc.1 , Rs = Portc.0 Dim Wert As Integer Wert = 0 Config Portd = Input Portd = 255 Enc_a Alias Pind.3 Enc_b Alias
-
Thread
Interrupts Programm wird unterbrochen warum?
<util/delay.h> #include <avr/interrupt.h> void herunterfahren(void) { PORTA=0xF0; PORTC=0x03; //PIN C2 auf 0 setzen für 12V int y; for(y=0;y<1000;y++) { _delay_ms(1); // Wartezeit starten bis 12V abgeschaltet } PORTC=0x01; //Pin C1 auf 0 setzen für
Okay mein COde ist nicht der übersichtlichste und nicht der schönste und das mit dem PORTC=0x03 hab ich nur gemacht damit damit Pin C0 und Pin C1 auf 1 sind mittlerweile hab ich gelernt, dass es eleganter geht indem man eines einfach nur an die gewünschten stellen schiebt. Ich versuche ja
-
Thread
Soft-PWM macht nicht was es soll
; ISR(TIMER1_COMPA_vect) { static uint8_t step; // switch led if (step == 0) { PORTC |= (1 << PC4); OCR1A = timings[0]; } else { PORTC &= ~(1 << PC4); OCR1A += timings[step]; } // set next step step++; if (step == steps) { step = 0;
getestet. Tut er das was der Autor behauptet? Wenn nein, dann den Autor kontaktieren Wenn ja, dann gehts weiter. Dann macht man erste kleine Veränderungen. Zwischendurch immer wieder kontrollieren: tut er noch? Weitere Veränderungen. Dazwischen immer wieder: Tut er noch? Und wenn man dann an einem
-
Thread
Bitstrukturen mal wieder
&= ~(1<<PD1) [/c] geht es ja kaum noch! Und da wundert es mich einfach, daß das alle so hinnehmen. Das muß ja nen Grund haben, oder? Gruß
solche Family Headerdateien für CCS angelegt war zwar ein Haufen Aufwand aber das Programmieren geht sehr komfortabel. IAR hat solche Headerdateien für MSP auch im Angebot.
-
Thread
TASTENABFRAGE
Pull-Down Widerstand, dann änderte in: DDRC &= ~( 1 << PC0 ); // Eingang: Taster an PC0 PORTC &= ~( 1 << PC0 ); // interner Pull-Up NICHT aktiviert if ( debounce(&PINC, PC0) == 0 )
Der Pull-Down Widerstand (Down weil es "runter" auf Spannungspotential GND 0V geht und nicht Up auf Spannungspotential Vcc z.B. +5V) sorgt einmal für eine elektrische Verbindung und zum zweiten für eine Strombegrenzung, wenn der Stromkreis aktiviert wird (Ohmsches Gesetz). Wie
-
Thread
Reset verhalten MEGA8
PORTC=0b00000011; _delay_ms(1); PORTC|=(1<<4); _delay_ms(1); PORTC&=~(1<<4); _delay_ms(50); PORTC=0b00000011; _delay_ms(1); PORTC|=(1<<4); _delay_ms(1); PORTC&=~(1<<4); _delay_ms(50); /*4 bit*/ PORTC=0b00000010; _delay_ms(1); PORTC|=(1<<4); _delay_ms(1); PORTC&=~(1<<4); _delay_ms(50); /*2 Zeilen*/ PORTC=0b00000010; _delay_ms(1); PORTC|=(1<<4); _delay_ms(1); PORTC&=~(1<<4); _
-
Thread
DS1820 an ATtiny25 in C, Massive Timingprobleme
zurück. Ich hatte in meiner geistigen Umnachtung nicht den DS1820 vor Augen, sondern den TSic306. Da geht es wesentlich genauer zu. Hier müsste es auch entspannter klappen.
#endif /* ifdef DDRB */ #ifdef DDRC #define ddrc (*(volatile byte8bits_t*)(&DDRC)) #define portc (*(volatile byte8bits_t*)(&PORTC)) #define pinc (*(volatile byte8bits_t*)(&PINC)) #endif /* ifdef DDRC */ #ifdef DDRD #define ddrd (*(volatile byte8bits_t*)(&DDRD)) #define portd (*(volatile
-
Thread
ATmega168 verhält sich mit ISP anders
gefunden habe ist das ein Pull-Up am SCK zu gehen scheint ... was heisst scheint, mit Pull-Up an SCK gehts ... habt Ihr eine Erklärung dafür ? Ich freue mich zwar wenn es geht, aber allein schon des Lernens wegen möchte ich verstehen warum der Pull-Up hilft. Hängt es vielleicht mit den internen Pull-Ups
den PortC nehmen kann ?
-
Thread
Aus Schleife entfliehen
einen PIC 16F73 programmiert. Es funktioniert auch alles soweit das ich den Counter mit einem Taster (PORTC, 2) starten kann. Doch irgendwie schaffe ich es nicht das der Counter entweder durch einen weiteres drücken des Tasters bzw. bei erreichen der Zahlen 0000 stoppt. Der Counter wird gestartet sobald
auch vollkommen ignoriert. Ich sehe auch nicht, daß diese was mit nem Interrupt zu tun hat. Oder geht es jetzt garnicht mehr um die Routine "ZEAHLEN"? Peter
-
Thread
Atmega16 EA DIP204-6 4-line
Dann bleibt aber die Frage: was geht nicht? Wie sieht es aus?
ja, aber ich hatte nur ein Semester Microcontrollertecnich und es ist nicht meine Stärke. Mein BA geht nicht um uC, geht um Filters, aber ich muss leider Daten anzeige. :-(
-
Thread
ADC löst keinen Interrupt aus (ATMega 16)
<avr/interrupt.h> int main(void) { DDRB = 0x1F; //Portkonfigurationen DDRD = 0xF8; PORTC = 0xFC; PORTB |= (1<<0)|(1<<1)|(1<<4); ADMUX = (1<<REFS0)|(1<<ADLAR)|(1<<MUX2)|(1<<MUX0); //Analog-Digitalwandler-Konfigurationen ADCSRA = (1<<ADEN)|(1<<ADSC)|
C-Compiler (Win-AVR) am ende selbständig eine endlosschlaufe einfügt. Aber wenn ich es manuell mache geht es! Danke! Erdbewohner
-
Thread
TWI Initialisierungsproblem
*Formale Kontrolle des Quelltextes* // #1 PORTC.DIRSET |= PIN0_bm; // Als Ausgang TWI SDA PORTC.DIRSET |= PIN1_bm; // Als Ausgang TWI SCL // #2 PORTD.PIN0CTRL=PORT_OPC_WIREDAND_gc | PORT_ISC_BOTHEDGES_gc; PORTD.PIN1CTRL
Es geht was, zwar noch nicht so wie gewünscht, aber er sendet was. Danke Stefan für deine Hilfe, jetzt kann ich weiterarbeiten! eine Frage noch, woher hast du denn die Beispiele ? Ich find sie nicht auch
-
Thread
Eclipse für AVR konfigurieren
Projekt erstellt -neue C Datei main.c erstellt #include <avr/io.h> int main(void){ DDRC=0xff; PORTC=0x03; } -Bei Project->Make Target->Build main erstellt und auf Build geklickt und eim kompilieren kommt folgender Fehler: make main cc main.o -o main process_begin: CreateProcess(NULL,
Project->Make Target->Build main erstellt und auf Build geklickt Das funktioniert dafür nicht. Es geht: Project->Build (oder eine der Varianten) oder Rechtsclick aufs Projekt->Build Configurations->All (oder select) oder "Hammer" Oliver
-
Thread
Initalisierung
Portb.3 = 1 Waitms 20 Portb.4 = 1 Waitms 20 Portb.5 = 1 Waitms 20 Portc.0 = 1 Waitms 20 Portc.1 = 1 Waitms 20 Portc.2 = 1 Waitms 20 Portc.3 = 1 Waitms 20 Portc.2 = 0 Waitms 10 Portc.1 = 0
Waitms 20 Portb.4 = 0 Waitms 20 Portb.5 = 1 Waitms 20 Portb.5 = 0 Waitms 20 Portc.0 = 1 Waitms 20 Portc.0 = 0 Waitms 20 Portc.1 = 1 Waitms 20 Portc.1 = 0 Waitms 20 Portc.2 = 1 Waitms 20 Portc.2 = 0 Waitms 20 Portc.3 = 1 Waitms 20
-
Thread
Ein kleines Projekt für BASCOM Änfänger Vol2
.2 Else Reset Portc.2 If Blau > Pwm Then Set Portd.5 Else Reset Portd.5 If Blau > Pwm Then Set Portd.2 Else Reset Portd.2 If Blau > Pwm Then Set Portc.3 Else Reset Portc.3 If Blau > Pwm Then Set Portc.0 Else Reset Portc.0 Return [/code]
-
Thread
Lochraster Projekt?
Portb.4 = 1 Waitms 10 Portb.4 = 0 Waitms 10 Portb.5 = 1 Waitms 10 Portb.5 = 0 Waitms 10 Portc.0 = 1 Waitms 10 Portc.0 = 0 Waitms 10 Portc.1 = 1 Waitms 10 Portc.1 = 0 Waitms 10 Portc.2 = 1 Waitms 10 Portc.2 = 0 Waitms 10 Portc.3 = 1 Waitms 10 Portc.3 = 0 Waitms 10 'Knight Rider Vorlauf 10 LED´s Portc.1 = 1 Waitms 10 Portc.1 = 0 Waitms 10 Portc.0 = 1 Waitms 10 Portc.0 = 0 Waitms 10 Portb.5 = 1 Waitms 10 Portb.5 = 0 Waitms 10 Portb.4 = 1 Waitms 10 Portb.4 = 0 Waitms 10 Portb
-
Thread
Wie einen HAL bauen
gemeinsamen Nenner bilden. Funktionalität, nicht Register. Register interessieren erst wenn es darum geht, den HAL zu implementieren. Aber die Schnittstellen eines HAL stellen Funktionalität bereit.
natürlich für die meisten Kombinationen das im HAL hinterlegen: -> PORTB = PINB, PORTB, DDRB -> PORTC = PINC, PORTC, DDRC usw... So richtig schön finde ich das allerdings ned, sollte sich aber in Grenzen halten. Nur sind das dann wieder 3 "Variablen" mehr, die ich auch im Objekt speichern muss. Im
-
Thread
problem mit Header Datei
(am ADC) { c=adc(0); if( c <= 158 ) { PORTD = ( 1 << LED1 ); PORTC=0x01; } else if( c <= 374){ PORTD = ( 1 << LED2 ); PORTC=0x00; _delay_ms(300); PORTC=0x01; _delay_ms(300); } else if( c < 1023) { PORTD = ( 1 << LED3 ); PORTC=0x00; _delay_ms(1000); PORTC=0x01; _delay_ms(1000); } else PORTD = 0; PORTC=0x00; } } void init_ports() { DDRD=0xFF; //PORTD als Ausgang
-
Thread
Knight Rider!
dir mit google ein Online Bascom Tutorial Du brauchst Unterlagen. Ideal wäre ein Buch, aber es geht auch mit Online Tutorien. Was aber nicht geht: Zu glauben man könne programmieren lernen, indem man sich in einem Forum durchfragt.
Oh okay jetzt gehts!
-
Thread
Testgerät für SUBD-Leitungen
usw. testet. Es werden verschiedene Kombinationen hergestellt. Dh. das es z.b. von Pin 1 zu Pin3 geht oder von Pin 5 zu Pin 9. Es könnte halt jede Kombination möglich sein. Das ganze soll über 2 LEDs anzeigen ob die Leitung ok ist oder nicht (Grün oder Rot). Könnte man so etwas über einen Microcontroller realisieren? Ich denke mal wenn das geht könnte man auch weitere Funktionen einbauen. Wie z.b. Kurzschlussüberprüfung oder eine Prüfung ob die Leitungen verdreht sind? Wenn ihr bessere Ideen habt wie man es am besten aufbaut wäre es nett
-
Thread
ascii to int
OCR0A = empfangen; } } ISR(INT0_vect) { TCNT0 = 0; } ISR(TIMER0_COMPA_vect) { PORTC |= (1 << PC5); _delay_us(200); PORTC &= ~(1 << PC5); } [/c] Der Code sieht mitlerweile so aus und ich weiß echt nicht, wo noch der Bock liegt. Der Controller soll halt die Zeit zwischen 0 und
schleierhaft. Also: [c] char empfangen[5]; ... uart_gets(empfangen,4); [/c] Und dann geht das hier nicht mehr: [c] OCR0A = empfangen; [/c] Das musst Du anders lösen -> Deine Hausaufgabe ;-)
-
Thread
Problem mit PIC und Bluetoothmodul
include <delays.h> #include <stdio.h> #include <sw_uart.h> #include <usart.h> #define SWTXD PORTC #define SWTXDpin 6 #define TRIS_SWTXD TRISC #define SWRXD PORTC #define SWRXDpin 7 #define TRIS_SWRXD TRISC #pragma code void main(void) { OpenUART(); //make BlueMod visible + settings
man am Anfang mehrere Fehler gleichzeitig eingebaut hat. Du kannst dann einen Fehler beheben und es geht immer noch nichts, daraus zu schliessen das die Änderung deswegen aber keinen Einfluß hat ist dann aber auch verkehrt. Ein planloses rumprobieren führt garantiert nicht zum Ziel.
-
Thread
twi atmega c an andern Port
habe mir selbst twi Funktionen geschrieben, starten, schreiben etc. funktioniert auch alles super an PORTC PIN 0 SDA und PIN 1 ist SCL. Wie im betreff erwähnt schreib ich in C mit Codevision und einem atmega32. Wie kann ich die beiden Signale nun an anderen Pins ausgeben? Geht das überhaupt? Warscheinlich
Giebel schrieb im Beitrag #1862821: > Wie kann ich die beiden Signale nun an anderen Pins ausgeben? Geht das > überhaupt? Gar nicht. Du benutzt den HardWare TWI, und der fest verdrahtet aud diese beiden Pins. > Die Schaltung ist halt der Atmega und ein PCF8574A mit ein paar Leds. An > PORTC funktioniert
-
Thread
DS1820 Adresse auslesen
kannst du denn eine Temperatur auslesen? :was mir sonst noch so auffällt ... *ein Array mit 8 Byte geht von 0 bis 7 (berichtige mich wenn das bei Bascom anders ist) *die gefundene Sensoradresse wird bei dir immer dem Feldelement mit dem Index 1 zugewiesen! Sascha
Hallo, ja genau. Sie ist in Bascom integriert.. 1. Ne, bei Bascom geht das erst bei 1 los und dann bis 8. 2. Ja, und die restlichen Bytes werden dann den folgenden Feldelementen zugeteilt ;) Wolfgang
-
Thread
LCD funktioniert nicht- YL162
Nein. Wenn du den Kontrast ohne Initialisierung so einstellst, das die (der) Balken zu sehen ist, geht der nach erfolgreicher Initialisierung weg. Wenn du mit dem Kontrastregler den Balken wegmachst wirst du auch keine Zeichen sehen. MfG Spess
hängt denn jetzt was? RS und EN auch and Port B oder an Port C? > > So wie es steht, C. Nö! Das geht so nicht. Die müssen alle am gleichen PORT hängen. Und diesen Port hast du als PORTB angegeben.
-
Thread
Sleep Modus arbeitet nicht
; Warten auf Interupt Die LED an PortB blinkt nun im 5 Sekunden Rhythmus während die LED an PortC im 152 Sekunden Rhytmus blinkt. Aber warum geht die CPU nicht in den Sleep Modus?
@Norbert Hanebeck (nobbyh) >Aber warum geht die CPU nicht in den Sleep Modus? Zuviel Red Bull? ;-)
-
Thread
pgm_read_byte_far
{ char MyChar; DDRC = 0xFF; do { MyChar = pgm_read_byte_far(FAR(MyBitmap)); PORTC = MyChar; } while(MyChar); } [/c] Built Log: [code] Create eeprom image (ihex format) avr-objcopy -j .eeprom --no-change-warnings --change-section-lma .eeprom=0 -O ihex Test.elf "Test.eep
{ char MyChar; DDRC = 0xFF; do { MyChar = pgm_read_byte_far(FAR(MyBmp64)); PORTC = MyChar; } while(MyChar); } [/c]
-
Thread
Daft Punk Tisch
wohl eher: PORTA = 0b01010101; //Erstellt das 1 Schachbrettmuster PORTB = 0b10101010; PORTC = 0b01010101; PORTD = 0b10101010;
morgen nochmal hoch. Schaltplan zur Musikerkennung habe ich nur im Kopf. Da es jetzt ins Kino geht gibts morgen den Rest
-
Thread
7x5 Matrix lässt falsche LEDs leuchten
liegen da ich alle LEDs in der Matrix auf die verkabelung überprüft habe. Woran es liegen könnte: PORTC bzw. PORTD haben im 0 Zustand trotzdem eine geringe Spannung (sowas stand glaub ich mal im Datenblatt) und nach 4 Stunden stecken, überprüfen und programmieren würde ich jetzt ungern alles neumachen
Transistor auf dem Reset Port befindet wo ja ein 10 KOhm Widerstand steckt. l-: Nun ja, jetzt gehts zumindest, werd ich halt Reset wo anders hintun.
-
Thread
Verstehe TWI überhaupt nicht
hwstack = 32 $framesize = 32 $swstack = 32 $lib "I2C_TWI.LBX" Config Twi = 400000 Config Scl = Portc.0 Config Sda = Portc.1 Const Tlc1 = &B11000000 Const Ledout0 = &H14 Or 128 I2cinit I2cstart I2cwbyte Tlc1 I2cwbyte 0 I2cwbyte 0 I2cstop I2cstart I2cwbyte Tlc1 I2cwbyte Ledout0
@MWS: Also Portc.0 und Portc.1 kann ich in den verschiedensten Frequenzen blinken lassen. Und wenn ich das Programm von dir aufspiele und Config Scl = Portc.0 Config Sda = Portc.1 weglasse, dann kann ich die LED's
-
Thread
NeuesOS für AVR Mikrocontroller
Hallo ??? Kann mir jetzt einmal jemand sagen, um was es hier eigentlich geht ?? Das herumhacken und herumzicken geht langsam auf dem sack. Geht es jetzt um technische weiter entwicklung oder ob jemand etwas veroeffentlicht unter GNU und dabei wo moeglich einige Code fragmente
Roman65536 schrieb im Beitrag #1869372: > Kann mir jetzt einmal jemand sagen, um was es hier eigentlich geht ?? > Das herumhacken und herumzicken geht langsam auf dem sack. Hättest Du erstmal ruhig bis zum Ende gelesen, hättest Du gemerkt, dass alle Wogen bereits wieder geglättet sind. > Geht es jetzt
-
Thread
seltsames Phänomen Ausgabe auf LCD HD44780
0xFF; // PortB als Ausgang schalten DDRC = 0xFF; // PortC als Ausgang schalten DDRD = 0x00; // PortD als Eingang schalten PORTB = 0x1C; PORTC = 0x00; PORTD = 0x00; // interne Pull-ups an PORTD deaktivieren
Gedöns mit PORTB ist, soweit ich das auf die Schnelle gesehen habe, auch in allen Fällen gleich nur PORTC wird anders behandelt. Alles in allen sieht es so aus, als ob man die Funktionalität leicht mittels Tabellen und einer Abarbeitungsmaschine (ähnlich einer State-maschine) einfach implementieren
-
Thread
GrafikLCD an ATmega328
driver-for-el-backlit-samsung-lcd/. Diesen habe ich ein wenig auf meinen Controller angepasst. Ich benutze den PortC für die Displaysteuerung, die Ports -B und -D für die Datenübertragung (PortB untere 4Bit PortD obere 4Bit). Es funktioniert auch im Prinzip alles genauso wie ich mir das vorstelle, doch leider immer
problem dürfte an variablenüberlauf liegen, unsingned char durch uint16_t ersetzen. geht dann zumindest bei lcd 160x160 problemlos
-
Thread
Probleme mit Timer bei Phasenanschnitt
Interrupt erlauben TIMSK0 |= (1<<OCIE0A); } ISR( TIMER0_COMPA_vect ) { TCNT0 = 0; PORTC |= (1 << PC5); _delay_us(100); PORTC &= ~(1 << PC5); } [/c] Problem ist jetzt nur, das nicht erst gewartet wird, sondern der Impuls direkt am Nulldurchgang kommt (nach meinen Beobachtungen am
while(1) { } } ISR( INT0_vect ) { TCNT0 = 0; } ISR( TIMER0_COMPA_vect ) { PORTC |= (1 << PC5); _delay_us(100); PORTC &= ~(1 << PC5); } [/c] Soweit ich alles richtig verstanden habe, sollte das Programm ja nun so aussehen. Ich habe Prescaler auf 256 geändert. So müsste
-
Thread
Zusammenfassen von 3 externen Interrupts?
Anwendung sinnvoll ist, geht das. Sofern du avr-gcc benutzt: http://www.nongnu.org/avr-libc/user-manual/group__avr__interrupts.html#gaa87c0c624b62f40a17539be6946c3e26 Oliver
all Interrupts while(1) { } } ISR(INT2_vect) // INT2 on PB5 { PORTC ^= 0x04; _delay_ms(500); EIFR |= (1<<INTF2); // Clear Int.-Flag } ISR(INT1_vect) // INT1 on PB2 { PORTC ^= 0x02; _delay_ms(500); EIFR
-
Thread
AVR-Port über Funktionswert konfigurieren
aus, dass die Zentrale nichts darüber weiß und auch nicht wissen soll, dass das auf dem AVR zb der PORTC und dort der Pin 0 ist. Die Zentrale arbeitet einfach nur mit abstrakten, virtuellen Nummern. Es sagt dem AVR: schalte den Anschluss 5 auf Ausgang, und der AVR muss dann selbst wissen, dass das PORTC
DDRB, &PORTB, &PINB, 1<<PB4 }, // 4 { &DDRB, &PORTB, &PINB, 1<<PB5 }, // 5 { &DDRC, &PORTC, &PINC, 1<<PC0 }, // 6 { &DDRC, &PORTC, &PINC, 1<<PC1 }, // 7 { &DDRC, &PORTC, &PINC, 1<<PC2 }, // 8 { &DDRC, &PORTC, &PINC, 1<<PC3 }, // 9 { &DDRC, &PORTC, &PINC, 1<<PC4 },
-
Thread
switch, include
auf die Vaiable ERR_FLAG. Die LED löst in der if Bedingung nicht aus. Weiß jemand warum nicht? ERR geht soweit ich das bis jetzt getestet habe.Auch die Data stimmt.
Natürlich habe ich unrar, aber das geht nicht mit allen rar-Dateien. Ich habe mich aber auch nie darum gekümmert warum das so ist, weil ich es nicht brauche. Warum soll ich mich mit dem 7845. Kompressionsformat rumplagen, nur weil manche
-
Thread
LED-Fading geht nicht
Ah ok beim ATmega8 ist der OC1A nicht auf PD5 sondern PB1. Umgestellt -> geht Aber jetz seh ich das flackert ja wie bescheuert beim dimmen. Gibts da nich was besseres, oder geht das nicht besser mit PWM?
void wait_us(int mikroSec) { _delay_loop_2(1*(F_CPU/(1000000/4))*mikroSec); } while(1){ PORTC =0b00000001; wait_us(1667); PORTC=0b00000000; wait_us(1667); [/code] Erst wenn ich wait auf 1520 setze erhalte ich genaue 300Hz.
-
Thread
TWI - Hilfe!
Programmieren ist nie einfach, da man sein Köpfchen anstrengen muss. Mit Copy/Paste fremden Code verwenden, geht in den meisten Fällen schief, da selten klar ist, was genau der Programmierer mit genau diesem Stück Code erreichen wollte. Anders sieht es mit Libs aus, die sind idR dokumentiert, doch auch dort musst
Schleife genommen und die verwendeten Pins als WiredAND gesetzt! Ich möchte jetzt mal die SCL an PortC messen, hab allerdings nix angeschlossen! Ist das ein Problem wegen dem ACK? ..auf jedenfall kommt nix raus :( hab mal mein sachen hochgeladen (incl. TWI header ) -> wo ist der fehler? Gruß
-
Thread
SHT71 Kabellänge?
Wieso wird im Programm für einfache Anweisungen, wie das Setzen von Bits, rcall verwendet? Das geht mit Makros viel effizienter. Grüße, Peter
Also hier mal der Code, der die Feuchtigkeit und Temperatur abruft: [avrasm].equ SENSOR_PORT = PORTC .equ SENSOR_DDR = DDRC .equ SENSOR_PIN = PINC .equ PIN_DATA = 2 .equ PIN_CLK = 1 .equ Zahl = 4010 //d1 für Temperatur berechnen mit 10^3 .equ C1 = 2046 //Gerundet
-
Thread
Atmega Ports "durchzählen"
) { DDRA = 0xff; //PORTA als Ausgang DDRC = 0xff; //PORTC als Ausgang PORTA = 0xff; //Alle LEDs aus PORTB = 0xff; //Alle LEDs aus while (1) { PORTA = 0x01; PORTC = 0x01; long_delay
for (j=0; j<5; j++) { for (i=0; i<4; i++) { z <<= 1; PORTC = z; long_delay(300); } PORTC = 0x01; s <<= 1; PORTA = s; long_delay(300); z = 1; } } return 0; } [/
-
Thread
[AVR] Controller reagiert auf falsche Zahl.
PORTC &= ~(1<<PC0);; //reset trigger channel } return 0; } [/c]
PORTB |= (1<<PB1); //reset if(dat==123) { //trigger condition HIER IST PROBLEM PORTC |= (1<<PC0); //trigger pulse PORTB |= (1<<PB6); //light LED } else { PORTB &= ~(1<<PB6); //darken } } PORTC &= ~(1<<PC0); //reset trigger channel
-
Thread
LCD und lesen des AC
0x05; LCD_DDR2 = 0x00; LCD_PORT1 |= (1 << E); #ifndef DEBUG _delay_us(10); #endif PORTC = LCD_PIN1; uint8_t porta = LCD_PIN1; uint8_t portb = LCD_PIN2; LCD_DDR1 = 0xFF; LCD_DDR2 = 0xFF; LCD_PORT1 = 0x00; LCD_PORT2 = 0x00; // output to PORTC (leds)
Abgesehen verstehe ich nicht, wozu das PORTC = LCD_PIN1 gut sein soll. PORTC wird doch gleich wieder umgenietet? Eigentlich kommt mir das alles auch etwas unübersichtlich vor.
-
Thread
Berechnungsfehler?
wirklich schlau, was das werden soll. Aber am Anfang der Schleife ist zb der Teil hier [C] PORTC |= S0|S1|S2; // H | H | H = Y7 _delay_ms(50); if (!(PINB & (1<<D_IN1))) ERR=+1; PORTC = 0x00; //reset MUX _delay_ms(50); [/C] immer gleich. Nur die Zahlenwerte
ändern sich. -> Kandidat füe eine Funktion [C] void Pulse( uint8_t Pins, uint8_t InputMask ) { PORTC |= Pins; _delay_ms(50); if (! (PINB & IputMask) ) ERR = +1; PORTC = 0x00; //reset MUX _delay_ms(50); } [/C] weil ich es gerade sehe: Ist es Absicht, dass du da
-
Thread
Tastenmatrix 3x4 mittels Interrupt abfragen?
ich drücke soll der Int. ausgelöst werden. Ich möchte hier aber nur einen einzigen Int. verwenden. Geht das? [c] #include <avr\io.h> #define NOP(); asm volatile("nop"::); #define KEY_PIN PINB #define KEY_PORT PORTB #define KEY_DDR DDRB // Pin 0..3 = column 1..4
// wait until inputs sampled if( ~KEY_PIN & 1<<4 ) { row = 5; PORTC |= (1<<PC0); //Spalte1 } if( ~KEY_PIN & 1<<5 ) { row = 9; PORTC |= (1<<PC1); //Spalte2 } if( ~KEY_PIN & 1<<6 ) { row = 13; PORTC |= (1<<PC2);
-
Thread
PWM mit AD-Wandler steuern
definier doch den entsprechenden pin von portc mal spaßeshalber explizit als eingang und schau was dann passiert...?
Manchmal macht es auch einfach Sinn den uP mal zu tauschen... GEHT...
-
Thread
Dringend Hilfe gesucht AD-Wandler
Konvertierung warten ADCwert= ADCH; PORTD=0b00010000; // Leuchtmelder an //Interrupt auslösen PORTC=0b00000000; PORTC=0b11111111; do { if(ADCwert>=100) {PORTD=0b00000110;} } while(1); } ISR(PCINT0_vect) { PORTD=0b00001111;//Leuchtmelder aus }
Dus olltest ausserdem mit sei(); den interupt global einschalten, sonst gehts nicht. mein vorredner hat recht, in 2 wochen weisst du selber nicht mehr welche bits du geschaltet hast schreibe besser DDRB |= (1<<PB0) | (1<<PB2) ...usw