-
Thread
Folientastatur permanente ausgabe
("7 "); if ( PIND & (1<<PIND4) ) usart_transmit_string("* "); PORTC &= ~(1 << DDC0); // column 1 low PORTC |= (1 << DDC1); // column 2 high if ( PINC & (1<<PINC3) ) usart_transmit_string("2 "); if ( PINC & (1<<PINC4) ) usart_transmit_string("5 ");
// Pullup an PORTD |= (1 << DDD4); // Pullup an sei(); // Global Interrupts activate PORTC |= ((1 << DDC0) | (1 << DDC1) | (1 << DDC2) | (1 << DDC3)); // all rows high //PORTC &= ~(1 << DDC1); while (1){ PORTC &= ~(1 << DDC0); // row 1 low if ( !(PINC & (1<<PINC4)) ) usart_transmit_string
-
Thread
ADC Messwert springt
unter Sado/Maso. Naja es gibt auch Leute die von Hamburg nach München zu Fuß gehen, nur weil es geht statt zu fahren......
Eingangspin abgenommen wird und die andere Seite wahrscheinlich direkt auf den Input MUX des ADCs geht ( Bild 90 ). Somit erklärt sich ja auch sein Problem, da er ja den kompletten PortC als Ausgang konfiguriert hat und diesen auch noch regelmäßig invertiert, liest er natürlich das PINC0 immer mit
-
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
SD_Karte Directory erstellen
char*)buffer_adc); ffwrite(0x0D); ffwrite(0x0A); ffclose(); PORTC ^=(1<<PC0); } } counter_sd++; _delay_ms(100); start_converting(); } } [/c]
Merkwürdig, jetzt bleibt der Code kurz nach dem Eintritt in die Main stehen, nichts geht mehr. Hier mal der Code: [c] int main(void) { avr_init(); UART_Init(); _delay_ms(50); uart_puts("Boot"); PORTC ^=(1<<PC1); // Versuch Karte zu Initialisieren, bis
-
Thread
PIC16F57 Initialiesierung
seinen letzten Programmcounter ab um nach dem Rücksprung zu wissen wo es im Hauptprogramm weiter geht.
Da fehlte natürlich was... > PORTB EQU H'0006' PORTC EQU H'0007 > loop1 Equ 0x08
-
Thread
14 Segment Text anzeigen!
und dann wieder low wird der code irgendwann endlos lang gibt es eine bessere möglichkeit als: Portc.0 = 1 Portc.1 = 1 Portc.2 = 1 Portc.0 = 0 Portc.1 = 0 Portc.2 = 0 .... .... .... ich arbeite mit mega8 und Bascom!!
> wieder low wird der code irgendwann endlos lang gibt es eine bessere > möglichkeit als: > > Portc.0 = 1 > Portc.1 = 1 > Portc.2 = 1 > Portc.0 = 0 > Portc.1 = 0 > Portc.2 = 0 > .... > .... > .... > > > ich arbeite mit mega8 und Bascom!! lern mal die zeichensetzung
-
Thread
2 PINS an dem PORTC besitzen ein dauerhaftes High Signal
programmieren aber das Problem ist, dass der Mikrocontroller an den PINS PC2(TCK)und PC3(TMS) trotz PORTC=0x00; ein High Signal liefert. Weis zufällig jemand an was dies liegen könnte ???
, darauf > zu reagieren, nicht wahr? Ja, solange es nicht in Beleidigungen ausartet. Momentan geht es noch.
-
Thread
Atmega128 - Wieder mal Probleme mit UART Interrupt
Interrupt-Flag wieder herstellen SREG = sreg; } ISR(USART0_RX_vect) { DDRC = 0xFF; PORTC = 0b11110000; UDR0; } int main (void) { uart_init(); sei(); for(int i = 0; i< 4000; i++) _delay_ms(1); DDRC = 0xFF; PORTC = 0b11110000; while(1); return
Yessss, es geht!!! Mit: MCUCR = (1<<IVCE); MCUCR = ~(1<<IVSEL); Nochmals vielen dank an alle :):)
-
Thread
AVR INT1 löst bei INT0 aus
sei(); // aktiviert Global Interrupts } ISR(INT0_vect) // ISR für INT0 { PORTC = 0b00001010; } ISR(INT1_vect) // ISR für INT1 { PORTC = 0b00000101; } /******************************************************************/ // main /***************************
Da M. schrieb im Beitrag #4770447: > ISR(INT0_vect) // ISR für INT0 > { > PORTC = 0b00001010; > } > > ISR(INT1_vect) // ISR für INT1 > { > PORTC = 0b00000101; > } Hallo, ich bin nicht unbedingt der Meinung, dass die Taster das ursprüngliche Problem sind..
-
Thread
2x 7 Segment Anzeige - Multiplexen mit HF lässt Board ausgehen?
sevenseg_show_mp(int number); void main(void) { DDRD = 0xff; PORTD = 0xff; DDRC = 0xff; PORTC &= ~(1<<PC4); PORTC |= (1<<PC5); while(1) { sevenseg_show_mp(4); PORTC ^= (1<<PC4); PORTC ^= (1<<PC5); sevenseg_show_mp(5); PORTC ^= (1<<PC4); PORTC
Frank Thetank schrieb im Beitrag #1777878: > dann geht nach ca. ein bis drei Sekunden das komplette Board mitsamt ISP > einfach aus. Werd mal konkreter. Geht ein Reset? Welcher Strom fließt? Wird was warm? > Bei k < 500 geht aber alles ganz
-
Thread
UART Ausgabe geht nicht
Hallo zusammen, ich möchte mit einem ATMEGA32 zeichen über die serielle Schnittstelle an den Rechner senden. Habe hierfür ein kleines Tesprogramm geschrieben welches auf Tastendruck von 0 bis 9 zählt und jeweils die Zahl auf einem Display und der Seriellen Schnittstelle ausgibt. Die Anzeige auf dem Display funktioniert einwandfrei, jedoch die Übertragung zum PC nicht. Habe ich da eventuell noch einen Fehler drin? #include <avr/io.h> #include <avr/delay.h> #include <LCD4b.c> #include <serial.c> int main (void) { DDRB = 0b11111111; //Pins 0-7 als Ausgänge DDRC = 0b00000000
-
Thread
Problem mit Projekt eines Empfangsprogramms für Besucher
{ if (i == 2) { tasterFrei = 0; PORTC |= 0x02; _delay_ms(10); PORTB = 0x02; _delay_ms(100); PORTB = 0x00; delayLong(9);//dauer ansage nr.2 PORTC &= ~0x02; tasterFrei = 1; } else { if (i == 3) { tasterFrei = 0; PORTC |= 0x04; _delay_ms(10); PORTB = 0x04; _delay_ms(100); PORTB = 0x00; delayLong(18);//dauer ansage nr.3 PORTC &= ~0x04; delayLong(80); /
-
Thread
PortPin geht nicht auf Low stk525
schreibe anstatt: [c]PIND&=0b11110000; [/c] das hier: [c]PORTC&=0b11110000;[/c]
Bildchen nicht erkennen,aber sieht so aus, als ob die Leitung von Pin12 auf eine Durchkontaktierung geht - die könnte man ausbohren, und später auch wieder verlöten. Ansonsten - Leitung direkt mit einem Cutter oder Dremel durtrennen. Oder auch den Pin vom MAX3232 ablöten und vorsichtig hochbiegen. Wenn
-
Thread
Byte Wert suchen und Folgebyte speichern
// Set DDRC as output PORTC = 0x00; // Set PORTC is low sei(); // Enable Global Interrupt while (1) { TransmitState = spi_check_data();
) // Green LED on PORTC = 0x04; TCNT2 = 0; } }[/c]
-
Thread
ATmega64: Zugriff DDR_ PORT_ in header files
LED programmiert welches einwandfrei funktioniert: [c] int main(void) { DDRC |= (1<<PC0); PORTC |= (1<<PC0); while (1) { _delay_ms(1000); PORTC ^=(1<<PC0); } } [/c] Versuche ich dieses Programm nun aufzuteilen in: [c] #include "IncFile1.h" int main(void) { void init() while (1) { _delay_ms(1000); PORTC ^=(1<<PC0); } } [/c] und [c] #ifndef INCFILE1_H_ #define INCFILE1_H_ #include <avr/io.h> #include <util/delay.h> void init() { DDRC |= (1<<PC0); PORTC |= (1<<PC0); }
-
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
Zwei defines verbinden
Oliver schrieb im Beitrag #2416383: > Es geht aber darum, daß hinter jede Anweisung in C ein Semikolon gehört. > Und > > if(x) > BLA; > else > BLUBB; > > geht eben in die Hose. Ja natürlich, if.... *;* ... else geht nunmal
Nils S. schrieb im Beitrag #2416394: > Oliver schrieb im Beitrag #2416383: >> Es geht aber darum, daß hinter jede Anweisung in C ein Semikolon gehört. >> Und >> >> if(x) >> BLA; >> else >> BLUBB; >> >> geht eben in die Hose. > > Ja natürlich, if.... *;* ... else geht
-
Thread
PIR und R vs. Pullup
und soll gleichzeitig was ausgeben? PORTC hat überhaupt keine Funktion?
Ich vermute, da soll eher so etwas wie "PORTC^=(1<<PC2)" stehen.
-
Thread
Lerne Assembler - brauche eure Hilfe
r17 #define rChannelByte r18 #define rBit1 r19 #define rBit2 r20 #define CHIPSEL_HIGH sbi PORTC, 0 #define CHIPSEL_LOW cbi PORTC, 0 #define DOUT_HIGH sbi PORTC, 1 #define DOUT_LOW cbi PORTC, 1 #define CLOCK_HIGH sbi PORTC, 2 #define CLOCK_LOW cbi PORTC, 2 ;--------------
: Ich initialisiere teile von PORTC als Ausgang. Im Kommentar steht was von SCK usw. Das sind die Leitungen an denen die ADC's hängen. Die sind momentan noch irrelevant.
-
Thread
bascom zeitunabhängig ausgang setzen.
SPS war nur Hinweis auf Vorgehensweise. Definiere vorher mal Motor_on alias Portc.2 Deine Abfrage sieht dann so aus: If Stellenstunde = _hour And Stellenminute = _min And Anaus = 1 Then Set Motor_On rauswerfen ----> If Umdrehungen = 2 Then Reset Portc.2 ---hat
ist? Zitat: If Umdrehungen = 2 Then Umdrehungen = 0 If Umdrehungen = 2 Then Reset Portc.2 End If Warum nicht so: If Umdrehungen =2 then Umdrehungen = 0 reset portc.2 end if
-
Thread
Programm läuft nur mit JTAG Fuse
HIGHJTAGEN" aber abschalte, funktioniert das Programm nicht mehr. Sobald ich JTAG wieder einschalte geht alles wieder (nur die PortC halt nicht). Woran kann das liegen? Atmega1284P / Atmelstudio7 / C
=ein PORTC |= (1<<PC5); //H-Brücke H1=ein PORTC &= ~(1<<PC6); //H-Brücke L2=ein PORTC &= ~(1<<PC7); //H-Brücke H2=ein while (1) {
-
Thread
Fehler LCD-Display im 8Bit-Modus
Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5 Config Lcd = 20 * 2 Cursor Off
Homer schrieb im Beitrag #5269599: > Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = > Portc.1 , > Db7 = Portc.0 ... HJH-MD schrieb im Beitrag #5269283: > im 8-Bit-Modus
-
Thread
UART verursacht Reset(?)
fehlenden drei words abknipsen kann. wenn du fertig bist damit probier nochmal und wenn nicht geht zeige nochmal.
So hab die Schaltung jetzt mit nem 7805er aufgbaut - und Ueberraschung es geht immer noch nicht... :(
-
Thread
Taster - LED Beispiel
/ 7. und 8. PIN vom Port D als Ausgang DDRC &= ~(1<<0); // 1. PIN vom Port C als Eingang PORTC |= (1<<0); // internen Pull-up einschalten a = PINC & ~(1<<0); if(a != 0) // wenn Taster gedrückt { PORTD|=(1<<7); // LED8 geht an } else // wenn Taster nicht
/ 7. und 8. PIN vom Port D als Ausgang DDRC &= ~(1<<0); // 1. PIN vom Port C als Eingang PORTC |= (1<<0); // internen Pull-up einschalten a = PINC & ~(1<<0); while(1) { if(a != 0) // wenn Taster gedrückt { PORTD|=(1<<7); // LED8 geht an PORTD&=
-
Thread
Bascom 2 Pineingänge an 1 Ausgang
bestens, bis auf folgendes Problem ich muß 2 Leitungen (Pinc.5 + Pinc.4) zur selben Zeit an 1 Ausgang (Portc.1) schalten mein Code haut irgentwie nicht hin. Case 8 Portc.1 = Pinc.5 Portc.1 = Pinc.4 Waitms 200 Portc.0 = 0 Locate 1 , 10 Lcd "P9" Kann mir da
Ich kenne mich mit Bascom nicht aus, aber müsste es nicht so heißen: Case 8 Portc.1 = Pinc.5 + Pinc.4 Waitms 200 Portc.0 = 0 Locate 1 , 10 Lcd "P9"
-
Thread
DOGM132-5 mit SPI ansteuern
SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR0)|(1<<CPHA)|(1<<CPOL); } //reset LCD PORTC &= ~0b100000; PORTC &= ~LC_RST; delay_hundredth(50); PORTC |= LC_RST; PORTC |= 0b100000; _delay_us(50); //Select LCD and turn off A0 PORTB &= ~CS_LCD
Hi, also auch bei mir geht das Display nun. Was ich geändert habe: Nicht mehr im Dual-Power mode sondern mit den zusätzlichen Kondensatoren betreiben. Jetzt gehts... (Die Initialisierung muss dann natürlich auch entsprechend
-
Thread
SRAM auslesen zu langsam.
to disable the Write Enable Pin in SRAM (LOW active). _delay_us(0.05); //Time to set Data into PORTC from SRAM. Data = PINC; //Get Data from SRAM, saved in var Data. DDRC = 0xFF; //Set PORTC back to Output. PORTB = 0; //Clear Low Nibble Address. PORTA = 0; //Clear High Nibble Address
alle die etwas produktives geschriebenen haben, vielen dank! Hat mir geholfen. Gruß An den rest geht mein herzliches Beileid!
-
Thread
Bit folge einlesen
keek wrote: > 000101000010110101000110 So kommen die Daten auf PORTC 0 also auf dem > Pin C0 eines atmega16 Das geht nicht! Du kannst nicht einfach so Bits einlesen, der MC kann ja nicht hellsehen. Der MC muß irgendwie gesagt kriegen, wann er ein Bit abholen
der MC Programierung also nochmal: Baudrate 2400Bps es kommen immer 14 Bytes hintereinander auf PORTC 0 also auf dem Pin C0 eines atmega16. Diese 14 Bytes sollen eingelesen und auch gespeichert werden um sie später zuverarbeiten. Wenn es geht bitte ein Quelltext mit erklärung.
-
Thread
atmega8 einzelnen Pin schalten C
ganz easy: BSF PORTC, 1
bingo schrieb: > ganz easy: BSF PORTC, 1 Das muß ein seltsamer C-Compiler sein... bingo schrieb im Beitrag #1914231: > ich vergass zu ergänzen: das geht nur bei den PICs Ach so. Na dann hast du das Thema ja eh schon verfehlt.
-
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
1602 LCD mit ATmega8535 und Bascom läuft nicht
Tim D. schrieb im Beitrag #6989564: > Jetzt geht es > mit beiden Platinen auch mit Bascom Kinderfrage: Und warum?
LCD Display konfigurieren ' Config Lcdbus = 4 ' LCD 4 Bit Modus Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.3 , Rs = Portc.2 Config Lcd = 40x2 ' Display 40 Zeichen 4 Zeilen Cursor off Noblink CLS ' 'I2C konfigurieren ' $lib "i2c_twi.lbx
-
Thread
Temperatur Messung mit Mega8 und NTC-Widerstand 4,7k
= 16000000 Dim Waiting As Word Waiting = 0 Config Lcdpin = Pin , Db4 = Portd.2 , Db5 = Portc.4 , Db6 = Portc.3 , Db7 = Portc.2 , E = Portc.1 , Rs = Portc.0 Config Lcd = 16 * 2 Cursor Off Const Adc_multi = 0.0048828125 ' = 5.0 / 1024.0 CONFIG ADC =
Hallo, dann geht eine einfache Linearisierung wahrscheinlich nicht mehr. In erster Näherung würde ich den Pull-up dann als Wurzel (RMin * RMax) auslegen, und schauen ob ich an den "Rändern" noch die gewünschte Auflösung
-
Thread
Arrays Vergleichen
Input_Clock 1 //PIN C1 als Clock am Input Register ... while (a <16) { while(i<8) { PORTC |= (1<<Input_Clock); _delay_us(10); PORTC &= ~(1<<Input_Clock); //1 Clock, um das Register um eine Stelle zu schieben Data_to_send[a] &= ~(1<<i); Data_to_send[a] |= ((Pin_input)<<i); i+
0; a<16; a++) { Data_to_send[a] = 0; // Annahme: Alles ist 0 for (i=0; i<8; i++) { PORTC |= (1<<Input_Clock); _delay_us(10); PORTC &= ~(1<<Input_Clock); Data_to_send[a] >>= 1; // Platz schaffen für's nächste Bit if (PINC & (1<<PINC0)) Data_to_send[a] |= 0x80
-
Thread
Bascom LCD an I2C AN118
hatte mich verkuckt ! Mit welchen Takt arbeitest Du denn ? Und wie lang ist die Leitung ? LAN-Kabel geht dafür nicht !! Sind auch die Ports definiert ? Config Scl = Portc.5 Config Sda = Portc.4 zum Bleistift mfg Oliver
$crystal = 8000000 $lib "Lcd_i2c.lib" Const Pcf8574_lcd = &H40 'I2C Adresse Config Scl = Portc.0 'I2C SCL Pin Config Sda = Portc.1 'I2C SDA Pin Dim _lcd_e As Byte _lcd_e = 128 'LCD im 4-Bit Mode betreiben Cls 'loesche das LCD Display Locate
-
Thread
Atmega8 bleibt nicht in der Schleife?
ldi r16, 3 out PORTD, r16 // interne Pullup-Wiederstände aktivieren mainloop: cbi PORTC, 0 cbi PORTC, 1 cbi PORTC, 2 sbis PIND,5 // skip if Bit cleared rcall Wasser sbis PIND,4 rcall Eis sbis PIND,3 rcall Crushed //sbic PIND, 2 //rcall Rotate sbis PIND, 1 rjmp Lock
Wait sbis PIND,5 rcall Wait //<----------- Sobalad irgendein Wait drin ist geht nichts mehr... sbic PIND,5 ret wasserloop: // rcall Wait sbis PIND,5 sbi PORTC,0 sbis PIND,5 rjmp wasserloop ldi R19,0 ret
-
Thread
AVR an Handy C35
im Controller mein ich. Hat auch gleich geklappt. Finds halt komisch, dass es in allen Richtungen geht, d.h. vom Controller zum PC, vom PC zum Controller und ja noch vom PC zum Handy. Nur so wie ichs brauch vom Controller zum Handy gehts nicht. Kann es sein, dass ich die Spannung falsch angschlossen
= Buffered , Size = 20 Config Serialout = Buffered , Size = 20 Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , E = Portc.7 , Rs = Portc.6 'da hab ich mein LCD dran Config Lcd = 16 * 2 '16Zeichen 2Spalten Dim Name As String * 32 Name = "atd+49171
-
Thread
AVR-Board, Handy, RS232
'Tasten auf Board ' Initialisierung LC-Display Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.2 , Rs = Portc.0 Config Lcd = 16 * 2 Config Portc = Output Reset Portc.1 Initlcd Cursor On Cls Lcd "Start" Wait 10 On Urxc Rec_isr
hm, der senden draht vom pc geht an empfang am board. Das kabel pc - board ist doch 1-1 oder? Buchse - stecker? mike
-
Thread
xmega timer mit AND verbinden
Clear Bit in I/O Register I/O(A, b) ← 0 1 Clocks Ein Beispiel mit einem ATmega Anfang: cbi PORTC, 6 ;1Takt LOW sbi PORTC, 6 ;1Takt HIGH cbi PORTC, 6 ;1Takt LOW sbi PORTC, 6 ;1Takt HIGH cbi PORTC, 6 ;1Takt LOW sbi PORTC, 6 ;1Takt HIGH cbi PORTC, 6 ;1Takt LOW nop ;1Takt nop
Carsten-Peter C. schrieb im Beitrag #7724890: > Ein Beispiel mit einem ATmega > Anfang: > cbi PORTC, 6 ;1Takt LOW > sbi PORTC, 6 ;1Takt HIGH Atmega musst du schon näher spezifizieren. Die Classic-ATmegas brauchen für cbi und sbi je zwei Takte.
-
Thread
LCD am mega8 will nicht ganz
nachher erstmal das von Chris vorgeschlagene "Prozedere" versuchen. Wobei ich denke das es so nich geht, PortC ist doch der ADC bei meinem mega8!!! @Marko: was für ein "initlcd"? In der Bascom-Hilfe ist davon keine Rede, auch im Code-Beispiel ist kein derartiger Ausdruck.
Das ich PortC als normale Pins verwenden kann wusste ich nicht, aber hab im Datenblatt mir das ganze mal angesehen, jetzt ist auch klar wie/warum es geht... ;-) Werde das alles mal testen, wobei ich mir schon
-
Thread
AVR-Programmer selber bauen
> Bei den Ports musst du nichts ändern. Beim ATmega8: PORTB: 0x18, DDRB: 0x17, PINB: 0x16 PORTC: 0x15, DDRC: 0x14, PINC: 0x13 PORTD: 0x12, DDRD: 0x11, PIND: 0x10 Beim ATmega328P: PORTD: 0x0B, DDRD: 0x0A, PIND: 0x09 PORTC: 0x08, DDRC: 0x07, PINC: 0x06 PORTB: 0x05, DDRB: 0x04, PINB: 0x03
Cool. Jetzt geht es. In der Arduino IDE kann ich zwar USBasp auswählen, aber es bewirkt nichts. Mit AVRDUDE geht es. Ich habe folgendes Kommando benutzt: avrdude -c usbasp -p m328p -e -u -U flash:w:.hex Danke für
-
Thread
Funkprotokoll dekodieren
Datar = 0 Bitzahler = 1 Config Pinb.0 = Input Portb.0 = 1 Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 , E = Portc.1 , Rs = Portc.0 Config Lcd = 16 * 2 Do Cls If Bitcount = 3 Then Datar.bitzahler = 0 'Wenn nur 3 high
erstmal ein sauberes Signal anschauen und danach das Protokoll programmieren. Wenn das dann fertig ist, gehts an Empfänger. Dann kommt der an den atmega zum Wetterdatenempfang ran.
-
Thread
enc 28 j 60 bankwechsel geht nicht
char str[12]; // to force bank update enc.current_bank=0xff; // Reset ENC 28 J 60 PORTC &=~(1<<LAN_RST); _delay_ms(10); // Release PORTC |=(1<<LAN_RST); // Wait for Startup (at least 50 us) _delay_us(60); // To prevent bad requests wait again at least 5 ms _delay_ms
fehler? bei mir steht das nicht zweimal da. Auch danke für die optimierungstipps aber bei mir geht das garnicht, auch wenn ich immer schreibe. Gruß
-
Thread
LCD-Display mit s6a0069 Controllter und Atmega 32
; PORTC=0b00001111; _delay_ms(1000); PORTB=0b00000001; _delay_ms(1000); PORTB=0b00000000; _delay_ms(1000); PORTB=0b00000000; PORTC=0b00000001; _delay_ms(1000); PORTB=0b00000001; _delay_ms(1000
Nochmal :-) _delay_ms(1000); _GEHT_NICHT_ :-) lg, Frank
-
Thread
Zeitschleife mit Variablen
Der für dich interessante Teil beginnt im Abschnitt 3. Um Timer und Interrupts gehts im Abschnitt 5
1 D = 1 Waitms 200 X = 0 Y = 1 Waitms 200 Y = 0 D = 0 Loop End Timer0_isr: Portc.5 = X Portc.4 = Y Portd.0 = A Waitms 2 Portd.0 = 0 Portd.1 = B Waitms 2 Portd.1 = 0 Portd.2 = C Waitms 2 Portd.2 = 0 Portd.3 = D Waitms 2 Portd.3 = 0 Portc.5 = 0 Portc
-
Thread
LCDAnzeige 16*2 mit ATMega 32 ansteuern
mein test programm: regfile = "M32def.dat" $crystal = 3686400 Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.3 , Rs = Portc.2 Config Lcd = 16 * 2 Cursor Off Noblink Locate 1 , 1 Lcd "Hallo" Gruss Mike
schreibt mir nur "FFFFFFFFFFFFFFFF" in beide Zeilen. Jtag ist aus! [Code]Config Lcdpin = Pin , Rs = Portc.0 , E = Portc.1 , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 Config Lcd = 16 * 2 Config Lcdbus = 4 Cursor Off Cls[/Code]
-
Thread
LED als Sensor an Port Pin
ISR(TIMER0_COMPA_vect) { DDRC |= (1<<(PC0)); DDRC |= (1<<(PC1)); // beide Ausgänge PORTC |= (1<<(PC1)); // Phase EMIT PORTC &= ~(1<<(PC0)); asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop"); PORTC |= (1<<(PC0)); // Phase Reverse Bias PORTC &= ~(1<<(PC1
TIMER0_COMPA_vect) { > DDRC |= (1<<(PC0)); > DDRC |= (1<<(PC1)); // beide Ausgänge > > PORTC |= (1<<(PC1)); // Phase EMIT > PORTC &= ~(1<<(PC0)); > > asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop"); > > PORTC |= (1<<(PC0)); // Phase Reverse Bias > PORTC
-
Thread
AVR Soft-PWM mit max. 256 LEDs
,X+ ;2 out PORTC,r14 ;1 sbi PORTA,0 ;2 out PORTA,r15 ;1 ld r14,X+ ;2 out PORTB,r14 ;1 ld r14,X+ ;2 out PORTC
r14,X+ ;2 out PORTB,r14 ;1 ld r14,X+ ;2 out PORTC,r14 ;1 sbi PORTA,2 ;2 out PORTA,r15 ;1 ld r14,X+ ;2 out PORTB,r14 ;1 ld r14,X+ ;2 out PORTC
-
Thread
Drehzahlmesser Digital Simson s51 an Zündanlage (Vape)
Elseif A > 6000 Then Portc = &B00111111 Portd.6 = 0 Portd.7 = 0 Elseif A > 5000 Then Portc = &B00011111 Portd.6 = 0 Portd.7 = 0 Elseif A > 4000 Then Portc = &B00001111 Portd.6 = 0 Portd.7 = 0 Elseif A > 3000 Then Portc = &B00000111 Portd.6 = 0 Portd.7 = 0 Elseif A > 2000 Then Portc = &B00000011 Portd.6 = 0 Portd.7 = 0 Elseif A > 1000 Then Portc = &B00000001 Portd.6 = 0 Portd.7 =
-
Thread
LCD Dotmatrix kaputt
while(1){ } return 0; } void enable(){ //ennableimpuls PORTC |= (1 << 2); /* setzt Bit 2 an PortC auf 1 */ _delay_ms(1); PORTC &= ~(1 << 2); /* loescht Bit 2 an PortC */ //Portumstellung für Datenempfang DDRB = 0x00; // Daten Ports initialisieren
(); while(1){ } return 0; } void enable(){ //ennableimpuls PORTC |= (1 << 2); /* setzt Bit 2 an PortC auf 1 */ _delay_ms(1); PORTC &= ~(1 << 2); /* loescht Bit 2 an PortC */ //Portumstellung für Datenempfang DDRB = 0x00; // Daten Ports initialisieren
-
Thread
Port-Bits zusammenfassen und dezimal ansprechen
Also in C geht das so: temp = PINC; temp &= 0xF8; temp |= Schalterstellung; PORTC = temp;
portc = 2